Thanks for the review, FrankenGraphics.
FrankenGraphics wrote:This seems to be a nice game to be passing over the controller with a friend between game overs to see which can get the higher score.
Maybe I should have implemented a two player game then after all. But I originally decided against it because I always think that those two player modes where you simply wait for the other player to lose a life are a bit boring.
And implementing an actual two player simultaneous mode would probably have lagged. (The adventure game uses heavy optimization with inline Assembly, so I'm able to have about 10 characters on screen without lags, but I wasn't that experinced during the development of "City Trouble" yet to spend a huge amount on low level optimization.)
FrankenGraphics wrote:If i'd change just one thing to my personal preference, i'd let enemies de-spawn on the right edge of screen
This might have looked a bit strange. Since the screen is always scrolling right, I cannot just cancel a character when he walks out of screen to the right. It would look like he just teleported away.
Alternately, I could have saved his offscreen position and let him walk along the invisible part ahead of the screen, but in this case, you wouldn't have had a new character on screen while the off-screen character walks along the invisible part. Because the game is limited to two enemies at once plus the Choppy.
FrankenGraphics wrote:Or if that in itself looks to quirky (though i think it'd be in line with that -85 game design style), maybe just safeguard against spawning enemies when the roof edge is too close the right screen edge.
I checked again and I actually did something like that:
Code: Select all
/* Since we can only check the current screen
and up to one column tile,
regular opponents only appear if the scrolling
is aligned to one full column.
Otherwise, it could happen that the dudes
stand in the air.
As it is now, he is designed in a way
that at least one pixel of his foot
is always on the platform.
Also, opponents don't appear if there is a gap
for the last three tile columns.
Lastly, opponents only appear
when the counter is zero or when none
of the regular opponents is on screen anymore. */
if (ScrollingOffset == 0
&& OnScreenLevelData[OnScreenLevelDataLastIndex] != 0
&& OnScreenLevelData[OnScreenLevelDataLastIndex - 2] != 0
&& (NextOpponentCounter == 0
|| (!Chrs.IsActive[IndexOpponent1] && !Chrs.IsActive[IndexOpponent2])))
Maybe I could have changed the number 2 in OnScreenLevelData[OnScreenLevelDataLastIndex - 2]
to some bigger value.
FrankenGraphics wrote:I'd maybe also shorten the freeze time when getting hit to about half the length, not sure really. I see it primarily as a way to text the player that they are getting hurt, and think the punishment is a bit too severe when getting hit close to the left edge.
Yeah, o.k., if you're too far on the left, getting hit can be fatal.
Even though I'm not going to change the game anymore since it's final and finished, it's still always good to hear what people like and dislike about the game. Maybe some of this knowledge might help me for a future game.
FrankenGraphics wrote:A more general observation: intentionally mismatching the movement speed between enemies (the dudes in this case) and the protagonist could help against the rare but death-assuring problem of being hurt and then not being able to shake the dude off since you're walking at the same pace and you can't switch direction because of the left edge kill.
Interesting observation. I never encountered this, but yeah, I know what you mean.
Well, as a "workaround": Amy will not die until more than half of her body is out of screen. And the Goons will never let any part of their body go out of screen unless they want to disappear completely.
So, you might be able to use the taser while you keep pressing right, so the Goon runs into the taser. Then he's not a danger anymore and you can walk forward to widen the gap between Amy and the screen border again.
Of course, if you're already half outside the screen, you're pretty much screwed.
FrankenGraphics wrote:Graphics design wise, one thing stood out as a little bit confusing - it was unclear to me that the "J" object wasn't an obtainable but an enemy.
Yeah, letters usually stand for items, that's right. I might have used the outline of a jackal head instead, now that I think about it.
FrankenGraphics wrote:It's definitely nintendo hard to me, which can be fun in itself. When the protagonists' buddy shows up offering a a glass of sparkling water, the encouragement is felt partly because of the difficulty. There's a sense of strong but temporary relief, and that's great.
I had no problems with making a hard game because it's a highscore game.
Although there is a definite story end if you defeat Jones in level 4, but the game loops infinitely. Loop 2 is faster opponents and only three energy points. And from loop 3 on, it's the same as loop 2, only with merely one energy point.
Later, I thought that maybe loop 2 should have been just the faster enemies and then loop 3 and 4 should have been three energy points and one energy point respectively.
In any case, if you think the game is hard, wait until you get to loop 2. It's brutal. Once you played through the story (i.e. loop 1) and are just out for the highscore anymore, the game tries to destroy you. I never ever beat the first level of the second loop legitimately.
If I had created a normal-sized platformer, like "Mega Man" or "Castlevania" where the primary aim isn't the highscore, but to finish it, I would have toned down the difficulty.
By the way, depending on your energy, you get other items instead of a glass of water.
Also, jumping is key in the game. Remember that your horizontal movement is in no way hindered during a jump. When you press left or right, you will always move the same horizontal distance, no matter if you're walking or jumping. With a bit experience it's possible to dance around and jump in and out of narrow gaps between opponents this way.