Dimension Drive (working title)

Mugi

Member
here's Dimension Drive.

you play as Mari, a student derp from a science university, who took an odd job as a lab assistant for a slightly nuts looking professor to earn some extra cash.
Insidentally, she manages to poke the doc's new invention and gets hurled into an alternate reality.
From here on the game starts, and your task is to roam through the world in this alternate dimension, searching for gems to power up the Dimension Drive, and send you back home.

Dimension Drive is heavily affected by my favourite NES title, shatterhand, in it's game mechanics, as such, your only weapon is your fist.
You punch things, and everything you punch will spectacularly explode.

planned ideas include, but are not limited to:

- powerup(s)
- companion (possibly permanent)
- scrolling stages (i will start working on this on the code/mechanic side once 4.1.0 is out for scrolling)
- animated background tiles.
- adventure oriented gameplay, you will backtrack locations and are encouraged to explore the world.

- Shatterhand-style stage selection, with possibility to revisit stages.

Everything palnned is subject to change as i mature the concept in my head.

currently planned stages are:

- intro stage / stage selection
- withered forest (emerald)
- amethyst caverns (amethyst, doh)
- golden temple (ruby)
- icy peak (sapphire)
- hidden laboratory (topaz)

I had already designed a tileset for the forest stages, but since I did that prior to purchasing NESmaker, I was forced to more or less scrap the entire thing as it was non-compilant, and completely beyond saving.
disheartened, I decided to discard the entire tileset, and work on another instead. I ended up on golden temple stage.

here's a mockup room running on mesen, and the corresponding tilesheet.

game_000.png
golden_temple_bckCHR_01.bmp




hope you like it :)
 

dale_coop

Moderator
Staff member
Awesome graphics. Looks promising.
I am not sure you will be able to put everything you planned in your game, but can't wait to see the progress of your WIP <3
 

Mugi

Member
we'll see....
the idea is to spend a moment more than 2 days on this :p
I'm not scared of digging into the assembly either, but that will take some time, im not particularly familiar with this flavor of assembly at the moment.
for now i'm just focusing on the simple things while i wait for 4.1.0, designing levels, and creating required objects (items, player, animations et cetera et cetera.)

since things like playerobjects can be exported, im just doing that for now. currently moving and jumping works, im working on sorting out hitbox issues, and dealing with modifications such as removing dash and adjusting jump values to something suitable for my level designs. I will also have to finish creating all the necessary sprite frames for the protagonist, and then compress the graphic into something that actually fits into the gameobject bank, that alone is a challenge for now :p
 

dale_coop

Moderator
Staff member
Yeah, graphics is a lot of work >_<
(I am not very good at that, and I spend a lot of time on it... for small or disappointing results :p and sounds/musics too)
I will follow your projects, and can't wait to try your first demo ;)
 

Mugi

Member
it will take a while before i have anything actually playable, but if you'd like, here's a rom with 3 rooms im currently using for testing tile layouts and character physics.

i would love to hear what people think about the way the protagonist currently handles (speed, jump height, hitbox)
this rom still has dash in it while holding B, but please ignore that, as it will be removed and B will be assigned to punching.

http://dev9.blacklabel-translations.com/scrn/dd/dimensiondrive_physics_playroom.nes
 

dale_coop

Moderator
Staff member
AWESOME! the animation is wonderful, I love the running and the jumping animations.
The speed is good, the jump speed and hight is perfect. A mega man feeling when running, I like that!
Very impressive so far!
I love your jump... Did you use the standard playerJump and varJumpRelease scripts (that come with NESMaker)?
 

Mugi

Member
thanks, I do like the sprite myself, the animations turned out really fluid after some initial struggling i had with it.

It's using standard jump with Object_v_speed_hi set to $06 and the varJumpRelease is using Wolfmerrik's customized one from: http://nesmakers.com/viewtopic.php?f=28&t=744 which fixes the "floating" and the occasional bunnyhop that happens when holding A on the default one. I did feel that the jump is a little high at the beginning but im overall quite satisfied with it. I had an issue with setting Object_v_speed_hi to $05 that the jump's max height was 1 pixel short of reaching a one-way-platform that was set to the "3rd" vertical row of blocks compared to the ground, resulting in the player getting sporadically stuck inside it. It was actually quite hilarious.

i might adjust the jump slightly more on a later date (finetuning using Object_v_speed_lo) but for now it's really close to what i want it to be so until im further in development, it will do.
 

dale_coop

Moderator
Staff member
Great job! Fine tweaks for the jump, I think you made it right. Ah ah, yeah, I remember the issues of stuck in platforms when jumping (I had those too :p)
Can't wait to see your next levels. And you first enemies.
 

Mugi

Member
i will implement the slime blob next since i need an enemy to test attacking anyway, i'll post some material out of that when done.
 
Yeah, platforms are a pain in the A**, nine out of ten of mine don't even work. :lol:
Also, the handling feels great, I am dying for more action.
Anyway great work, and I can't wait to see where you take this! :)
 

Mugi

Member
and here we go then, as requested :p

basic implementation of 2 blobs, a slow water slime, and a faster, angry poison slime.
only really routine animations (they will be improved!) and not much other things going on at the moment.
they just patrol their platforms in peace.
you will glitch out and die if you touch them (playerdeath or hurt animations are not done.) but you can stomp to kill the slimes if you so wish. nothing happens from doing so, so dont expect a win screen :p
I guess punch comes next. And then i suppose hurt animations, adjustments of knockback and health / hud stuff.

