Dimension Shift

dale_coop

Moderator
Staff member
Wow cool! Congrats, Mugi... you almost done your demo after all. Can’t wait to play to all the competition games!
 

Mugi

Member
Custom Engine work:

- tiles -
Ice tiles - [not started]
Wall Grab - [complete]
Water tiles - [not started]
Low-gravity - [complete]
Boss Platforms - [complete]
conveyor belts - [not started]
Health Platforms - [complete]
Stage selection warp "save points" - [complete/not implemented]


- main engine -
Palette fades - [complete]
Stage selection framework - [complete]
underwater physics - [complete]
boss fight framework - [complete]
bi-directional scrolling - [complete]
chrRAM Bankswitching (animated tiles) - [complete]
Animated sprite weapons of multiple sizes and a weapon switching system - [complete] (im not sure if im going to use this or not, depends on the power ups I come up with)
Graphics expansions - [complete from currently needed parts]
full in-game map of the game world - [under consideration]


graphics:

story / cutscenes - ???

intro stage - [complete]
cavern stage - [in-progress]
temple stage - [complete]
??? stage - [not started]
??? stage - [not started]
??? stage - [not started]
final stage - [not started]

Audio:
Title screen - [complete]
Stage Select - [complete]
Intro Stage - [complete]
Stage A - [complete]
Stage B - [complete]
Stage C - [not assigned]
Stage D - [not assigned]
Stage E - [not assigned]
Final Stage - [not assigned]
Credits - [not assigned]
Boss Fights - [not assigned]

SFX:
in progress


Hey All.

With the competition deadline now past us, it's time for me to move my ramblings back into this thread.
Above is the summary of how things are going in general, but I wanted to take a moment to write up a little bit about Dimension Shift and the direction this game is going, what will happen next and
what there is to expect from this game.

I'll start off by repeating myself once again, I'm not really happy with the presentation we gave out for Byte-off. While it is a functional demo, it is really far out there from what this game will be when it's ready.
If it piqued your interest regardless, buckle on, and read ahead, you're in for a ride.


I stated in my old WIP thread that this game was just a pile of things that really has no direction and I merely started putting it together in order to get used to NESmaker, and assembly programming in general
but that has since started to change, and the game is getting more and more clear goals of what it's gonna be. First of all, DS does now have a storyline / sequence of events that does unfold a little bit about whats going on
but none of it has been created in-game yet. I'll reveal more about that later, but for those expecting a pulitzer-grade storyline, I'll have you know that akin to it's source of inspiration; Shatterhand, the story will be
shortly expressed and not quite as immersive as, say, zelda has or whatever. This is a platformer game afterall.


DS as a game will have a gameplay / world mechanics that are a mixed back of metroid, shatterhand and maybe a little flavor of megaman in it, i'd like to think the idea behind how the game world and gameplay works (or will work)
is quite interesting.

To elaborate that a little, we all know that DS has a stage selection screen that allows entering one of 5 stages in any given order the player wishes to,
but the catch here will be that instead of having 5 separate stages in the game, the entire game world consists of one interconnected set of stages/areas and the stage selection screen will simply act as a gateway to quickly access
different parts of the world and using the stage selection screen (after initially entering a stage) will be entirely optional.
A system has already been programmed and will be set in place once I create more stages and more of the world, that allows the player to define the locations the stage selection screen will take you, by "saving" the warp location
within any given stage by activating a warp crystal. This mechanic I have to admit I mostly designed for speedrunners in mind, as it gives a major case of variety in how the game can be completed. It also adds a little bit of an
adventure into the whole platforming mix, as you are free to wander anywhere into the world in whatever order you wish to.
At it's core, the basic idea of DS is the typical platformer, as in you search for the bosses and defeat them in order to progress to the final stage.



A little bit about the features / planned features of this game in addition to what has already been displayed:

first of all, what the hell is a boss fight framework ?
---------------------------
this is an interesting little piece of code we crafted in order to overcome some of the limitations nesmaker throws at you in regards of creating more complicated boss fights.
I've seen some games displayed here in the forum really kicked in gear creating varying bosses with multiple behavior patterns and attacks and im pretty sure atleast some of you ran into the whole frustration of
running out of object actionstates and/or AI scripts.

What I designed for DS is a new assembly called bosscheck.asm which is a trigger togleable piece of code that when triggered, runs once per frame just like predraw does, and othervise sleeps away not wasting cpu cycles.
In my demo what it does is that it takes over the control of the enemy objects during the boss fight, and instead of spending countless actionstates over multiple objects to create a complicated bossfight,
my code now writes the bosses HP into a variable (object itself is set to 255 HP) and instead of triggering changes in boss behaviors via AI actions and action end commands, the bossfight script modifies the monster on the fly based on it's HP
and all 8 action states are reserved for creating more interesting things for the object itself to do.

