Entry Thread - Waddles the Duck

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Entry Thread - Waddles the Duck
by on (#188406)
Waddles the Duck

Attachment:
main-5.png
main-5.png [ 1.42 KiB | Viewed 9620 times ]


Attachment:
main-6.png
main-6.png [ 2.37 KiB | Viewed 9620 times ]


The story is basically, you are a duck taken out of his own timeline, trying to find his way home. It's a typical sidescroller with a slight twist.

The game draws much inspiration from the game Eversion. (The primary game mechanic is based off of it.) Eversion is pretty cheap on Steam, and there's also a free version. If you haven't played it before, I strongly recommend checking it out! http://zarat.us/tra/eversion-steam/

Controls
Code:
      D-pad: Movement
      Select: When all else fails, press this.
      Start: Starts the game, pauses while in game.
      B: Run
      A: Jump


Grab the game itself on the download page for the event: http://nesdevcompo.nintendoage.com/contest16/

If you're curious about the (terrifying) source code, check it out on github: https://github.com/cppchriscpp/waddles-the-duck

Not quite sure what else to say about it, but there's my entry. Thread was severely delayed due to life and stuff. (to the point someone else made a thread for me! :oops: Sorry about that...)

*Update*: The judging is in, and this game scored pretty poorly. I'm soliciting any and all feedback to help me improve future games. Please post any thoughts you might have had while playing it. (You don't have to be nice)
Re: Entry Thread - Waddles the Duck
by on (#188408)
Just for reference, the "other thread" was here: http://forums.nesdev.com/viewtopic.php?f=32&t=15486
Re: Entry Thread - Waddles the Duck
by on (#188586)
Great game. The intro text went too fast for me to read, though.
Re: Entry Thread - Waddles the Duck
by on (#188592)
Awesome game. The bounding box for the duck collision should be smaller, IMHO, but I quite like the concept.
Re: Entry Thread - Waddles the Duck
by on (#188630)
calima wrote:
Great game. The intro text went too fast for me to read, though.


Yes, this. I couldn't keep up with the intro text.
Re: Entry Thread - Waddles the Duck
by on (#188828)
Thanks for the positive feedback, everyone! This is the first thing I've built in a long time that I was actually somewhat proud of, so it's really nice to hear.


With regards to the title text speed, I can definitely see the issue. I tend to mis-estimate how long people take to read things often - it's hard when you already know what a screen says. I will probably try to patch that up in the near future. It's been common feedback from people who I've shown it to in person too.

As for the bounding box for the duck, yeah, that's something I'm bothered by too - I built some kinda-crummy expectations into the engine about the sprite size early on, and as far as tile collisions go it's really hard to change them now. (Colliding with sprites is more on point at least.) I had thought I could re-design the sprite to make it look natural, but that didn't quite pan out. There are also a few jumps that kind of depend on that size, so if I were to change It I'd have to potentially redesign a few levels. (That's not to say I won't try at some point!)

I've also released the source to the game under the MIT license if anyone wants to play with it. I will warn you the code isn't what most people would call sane, and the tools are probably a PITA to set up right. Please don't base judging the game on it! ;) Link's in the first post.

(PS: I'm sorry for not responding sooner - I'm subscribed to replies but for some reason I didn't get emails for any of those - I just assumed the game wasn't really getting any attention! I'll be checking more often until the end of the judging period)
Re: Entry Thread - Waddles the Duck
by on (#189624)
The judging is in and... well, this game didn't do well. If you've got any feedback - good or bad, I'd love to hear it. I want to make games people enjoy, and I think I missed the mark here.


What I know so far:
- The intro end ending suck. The writing was bad, the text was too fast, and it generally felt rushed.
-- Would it have been better if I had left out these entirely, opting for something simpler?
- Collisions were sometimes wonky
-- How big of an issue was this? It didn't really trip up the people I saw play it - did it just make the game seem less polished?
- Figuring out the warping mechanic wasn't straightforward
-- I've only heard this feedback from one person- was it a problem for more?

At this point I don't plan on improving the game itself much, unless anyone really wants me to. Instead, any feedback I get will help me make a better game next time. Thank you for taking the time, to anyone who does!
Re: Entry Thread - Waddles the Duck
by on (#189634)
I figured out the warping easily, but there seemed to be no logic to it. Warping from the same place could go to icy or heated, apparently according to what was needed next, but it still felt weird that there was no rhyme to what came next.

The bounding box and to a smaller extent the jumping made it feel less polished. In a couple places I had difficulty making a jump, it had to be almost pixel-perfect.

Oh, and the B button seemed unnecessary, since I was holding it pretty much the entire game.
Re: Entry Thread - Waddles the Duck
by on (#189638)
I think the only real problem I had with it is that there's no subsequent "reevaluate your assumptions" puzzles later on, in the style of the brick wall "learn the puzzle mechanic" at the very beginning. (by which I mean, either the first puzzle mechanic should have been better hinted, or there should have been more Real Puzzles later on rather than just platforming)

A lot of the rest I'd say comes down to little polish things:
* I found the "normal/spring" music to get kinda grating after I'd listened to it too much. (On the other hand, I really liked all three other background musics)
* The first dimensional portals were consistently hinted with a pair of tulips, but the subsequent ones weren't ... that's ok, but the change isn't really ever explained.
* It'd be nice if there had been an extra ice block here so that you couldn't jump over it and get trapped on the left:
Attachment:
waddles-place.png
waddles-place.png [ 1.68 KiB | Viewed 9329 times ]
Re: Entry Thread - Waddles the Duck
by on (#189640)
The collision detection is highly flawed. I would hit item bricks from the side most times. Jumping on an enemy's head without being killed was way too difficult. In my own designs, I prefer to make collision boxes large for good things (killing enemies, getting items) and small for bad things (being hurt).

On the one hand, I had to hold B constantly in order to make jumps. But then I'd run so fast enemies would appear from off-screen and kill me before I could react (this also ties into having too large of a hitbox). The game teaches one lesson (hold the B button, always), then punishes it immediately.

Personally, I'm not a fan of triangular jumps. Add some simple acceleration and deceleration into it. Notice how Mario, even when he hits a brick, hangs in the air for a tiny bit. The sponginess in that interaction is key.

This last one is a minor issue, but you're setting palettes outside of vblank, which makes ugly color streaks flash on screen right before the level loads (only some emulators show this, but it's visible on hardware). It's an easy fix, wait for the start of a frame before updating the palettes. Even better, fade the palette in to ease the transition when a level starts, you're already doing that for warps.
Re: Entry Thread - Waddles the Duck
by on (#189646)
Quote:
hond B all the time...

triangular jumps...

Notice how Mario, even when he hits a brick, hangs in the air for a tiny bit.


Yes. Physics could be better. Accelerate and decelerate in every movement, rather than fixed speeds.

More enemies to stomp and avoid. Do more with them.
Re: Entry Thread - Waddles the Duck
by on (#189678)
Thanks for the feedback so far; that's definitely what I was looking for, and helps.

I think there's one really good piece of feedback implied here that no one's stated outright - I really should have gotten this out there sooner. I had the game in a very playable state a month or two before the end of the contest. I could very easily have made a post about it and gotten a lot of this feedback earlier - pretty much everyone on this forum is really open and helpful about stuff like that. Doing that could have really helped shape the game in a positive way.

I did solicit feedback from some friends in the real world, but they gave mostly positive feedback - they don't know the internals of the console like the people on this forum do; they don't know that the movement feels slightly off because I'm not considering acceleration/etc. It's not their passion.


Now, onto the real feedback. I'm not going to quote everything as that'd make this post unbearably long, but I did want to comment on a few things.

Quote:
I figured out the warping easily, but there seemed to be no logic to it. Warping from the same place could go to icy or heated, apparently according to what was needed next, but it still felt weird that there was no rhyme to what came next.


I had actually never thought about having more logic behind this at all. It's bloody obvious now that you've said it - I really don't know why it never occurred to me.

Quote:
I think the only real problem I had with it is that there's no subsequent "reevaluate your assumptions" puzzles later on, in the style of the brick wall "learn the puzzle mechanic" at the very beginning. (by which I mean, either the first puzzle mechanic should have been better hinted, or there should have been more Real Puzzles later on rather than just platforming)


One of the friends I showed this to right after the contest had this feedback too - I think it's really valuable feedback, and one of the worst misses I had. I didn't spend nearly enough time on level design - focusing instead on rather inconsequential pieces of the engine.

Quote:
* It'd be nice if there had been an extra ice block here so that you couldn't jump over it and get trapped on the left:


Ugh, crap... I was really hoping no one would find that. It's a limitation of the engine - I can't actually put blocks in that row. In retrospect what I should have done was moved the entire structure down a tile, and put an extra block on top. Too late now, I suppose.

Quote:
The collision detection is highly flawed. I would hit item bricks from the side most times. Jumping on an enemy's head without being killed was way too difficult. In my own designs, I prefer to make collision boxes large for good things (killing enemies, getting items) and small for bad things (being hurt).


The item bricks bug I knew about but couldn't find a good solution for in time. You should have seen the bugs that didn't make it into the final release... this is the first platformer I've written for the NES, or anything really, and it really shows. The enemy stuff is definitely valid.

At any rate, I had never considered that sizing idea before - it makes a lot of sense and I may very well adopt it in the future. Thanks for the tip.

Quote:
This last one is a minor issue, but you're setting palettes outside of vblank, which makes ugly color streaks flash on screen right before the level loads (only some emulators show this, but it's visible on hardware). It's an easy fix, wait for the start of a frame before updating the palettes. Even better, fade the palette in to ease the transition when a level starts, you're already doing that for warps.


Good eye! I thought I had caught all instances of that; I didn't realize it was causing problems until pretty close to the end of the competition.


To address the recurring feedback, lesson learned on the movement/physics. I thought it would feel natural enough without proper acceleration/deceleration in movement, and I was definitely wrong about that. I just got used to it because I spent so long staring at the stupid thing.



Last thing, to anyone who felt this game was a complete waste of their time, I apologize. Based on the detailed scores, I can tell I got a bunch of 1s - that tells me a lot. I can't give you that time back, but I'll try to make sure if I enter again, it's something worth playing. It was eye opening to see this game scored second-to-last in polish/completeness - far behind a game that could not be beaten. That really clued me in I did something (well, many somethings) really, really wrong. Perhaps I mean I thought about the entire contest wrong. (Note: I actually really liked Wo xiang niào niào, but not being able to finish the game at all seemed unfortunate. This soumds more negative about that game than I want it to, but I'm struggling with words here, sorry.) So, I'm sincerely sorry for wasting your time.

Thanks again for the feedback.
Re: Entry Thread - Waddles the Duck
by on (#189711)
cppchriscpp wrote:
Last thing, to anyone who felt this game was a complete waste of their time, I apologize. Based on the detailed scores, I can tell I got a bunch of 1s - that tells me a lot. I can't give you that time back, but I'll try to make sure if I enter again, it's something worth playing. It was eye opening to see this game scored second-to-last in polish/completeness - far behind a game that could not be beaten. That really clued me in I did something (well, many somethings) really, really wrong. Perhaps I mean I thought about the entire contest wrong. (Note: I actually really liked Wo xiang niào niào, but not being able to finish the game at all seemed unfortunate. This soumds more negative about that game than I want it to, but I'm struggling with words here, sorry.) So, I'm sincerely sorry for wasting your time.


You do not have to be sorry to put your hands at work! I do not think anybody estimate that their time was wasted by any entry, judging imply to spend some time with games we do personally not like.

Ok I am biased because I liked Waddles the Duck. The floaty physics when you jump, while feeling weird, is justifiable for a duck, differs from other games and (with other imperfections) remembers me than I am not alone to learn my way through the competition ;)
Re: Entry Thread - Waddles the Duck
by on (#189718)
cppchriscpp wrote:
Last thing, to anyone who felt this game was a complete waste of their time, I apologize. Based on the detailed scores, I can tell I got a bunch of 1s - that tells me a lot. I can't give you that time back, but I'll try to make sure if I enter again, it's something worth playing. It was eye opening to see this game scored second-to-last in polish/completeness - far behind a game that could not be beaten. That really clued me in I did something (well, many somethings) really, really wrong. Perhaps I mean I thought about the entire contest wrong. (Note: I actually really liked Wo xiang niào niào, but not being able to finish the game at all seemed unfortunate. This soumds more negative about that game than I want it to, but I'm struggling with words here, sorry.) So, I'm sincerely sorry for wasting your time.

Thanks again for the feedback.


I think you're being more negative than is necessary. Part of a competition is weighing games against each other, and there were some really great games this year. But all of us developers know that making games is hard work, and I appreciate anybody's effort to do so. I didn't love Waddles the Duck for various reasons, so I didn't rate it highly, (sorry!) but I don't think anybody's time was wasted. I appreciate that you put the effort into creating a game and letting us play it! So I say well done, even though it didn't score well compared to the others.
Re: Entry Thread - Waddles the Duck
by on (#189720)
RogerBidon wrote:
The floaty physics when you jump, while feeling weird, is justifiable for a duck, differs from other games
And it could be justified with changes to the sprite, showing the duck flapping...
Re: Entry Thread - Waddles the Duck
by on (#189724)
I played your game the most out of all entries,definitely didn't wast my time.
Re: Entry Thread - Waddles the Duck
by on (#189745)
Alright, so... I can see re-reading that how it'd come off as pretty negative; too little sleep makes coherent writing hard. So, apologies if it read that way. I'm not looking for a pity party. (And re-reading, it kinda looks that way.) The additional feedback is always appreciated.

I like the idea of a flapping animation. My graphical skills are pretty clearly lacking, so I'm not sure how well I could've pulled that off, but hey- I'm better than when I started, so maybe next time.

For my own reference, someone pointed out the jumping sound was grating... something I knew/agreed with but never really took the time to fix.


One thing I do want to call out - I am not bothered by where I placed compared to other games at all. I was beaten out by a number of games that were, without question, better than mine. And that's awesome; I got to play some fun games. I guess why I'm being so hard on the game/myself is the raw scores, and the implications of some of the feedback. I didn't meet my goals with this game, and it took me until the end of judging to realize that, which makes it a little more painful.

-- Rambling post starts here. Skip to the bottom for your sanity --

If I look at the judging details, I scored really low across the board. Ignoring how it compares to others, I'd treat 2.5/5 or 5/10 as average. (At least, this is how I chose to judge.) Using that bar to understand my scores, it tells me there are some severe problems with the entry - to the point I should have picked up on them sooner. If I then look at the scores for graphics and music, I got an average of 1.5 (roughly) - that tells me my graphics and my music were severely below what people might expect from a game in this competition. I kind of knew this was the case so I wasn't shocked. But where it starts to hurt is polish/completeness - I scored a 3/10 - which tells me the game felt pretty bad to play, and wasn't nearly as fun as the average game on the NES. I'm trying to avoid making comparisons to other games, but this tied in score with a game that didn't have sound or music at all despite being a complete game. This tells me there's really something wrong with it. Moving onto originality, I got a 3.67/15 - that tells me people found the game completely unoriginal - it's another generic sidescroller. (Something I tried really hard to avoid it becoming)



The other thing is the more direct feedback I've gotten. It's super valuable, and I'm really thankful for it, but it really tells me again, that I've made some mistakes. Here's a few samples:

Quote:
The warping mechanic was fun and intuitive, but the rest of the game was torture.

(From the main competition thread)

Quote:
The collision detection is highly flawed.


Quote:
The game teaches one lesson (hold the B button, always), then punishes it immediately.


There's also a bit of a condescending tone in some of the responses, telling me "you should already know this, why do I have to explain it to you?"

All of this feedback is valid, and I don't disagree with it. It's helped me see real flaws in the game that I was blind to, and real things to focus on more next time. That's extremely welcome, and I'm thankful for it. That said, it's pretty hard to not write about it in a negative way having seen all of this.

I did not meet my personal goals with this game, and I do kind of have to view it as a disappointment after the effort I put in.

Sorry for the long post - I think that was mostly for myself more than anyone else.

-- End Ramble --
Re: Entry Thread - Waddles the Duck
by on (#189767)
Let me try to be a bit more constructive about my "torture" comment. A better word probably would have been "unforgiving".

Frustration is the natural enemy of fun. Having to guess stuff is frustrating. You don't have to guess, because you wrote the game, but the players don't know anything unless they can see it. There's a bunch of stuff in this game that's non-obvious until after you've lost a life or two.

1) Jump height.

Waddles doesn't jump very high compared to the enemies or obstacles. That naturally means there's not much room for error. Your enemies are pretty short, so I can see you're prepared for this, but one downside of your strange jump arc is that it rises relatively slowly. I've died a few times from hitting an enemy on the way up. A parabolic arc would alleviate this by getting you out of harm's way faster while still giving you the same height and air time. Or you could lift Waddles' hitbox up to his body and make any contact with his feet count as stomping, so you can hit enemies more easily. Maybe redraw the sprite to show Waddles kicking his feet out. Giving the player a visual cue is very important.

2) Ascension control.

Waddles starts going down the instant you let go of the button or reach the top of your jump. That's very different to how most games do it, so not many players are going to be expecting it. In particular, since Waddles' jump height varies, it's unpredictable. You should telegraph that the jump is ending somehow. A parabolic arc does this automatically and intuitively. You could also make Waddles start flapping extra hard or just give him a few frames of hang time to let the player know what's coming next.

3) Running.

Waddles' jump height depends on how fast he's moving horizontally. That makes absolutely no sense whatsoever... until you remember he's a bird. Even so, I spent several minutes unable to get out of the start area because I hadn't figured that out. I was walking slowly because I was cautious of running into more of those hard-to-dodge enemies, and because the obstacles were close together. Lose the enemies and give the player a big long runway, at least a screen wide. If you can, redraw Waddles' running sprite to show him lowering his head for takeoff. Maybe make him ascend slightly faster. Turn one of the most frustrating features in the game into one of the most awesome.

4) Hitboxes.

Waddles stops with his beak three pixels away from the wall. That makes it much harder to judge if a jump is safe. I seem to remember you saying something about the hitbox sizes being hardcoded; please excuse my poor memory. If so, you really need to do something about that. If/when you do, here's a tip: use a different hitbox for different kinds of movement. If you use the seperate axis method of movement, this is the natural way to do it.

The reason I suggest doing this is because it's very flexible. For example, you can make horizontal collisions only check the character's body, but make vertical collisions include the character's feet. That way when your jump is just short, you will move a pixel into the wall, then get pushed up instead of sideways, popping you onto the platform. It's sort of a poor man's version of ledge-grabbing. There are lots of other tricks you can use.

When it comes to enemies and hazards, remember that the hitbox should always be smaller than the graphics. Conversely, items should always be larger than their graphics. Tilt things in favour of the player's expectations to avoid unwanted surprises. Remember you don't always have to change the hitbox - you can also change the graphics.

5) Water.

It took me until today to figure out that Waddles can swim. I feel stupid. :P You've put some gems over the water, but I don't think that's enough. Put in a whole screenful of water, or maybe even start in it, to make sure the player knows it's safe.

But then in level 2 the water isn't safe. You should distinguish this somehow; remove the water, turn it green, or even just make it safe too, since the player can't progress from water level anyway. Consistency is important.


Sorry if that was just a rehash of stuff other people have been saying. I haven't been able to keep up with all the progress threads.
Re: Entry Thread - Waddles the Duck
by on (#189825)
I'm trying not to reply every time there's a new post, but well... that has some really useful stuff so I'm gonna. (And please, don't feel bad for the torture comment. I wasn't trying to call you out; that's a fair way to say what you were trying to say. I just didn't realize how big the rift was between what I thought of the game, what my non-retro-gaming friends thought of the game, and what people here thought. It was a shock, albeit certainly one I needed.) Don't worry about duplicate content; that's my job to weed through, not yours! And a lot of that is unique actually.

Not gonna quote it all but the comments about using graphics more effectively are really good. That's something I tried to keep in mind, but my artistic skills are just weak right now. Redrawing waddles is downright daunting to me - it took days (well, hours after work for multiple days) to get that where it is now. (And I know, that's kinda sad) I'm improving for sure; that will probably be a better solution next time. Definitely good to keep in mind.


The detail you went into on the jump height and hitboxes helped a lot. You got into the *why* with examples, and that made both of those click for me. A few folks had mentioned both in some detail, and they made sense as something to experiment with - I think I would have figured it out with some time. You took out the part where I have to experiment for myself to understand it. Thank you a ton for that!

The level 2 thing was meant to be a safeguard against falling once you figure out the ice puzzle -- but it is absolutely confusing. I actually removed it in a build a day or two after submission. (When I thought getting this to a polished state was realistic.) I do wish I had enough time to alter the physics in water - I originally planned it, but like many other things I had to scrap it due to time. There actually is a full screen of water in one of the later levels (with the shark fin things - took a very long time to make it playable!) - perhaps I should still consider having one earlier on.


Anyway, thanks for taking the time to write that all out. It definitely helped.

(And also thanks to the folks with positive comments before - meant to say that in my mega-post above and forgot. Sorry! :oops:)
Re: Entry Thread - Waddles the Duck
by on (#191812)
New build up (v 1.1)

It isn't much; the major flaws (movement, collisions) are still there, but I tried to touch up a few things:

- Make warp areas more obvious - new sfx play when in the warp area
- Bunch of level tweaks
-- Make the later levels a little more interesting/less linear (Warning: I didn't do much)
-- Teach you that water is safe sooner
-- Fix a few spots that sucked due to poor collisions (Lava that instantly killed you, fire way to close to where you'd normally jump, etc)
-- Remove "trick" water in the first ice level
- Lengthen intro (the music sounds awful... I know. I can't seem to come up with anything better though)
- Jump sound effect made less annoying (maybe)

Don't think I'll be doing anything else past this point, but I'll of course update here if I do.

Attachment:
File comment: Waddles the Duck 1.1
nesdev-compo-2016.nes [64.02 KiB]
Downloaded 277 times
Re: Entry Thread - Waddles the Duck
by on (#191813)
I like the intro music.
Did you mean to not outline the inside of the "d" in the logo, or is that accidental?

I find the jumping to be really difficult. Just the first jump (to get the first coins) took me multiple tries

EDIT: My difficulty was with a new keyboard. Apparently it has a poor rollover rate. I had to remap some keys to allow running and jumping simultaneously.
Re: Entry Thread - Waddles the Duck
by on (#191820)
Heh, I've fallen into that keyboard trap before. Glad you were able to sort it out.

For the logo, I used the font I picked and didn't really do any customization. (Font is Alagard - here: http://pix3m.deviantart.com/art/Bitmap- ... -381110713) I honestly never thought about it until you asked.

Looking forward to seeing what you do with the art for the cart, btw!
Re: Entry Thread - Waddles the Duck
by on (#192838)
I don't know if this is because of the level tweaks in v1.1 or not but I found myself unable to achieve a true ending the game implies there to be.

I somehow got 17/15 gems in level 3, and for whatever reason I ended up with a total of 581/154 gems after the first game cycle. I think the level 8 portal didn't activate because of that strange gem total.
Re: Entry Thread - Waddles the Duck
by on (#192839)
----- Skip all this; I found the problem. See update below -----

Hmm... that's really strange. I don't *think* it's the level tweaks themselves. The world 8 portal problem definitely makes sense. I unfortunately used an equals check instead of a greater than check, so if you get too many gems it won't work. Might go back and patch that.. at any rate it sounds like either 1) RAM somehow got corrupted in the $400 range or 2) The value at $4ff was exactly $db when the rom was started, and thus that page wasn't cleared.

Can you give me any more information on what happened leading up to your noticing the weirdness?

Hoping you can tell me a few things:
- What emulator were you using? (Or were you on powerpak?)
- Were you using the rom on its own, or the one built into the multicart?
- Which rom were you using? The one I uploaded here, or the one on my site? (Shouldn't really matter, but...)

I admittedly haven't played Waddles through to 100% on the multicart, so if it does anything funky with RAM that could maybe explain it. I'll try to get around to doing that in the next couple days.

If anyone else has seen the same thing, please let me know!

-----

Update: Never mind, I can reproduce this pretty easily on the A53 cart. starting waddles and playing partway through, then resetting and reopening the game from the A53 menu without switching games will trigger it. Does that sound accurate to what you ran into?

I might be able to work around that by finding some space in RAM that A53 doesn't touch. That's a little risky though.

Failing that I could also just remove the feature to restore your gem count on reset for the multicart. That's seems more unfortunate, but I think I can make it workable. I might add a 3rd item to the menu that lets you return to the title, so you can get gems in a few levels w/o replaying everything.
Re: Entry Thread - Waddles the Duck
by on (#192842)
Yes I was testing the latest multicart build on powerpak. I probably did reset from Waddles before playing it proper.

From the sources the menu currently does not touch $04fb~$07ff. So moving to page 5 would work.

cppchriscpp wrote:
I might add a 3rd item to the menu that lets you return to the title, so you can get gems in a few levels w/o replaying everything.

That's a good idea, as that's about the only reason for this game why you would want a warm reset.

Still I think it's kind of a cool idea that you can continue from pressing the reset button. Moving the save data to another page, the magic byte to the first byte of that page, and adding a simple checksum (even literally a modular sum of all it's bytes) over the whole page will solve the issue.
Re: Entry Thread - Waddles the Duck
by on (#192856)
cppchriscpp wrote:
Failing that I could also just remove the feature to restore your gem count on reset for the multicart. That's seems more unfortunate, but I think I can make it workable. I might add a 3rd item to the menu that lets you return to the title, so you can get gems in a few levels w/o replaying everything.

That and if you add an "exit" item to the title screen, I can turn off exit patching for this game, as I did for STREEMERZ in volume 1. But don't expect it to work in FCEUX because FCEUX resets the mapper on reset, unlike existing hardware.
Re: Entry Thread - Waddles the Duck
by on (#193313)
I started work on this tonight but ran out of steam. Will get back at it at some point in the next few days.

A few changes:
- New "Exit" menu item in game - takes you back to the title screen.
- Memory reshuffled to put collectible data and the magic byte into $500, making it less likely the A53 menu code corrupts our data.
- UNTESTED: A53 menu text & feature. If you hold select and press start while on the main menu, you'll (theoretically) go back to A53

I've attached a rom of this version if anyone wants to play with it. The non-action53 version is on my site, too. To note, I have not tested this with the a53 menu software yet. It may not work! I used the exit patch code documented in the A53 tools, but you never know for sure until you've tested ;)
Relevant change in github

My next step is going to be grabbing the latest a53 menu and tossing my updated rom in, and seeing whether the feature works.


After that, I might try to make the interface a little less wonky. I can't decide how annoying select+start is vs having a selectable menu item.

It shouldn't be *that* hard to do a proper menu item, I just need to make sure I update the initial state to be a real menu with a "Play Game" and "Exit to Action53" option, then also add this same option to the level select screen. I'm struggling to figure out how to make this look natural - particularly once level select is enabled. At any rate, one step at a time.
Re: Entry Thread - Waddles the Duck
by on (#193378)
I attempted to test the A53 menu exit function by hex editing the new binary into the latest build, but predictably that failed catastrophically. I should really get the menu software to compile correctly on my computer.

Anyway I believe the other 2 changes is sufficient. I don't particularly like the idea of truing off exit patching in favor of a in-game menu, it breaks the expectation that NES Reset works like a instant Home button, and that held true for everything but STREEMERZ.

For some reason I never got the level select screen in my play through of this build.
Re: Entry Thread - Waddles the Duck
by on (#193389)
If the reset vector has changed, replacing the binary will fail unless you also replace the reset vector in the directory. The builder automatically picks up on this.

If the location or size of the unused area (the part that's zero-filled) has changed, replacing the binary might fail because other games' screenshots, CHR ROM data, etc. might be placed in the unused area. The author of the config file has to find the new build's unused area and update the config file.

If you have trouble getting Action 53 to build, post your support request as a reply to the multicart engine's topic.
Re: Entry Thread - Waddles the Duck
by on (#193400)
Ok, I got a small multi-cart with the a53 menu compiling, and I can confirm that start+select returns to the multicart menu.

I still suggest that the magic $db byte be the first byte instead of the last mainly because assemblers and compilers allocate starting from the first byte. That way there will be a greater chance of wiping the whole save when other things partially write into that page.
Re: Entry Thread - Waddles the Duck
by on (#193472)
I confirmed that the Action 53 version returns to the menu.

But I found something confusing.

  1. If I take a running leap from here,
  2. I end up on top of this structure.
  3. If I press Select here, nothing happens.
  4. And my way is blocked.
Re: Entry Thread - Waddles the Duck
by on (#193501)
JRoatch wrote:
Ok, I got a small multi-cart with the a53 menu compiling, and I can confirm that start+select returns to the multicart menu.

I still suggest that the magic $db byte be the first byte instead of the last mainly because assemblers and compilers allocate starting from the first byte. That way there will be a greater chance of wiping the whole save when other things partially write into that page.


Cool, thanks for checking that before I got the chance! Will still get around to that in a few days. (Hoping I can do it before Ludum Dare; I'll be checked out that whole weekend)

I just updated the first byte now - that's a good idea I just hadn't gotten to yet. I'm debating whether I want to put the effort into the checksum. It's a good idea, and I wish I'd had that when I first build all the collectible stuff. I'm a little concerned with how many places I might have to update to not break how it works now, so I've been holding off.

tepples wrote:
I confirmed that the Action 53 version returns to the menu.

But I found something confusing.

  1. If I take a running leap from here,
  2. I end up on top of this structure.
  3. If I press Select here, nothing happens.
  4. And my way is blocked.


Thanks for testing that, and reporting that bug. Looks like a level design bug - I've just put in a fix to make the ice castle thing a little bigger so you can't get on top of it. (I'd like the engine to be smart enough to not let me do that... but I never was able to come up with a good way to do it.) The castle actually looks a bit better that way anyway.

JRoatch wrote:
For some reason I never got the level select screen in my play through of this build.


That's kind of concerning - it shows up once you've beaten all levels, or at least it should. I haven't done a full play-through after the last few builds (naughty me!) and need to get around to that - it's possible I broke it. I'll be sure to check that.

-----

Aside from that, JRoatch brought up a good point - is what I'm doing with the reset button something sane to do? I don't really want to do it if it's something that bothers people -- especially if I've gotten around the big problem by adding the exit to menu item in levels, and moving to memory addresses that aren't used. I like the idea personally, but I understand the concern.

Does anyone else have an opinion?
Re: Entry Thread - Waddles the Duck
by on (#194164)
I played this through again today and still didn't get the level select screen, so I looked at your code in github and found the problem. The GAME_BEATEN_BYTE variable also needs to be moved into new save location of page 5, Because the endings calls reset to return to the title screen, and reset clears all non save memory.
Re: Entry Thread - Waddles the Duck
by on (#194166)
Heh, I think you're right on the money with that one. I completely forgot about that one while moving things. I'll take care of that once I get out of my post-ludum-dare funk.
Re: Entry Thread - Waddles the Duck
by on (#194465)
Little later than I would've liked, but I finally got around to fixing that bug, and also adding a proper exit menu item instead of the two-button shortcut.

I did validate that it fixes the menu not appearing bug, but I still probably need to give this some good testing at some point soon.

Rom attached! (And the one on my site's also updated, albeit w/o action53 stuff)
Re: Entry Thread - Waddles the Duck
by on (#195196)
One more super minor tweak - allow the a button to be used on the menu instead of just start.

This is likely the final version for the multicart. I ran through it on the latest multicart (on powerpak, yay) and poked it a bit; everything seems stable. The only thing I might do is take the time to get rid of that pesky graphical glitch at level start. I can't stop seeing it now, but I'm having a seriously hard time finding what I'm doing outside vblank/forced blank.

(Note: if that improving existing entries contest ever happens, I may tweak Waddles more for that. As it stands though, I need a long break from that codebase)


Hoping we can turn off exit patching for this game in the multicart, though after moving the gem data around it's far less necessary.
Re: Entry Thread - Waddles the Duck
by on (#195944)
calima wrote:
Great game. The intro text went too fast for me to read, though.

It was exactly as fast as I could read it…which means it's too fast.

(I guess I downloaded 1.0. I played on PowerPak.)
[hr]
A fun Eversion clone QUACK QUACK QUACK. A little cartoony. 24x16 and 24x8 sprites are very unlike most NES offerings!

The difficulty curve is well-put together, in my opinion, f on the easy side. This does mean the game only has an hour or two of play to get out of it, though.

I'm really glad there was a level select for after I got the bad ending.

There's no guard against shifting onto a ghost enemy in the final warp-level, and if you do, you just die without seeing what killed you, making me think a few times that enemy corpses gained "touch=kill" at that level, which they don't.

There's another place you can get trapped, by jumping to the right over some ice (somewhere in the mid-levels? ) but that one allows you to kill yourself, so I wasn't stuck. Tepples caught this.

Stacking the tree graphics is ugly; they're not drawn to be over nonground. Have you got spare CHR? There are even points where it wasn't necessary as the trees are under a solid wall…

In level 2?3? (Add a "which level are you on" indicator to the HUD! It's so bare! "Waddling through level 5") the last diamond pair over a lava pit I don't think you can get the right one without death. But, since death is relatively light, it's fine.

The 2.5 block standing jump is …I don't think I have succeeded on anything except "stomp snake or turtle" with it. Adding half a block to it and the walking jump might help a lot.

There's a place where lava tiles are level with the ground surrounding it, and as a result, Waddles gets burned at a different location than "this is the last pixel I could jump from" when it's not lava.

The music's nice enough.

It's a bit more straightforward and less spooky than Eversion; there's no point where there's a forced transition and no point where taking a warp is the wrong move (though it might miss you one or two gems half a screen further).

Mid-level checkpoints might be nice; Eversion had those. It would mean you'd want to add "restart from beginning" as well as the "restart from checkpoint" as separate options in the pause menu, though.
Re: Entry Thread - Waddles the Duck
by on (#196033)
Thank you for that very thorough feedback. You're correct, you played the version I entered into the contest - some of that was dealt with soon after. The entry into the contest was... pretty bad; it scored poorly and for good reason. I'd like to think the fixes made it more playable, but aren't substantial enough to try again. I'm treating this entry as a learning experience. Onto the feedback...

Quote:
It was exactly as fast as I could read it…which means it's too fast.


By far the most common piece of feedback I got. I halved it in the post-compo version and that helped. (Though now the music sounds worse, and I didn't compose a replacement, but... at least the story's readable)

Quote:
There's no guard against shifting onto a ghost enemy in the final warp-level, and if you do, you just die without seeing what killed you, making me think a few times that enemy corpses gained "touch=kill" at that level, which they don't.


Yeah, I probably made those guys a little too fast. That combined with the blinking didn't go well. I never figured out a great solution to this one; it's in the final build. I do want to make them hard, but of course not unfair.

Quote:
There's another place you can get trapped, by jumping to the right over some ice (somewhere in the mid-levels? ) but that one allows you to kill yourself, so I wasn't stuck. Tepples caught this.

[and]


There's a place where lava tiles are level with the ground surrounding it, and as a result, Waddles gets burned at a different location than "this is the last pixel I could jump from" when it's not lava.


Yeah, I had a lot of that type of issue in the original entry. I think I've gotten most of the level bugs taken care of by now. They were pretty bad though - a number of people I showed the entry to fell into that lava one. I fixed those pretty quick, at least.

Quote:
Stacking the tree graphics is ugly; they're not drawn to be over nonground. Have you got spare CHR? There are even points where it wasn't necessary as the trees are under a solid wall…


You're actually the first to mention this - I had that thought myself and struggled with it a bit. The problem is, it isn't 1 tile; it's 5 (one per dimension)... and each of those are comprised of 4 chr tiles -- so each switchable tile ends up taking up 20 chr/256. I had a full row of switchables, and I didn't have room for much more.

I am using chr ram, so there were some options there, but I also was running very low on prg space in the rom. I compressed graphics where I could, but realistically I couldn't find a way to fit more tiles and the logic to show them into the space I had. Given more time I'm sure I could've gotten there.

Also, the trees under a solid wall were generally put there to block the way until you switched dimensions. They had function going for them, but certainly not form...

Quote:
The 2.5 block standing jump is …I don't think I have succeeded on anything except "stomp snake or turtle" with it. Adding half a block to it and the walking jump might help a lot.


This is another piece of feedback I got a lot (alongside not having any acceleration in the character's movement) and sadly one I never fixed. The hangup here is that changing that would change how far Waddles can jump - which would require redesigning a lot of levels. I'm mainly thinking of the few fake-out jumps, but this would also likely create new places to get stuck.
I just didn't have the time post-contest to redo all of the levels... even though I wanted to. Plus, I just got tired of working in that codebase constantly after 6 months. I dropped most other personal projects too, which was a poor choice.

Quote:
It's a bit more straightforward and less spooky than Eversion; there's no point where there's a forced transition and no point where taking a warp is the wrong move (though it might miss you one or two gems half a screen further).


That.. sucks. I didn't realize this until after the contest but it's really true. The first few levels had small almost-puzzles, but I never really grew those out - later levels focused entirely on platforming. This also really points to needing to redesign all of the levels.

Quote:
Mid-level checkpoints might be nice; Eversion had those. It would mean you'd want to add "restart from beginning" as well as the "restart from checkpoint" as separate options in the pause menu, though.


Funnily enough I never seriously considered this. It was a fleeting thought at one point, but no more.


-----

All of that feedback is welcome - if nothing else I'll use it to do a better job next time. I don't know if I've actually mentioned it but this was my first full-scale game using assembly. I had a completely separate action/rpg/wishes-it-was-zelda engine going, but I hardly have all the kinks out of that. So... getting anything at all out there was a challenge. I don't think I prioritized the right things, and I'm generally kind of unhappy with the results - but I did get it to a playable state.


I understand a lot of what people suggested is simple, and in retrospect it should have been. The problem is I was still a complete noob when I wrote a lot of this code (let's be honest, I still am! :D) and as a result the code is pretty hard to navigate. I also used resources very poorly, so in order to make changes now I have to find prg space often. This leads to doing weird bank switches and jumps to fit it in - completely going against the logic I had to separate things originally. Rewriting the whole thing would be great but there was very little time for that.

I might pick this back up for another contest where we revisit past entries - I'd actually like to do that. But for now, I really need a break from this codebase. My NES development isn't stopping though - I've still got plenty to learn and play with! (see: nesnet and Missing Lands)

Thanks again for the feedback!
Re: Entry Thread - Waddles the Duck
by on (#196049)
Quote:
it scored poorly and for good reason.
It's a complete game! It's fun! It's the first one I played through to completion of the compo!
Quote:
Also, the trees under a solid wall were generally put there to block the way until you switched dimensions. They had function going for them, but certainly not form...
The point was, for such a tree-block under a wall, you only need to make the trees-portion one-tall, rather than some of the 3- or 4-tall which looks ugly, and cover the rest with solid brick.

A taller/narrower flame might look better than the squat one. It, too, looks a bit…unmatched when in tall blocks like the ice ones it replaces are.

Well, perhaps you should consider going to a fine-bankable-CHR mapper if you revisit; then you could probably get away with not fading out on a warp.


Quote:
Yeah, I probably made those guys a little too fast. That combined with the blinking didn't go well. I never figured out a great solution to this one; it's in the final build. I do want to make them hard, but of course not unfair.
They're fine as-is, they're supposed to be the Highest Difficulty enemy. The problem is that in the "auto-switching" level, the ghost trapped in the switchback…
Code:
######
#
#  ##############
# *<- here
####################
is a place where I'd often find the autowarp triggered, and the parity of the autowarp lining up with the parity of the flicker meant he didn't show for the one frame he needed to kill me, and the flickering stops when you're in death-animation, so he doesn't show up, and it's a Mysterious Death. That's Bad. (Can't recall if I got t-fragged by the one after that once I got faster, but he surprised me a little at least once.)

Likewise, lavaballs can show up already in mid-air, though I don't recall any telefragging me. I never got telefragged by a shark, either, but I'm sure there's a spot it can happen on that last level. Some placeholder sprite on other levels would alleviate this: a jumping fish for the lavaballs, a swimming one for the shark…not sure what would fit for the ghost; it'd only be useful on level 9.
Re: Entry Thread - Waddles the Duck
by on (#196129)
Ooh, that's some great feedback; thanks for helping me understand.

For the tree under a wall - you're right, there are some places I could have gotten away with that. There are a few walls I blocked with trees later on where you had to jump into them where that wouldn't have worked, however I definitely could have improved the look a bit in most places. Thanks!

For the switchback dude, I get you now - yeah, that guy could probably just be removed at this point. There's enough of them elsewhere. Good feedback.

Lastly, lava balls -> fish; that's a good idea; I hadn't considered that. I'm not sure what that might mean for ice though. Maybe for ice I wouldn't show them at all (The fish is trapped under the ice, sorry!) - I think that would still help.

I think the deadline for the cart has kind of passed, so I'm not going to really rush to do any of this, but thanks for some really good feedback.
Re: Entry Thread - Waddles the Duck
by on (#197858)
Played through it again; was able to get the gem I wasn't sure of easily without dying now that I know he's really three full tiles wide.

Level 4 has, at the beginning, the one instance of "taking the first warp denies you gems". So it's not 100% true what I said, only 95%.