game_003.png


playroom build with blobs: https://dev9.blacklabel-translations.com/scrn/dd/dd_now_with_blobs.nes
 

dale_coop

Moderator
Staff member
Nice! I love blobs!
Currently, if you run into a monster, it will be killed (like when jumping on them) . Because of wrong calculs during collisions when the bounding boxes dont have the same size.
I think it might be fix in the next version (else, someone might fix that and share it on the forum)
 

Mugi

Member
i noticed that too.
that's one of the reasons why i said im not really doing any work at the moment that involves code, because things will change on the next version and i dont really feel like inventing the wheel here.
i did all this just to familiarize myself with the nesmaker a little and poke my head a bit into the code. (i actually started on poking at custom scripts to create ice physics for sliding blocks already.)

but yeah, as far as game mechanics goes, this is pretty much as far as it goes until 4.1.0 is out, and meanwhile i will focus more on graphics and level designs. That can be done pretty comfortably now that i have player movement working the way i want it, so it's pretty good already.

considering the fact that i've never really programmed crap like this before (i've done stuff on mips assembly for psp, but that's a whole different beast) and that i've now owned nesmaker for around 48 hours, i'd say it's a fairly solid start :)

either way, next tilesheet i will attempt to make will be the withered forest, look forward to it.
 

drdocker

New member
really nice start so far! My only suggestion would be to use a slightly darker palette for the background details. Currently it all blends together making it hard to tell where the collisions are.
 

Mugi

Member
Thank you for the suggestion!
I know that the background blend is pretty bad (especially in this level tileset) but I haven't gotten a set of colors to work well enough yet that would allow me to change it without sacrificing a considerable amount of detail from the graphics so far.
I will be reworking the tileset a little though (i just realized that i've been completely ignoring screentiles so far lol) so there is that. with a couple extra tiles i'll be able to add some detail and diversity to the platforms.

assuming i wont change the colors of the tileset here, i did plan on having a little play by shading things with light and shadows to make the platforms stand out more like that. (basically just using the darker wall tiles and/or empty tiles under the platforms to indicate lack of light)

the graphics have only gotten praise here so far, but this is still my first pixel-art project and first one that is confined to palette restrictions that are as strict as these. Im fairly sure that there will be issues here and there :p
 

Mugi

Member
I know i said i'll work on the graphics a little, but I've been stuck finetuning the physics and engine side for now anyway, can't seem to keep my hands out of it :p

what's done is crouch works (it has no function yet but it's coming)

hud is also now done, although it took me quite a while to get jorotroid's awesome sprite hud to do what i wanted it to.

hurt works, i've also made it so that during hurt your inputs are ignored, making you actually stay in the hurt animation instead of walking in the air while you hold direction pad while you get damaged.
i've also started creating the special tiles i need for this game, such as ice physics block (slide), climbing wall (pressing up while colliding with an othervise passive wall tile will make you stick to it)
the function i have planned for crouch is to be used for picking up health supplies, just like in shatterhand, but for this i'll have to create some extra trickery to get the block to animate and change it's state when picked up.

current task at hand is to get melee attack working (im not sure what im doing wrong that i cant get my char to attack properly so far), and get the rest of the sprite animations (wall climb, attack et cetera done.)

here's a tiny clip showing off that hurt mechanic. It's the little things that make it more refined i think :) I never quite understood why the default behavior allows you to just play like nothing happened if you get hit.
this will make the game ignore your inputs if you're hurt during the hurt duration.

https://youtu.be/g2tKMF6maPE

at any rate, a lot of the mechanics will stay undone until 4.1.0 comes out as it demonstrated a lot of features i require (with or without modifications) which dont really seem to be present in 4.0.11 despite the labels being there....
now back to those graphics.
 

dale_coop

Moderator
Staff member
Greats ideas here... thanks for sharing those, nice video!
Agreed with you on the hurt.
I hope you will share some of those scripts/modifications, maybe make some tutorials in the “Code” section.
 

Mugi

Member
it's really simple to do actually (being efficient is another matter)

what i did was simply made a check on my input scripts as follows:

Code:
    LDX player1_object
    GetCurrentActionType player1_object
     
     CMP #$01;;walk
    BEQ+
    CMP #$03;;attack
    BEQ ++
    CMP #$02;; jump
    BEQ +
    CMP #$05 ;; hurt
    BEQ letmehurtleft
     
    ChangeObjectState #$01, #$03
    
 +
    StartMoving player1_object, MOVE_LEFT
 ++
     FaceDirection player1_object, FACE_LEFT
      
      
     letmehurtleft:
    RTS

this assumes that your player "hurt" state is $05
when you press left now, the code checks if your player state is hurt, if it is, it will ignore the input. (i have other checks there that might or might not be used yet, im still working on the moving and physics a lot.)

of course, this kinda stuff is just preliminary code to get a look and feel of how my physics will end up.
propably what will eventually happen is that this sort of checks will be directly implemented in their respective pieces of code, instead of controller polling scripts.
For example, a check to see if player is hurt and ignoring inputs, will propably end up sitting at the handlePlayerHurt.asm... either way, that sort of code cleanup i will do once i have the stuff down, and i'll take all my modifications, and pack them into a module that i will dedicate to this game, so all my future projects will start by using dimension drive as their base, with the engine already all set.
 
Top Bottom