i didnt use this too extensively yet since my king blob boss is a relatively rushed attempt to create something for the competition rom, but even so, the boss fight in that demo consists of 6 separate enemies that each have their
own set of moves and the boss script controls the flow of the fight based on the master HP value given to the entire boss (combined 6 forms of it.)
I will take more extensive use of this in the future to present more interesting challenges for the player.

animated sprite weapons ?
---------------------------
this is a code framework, which' basis I originally wrote for the composer of DS' soundtrack, Digit2600 (which he greatly improved upon!)
I wasn't really planning to even use it, but eventually as DS formed into a more solid idea, i found a few uses for it.
this is a toggle system that allows switching the way sprite weapons draw, how large they are, how much damage they do, and how they animate based on whatever conditions you desire.
I'm currently not using it, but because object weapons lag in this engine so much, I decided to avoid using them and code my weaponry through sprite weapons instead.


Full in-game map of the game world?
---------------------------
sounds crazy ehh? That's what I said when my partner in crime, FIX94 brough up the idea, but he remains adamant that it can be created.
This feature is under consideration and there's no quarantees that it will ever be implemented at this point.



as for the rest, such as custom tile types like ice, or conveyor belts, they havent really been looked into yet, mostly because the stages that require them have not been done yet.
Water tiles im currently working on as they will be used in the cavern stage that im currently creating a tileset for.
they'll be a pretty standard thing, slows you down, makes you jump less high. cool detail but nothing rally extraordinary.



Still reading?
Thank you! i didnt expect people to be this interested about DS. I appreciate it ^^;

(also, renamed the thread to Dimension Shift now)
 

dale_coop

Moderator
Staff member
Oh cool, that IS a great plan! I'll follow all that, it's very interesting and instructive. Awesome job, guys!
(I like the boss fight you implemented for DS! Now, I have a better idea of how it works)
 

Mugi

Member
so i wanted water on my cavern, so water i shall have

(wip tilesheet)
game_107.png


but water is boring if it doesnt act like water.....
so :p

https://www.youtube.com/watch?v=4cYfjIs5-UA
still need to toy with getting it do do something for the player's speed but it looks fancy
 

Lother

Member
These tile textures are amazing! Awesome use of the palettes and tiling system!

How did you make these animated tiles ?
 

Mugi

Member
they are using bankswitching to cycle an array of tilesets (i load the same tileset into all 4 rambanks and the animated tiles have their graphics changed in subsequent banks) in reality, the entire bckchr is animated, but not all the tiles change appearance.

that said i did make a test where the entire wall of the temple was animated, and it looked terrible lol.
The reason i havent made that code public yet is because im secretly hoping that joe would just implement it into nesmaker already. He has a code he used for trollburner and the early versions of nesmaker even had buttons in the UI to make animated tiles, but that was removed on current versions.

our code is completely out of nesmaker and requires a pile of things to be written for it for every tileset that is animated, and in addition to that, there's no proper management for the chr files for this, so currently im wasting a ton of resources animating my stages. It's extremely not userfriendly to deal with.


Thanks for the compliment though. Im trying my best to make this game look pretty.

here's a little test with the water physics implemented on the cavern stage test room :)

https://www.youtube.com/watch?v=-Qg9kd7Z9lQ
 

Lother

Member
I would really like to have your skill when it comes to scripting. Sadly I'm more of a graphical artist/animator rather than a programmer. Well, that doesn't stop me from working on my game.
 

dale_coop

Moderator
Staff member
Great cave stage! I love the water effect.
You right, it would be very great if Joe would implement animated tiles settings in NESMaker... to make it easy for not advanced users.
 

Mugi

Member
dale_coop said:
Great cave stage! I love the water effect.
You right, it would be very great if Joe would implement animated tiles settings in NESMaker... to make it easy for not advanced users.

Im sure that he will. The question is more like "when?"
It would be much better for everyone since our way of dealing with it is completely outside of the tool, so it's not really comfortable to use.

on that one, DS is currently getting some new stage areas as I'm working more of the cavern tilesets and layout of the cavern area itself.
aside that, the pause feature is now finalized (added color emphasis as suggested by kasumi, and made it so that the monsters and objects actually freeze instead of just stop moving when the game is paused.)

sans that, I finally fixed a REALLY REALLY old issue with the attack, where the sprite weapon draws instantly when B is pressed, but since the attack animation has 2 frames, it had a single frame that looked like there's just a
floating fist in the air. I got so used to it over time that I just completely forgot the whole thing, but that's now been fixed and the weapon only starts drawing from the second frame of animation on attack.
a really minor thing but man, does it make everything look cleaner or what ? lol.
 

dale_coop

Moderator
Staff member
Oh really? You fixed the fist animation? This IS cool! (and adding the PAUSE too)
LOVE your game <3
(btw, the boss in the demo is f****** tough to beat!)

For the animated tiles.... Joe plans to make it for the 5.0 (means maybe for the summer):
We are using a lot of the input that we've been getting from users over the course of the competition to judge how to proceed with development of NESmaker 5.0. Obviously, there are still components that need adding...the music component, better special screen control, some default save data mode, some default animated tile system (though cool to see a few games have figured out solutions for this already!!!!).
(source: https://www.kickstarter.com/project...ke-nes-games-no-coding-required/posts/2441101)
 

Mugi

Member
yeah i saw this, and that's what why im sitting on it at the moment.
I could put out the method used on DS, but that would just mess games up for the future of nesmaker. the bankswitching code of DS does take a nice chunk of code space, and once the feature is implemented into NESmaker
your game would have 2 sets of bankswitching code in it, which isnt really a good idea i dont think. (also, the way it's made on this game takes some modifications since it completely reworks the way handlescreenloads works and adds new assemblies to the mix. I'd have to write out clean copies for implementing them for other games too... which would be a mess.)

and yeah, it's so nice to have the punch animation fixed now.
(the boss gets easier once you beat him a few times ^^;)

edit: here's a tiny clip of how the pause and the punch looks like now. (still need to add a sound to the pause though.)
makes the game look a fair bit more polished :)

https://youtu.be/VLGvLgyN9BE
 

Lother

Member
I see that you've created a monster spawner, you have surely created a special script that you've associated to an AI action step.
 

Mugi

Member
yeah, the monster spawner is an AI script that checks what stage of the game is currently active, and spawns a different monster based on that.
it's a fairly simple script to create.

Code:
    TXA
    STA tempx
                        ; are we in a stage or a boss fight ?
    LDA BossFightEngaged
    BEQ spawnStageMonster
    JMP spawnBossAddOn    
                        ; we're on a stage (monster limit per screen is 4)
spawnStageMonster:          
    CountObjects #%00001000, #$00
    LDA monsterCounter
    CMP #$04
    BCS +
    JMP doMonsterSpawn
+     
    JMP monsterLimitReached

doMonsterSpawn:    
                        ; which stage are we on ?
    LDA currentStage
    CMP #$02            ; we're in Stage C (temple)
    BEQ spawnTempleMonsters
; add rest of the stage checks here.
    JMP monsterLimitReached
    
spawnTempleMonsters:    
    LDA Object_x_hi,x
    STA temp
    LDA Object_y_hi,x
    STA temp1
    CreateObject temp, temp1, #$11, #$00, currentNametable
    JMP monsterLimitReached

                        ; we're on a Boss Fight (monster limit per screen is 3)
spawnBossAddOn:    
    CountObjects #%00001000, #$00
    LDA monsterCounter
    CMP #$03
    BCS +
    JMP doAddOnSpawn
+     
    JMP monsterLimitReached
    
doAddOnSpawn:    
                        ; which stage are we on ?
    LDA currentStage
    CMP #$02            ; we're in Stage C Boss (King Blob)
    BEQ spawnTempleBossAddOn
; add rest of the stage checks here.
    JMP monsterLimitReached
    
spawnTempleBossAddOn:    
    LDA Object_x_hi,x
    STA temp
    LDA Object_y_hi,x
    STA temp1
    CreateObject temp, temp1, #$10, #$00, currentNametable
    JMP monsterLimitReached


monsterLimitReached: 
    LDX tempx
 

Lother

Member
Very nice indeed. d-(o.<)

I guess the pause was fairly simple to implement, am I right?

(... Adding a pause fonction in my game would be a good idea. I have some ideas for enemies, bosses and game mechanics I want to implement, but that will require help.)
 

Mugi

Member
the pause is just poking a couple bits of gamehandler to stop things in their tracks, then just draws sprites to the screen to write "pause"
i wrote a guide on how to do that on the community tutorials yesterday.
 

Mugi

Member
Someone (chronicleroflegends maybe?) was asking me earlier about screen to screen transitions with fades and i said i didn't implement them since the idea was to have scrolling instead of transitions.
I did reserve an use for them though, they're for stage changes. =)

I do have to correct myself though, about the easiness of this, because slapping a fade into a screen transition that reloads everything and mom and trying to make it play nice took a bit more optimizing than we though.
the loading routines had to be reordered a little (palettes were dragging late) and we even discovered a nice bug where doing 2 transitions fast enough caused garbage to load in sprite bank. But that works now.

https://youtu.be/yEztpDTN388
 

dale_coop

Moderator
Staff member
Yeah fading transitions is what I wanted of my cutscenes...title screens... for the demo, I followed your suggestions and use object actions (end of actions).
But would really love to have a real/solid fading transition system.
 
Top Bottom