Flight of a Dragon

Use this forum to share and discuss Uzebox games and demos.
Post Reply
User avatar
Jubatian
Posts: 1355
Joined: Thu Oct 01, 2015 9:44 pm
Location: Hungary
Contact:

Flight of a Dragon

Post by Jubatian » Mon Dec 19, 2016 2:19 pm

So let's start an "official" topic for Flight of a Dragon.
screenshot.png
Flight of a Dragon screenshot
screenshot.png (7.53 KiB) Viewed 4021 times
The game is complete, it can be accessed (.hex and .uze binaries included) on its GitHub repository. The demo version is also there under the demo tag, so you can check out how it looked like when it was released for UCC-2016. You may try out the game online here: Full game, UCC-2016 demo. The game's wiki entry is here.

You may also look in the old concept-art topic for a bit of fun, how I imagined it to look like (what I thought being possible) before I even started programming the actual game.
Last edited by Jubatian on Sat Nov 25, 2017 5:46 pm, edited 4 times in total.

User avatar
D3thAdd3r
Posts: 2422
Joined: Wed Apr 29, 2009 10:00 am
Location: Minneapolis, United States

Re: Flight of a Dragon

Post by D3thAdd3r » Mon Dec 19, 2016 5:50 pm

Ah, an excellent and original game to start off your game saga. By now I have said in several places that this one is special. And this, your first Uzebox game...from prior forums discussions I estimated correctly that this would end up impressive.

I did get the impression that you had a creative/artistic side atop the technical part from prior talks and also jubatian.com. That comes out as obvious in this game, especially for some reason the story which frames the entire mood of the game environment. So I don't know how to really express it well, but the "feel" is just right. Please make more levels for it! I won't repeat myself too much, but I sure hope you make more game of this quality.

Anyway stroking of ego isn't really helpful to improve things, but I have played it(and can now consistently beat the level...with bad score) and as far as the overall style, I can't think of anything to suggest as improvement.

Angled floors and multi-directional shooting is impressive in an 8 bit platformer. One thing I could say was that occasionally it seems nearly impossible to avoid being hit 1 or more times. I love the idea that "perfect without error" is at least possible, so it is hard to accept such a thing. Maybe I need to get better at reading ahead of the situation(likely). It would be nice to have some other mechanic for defeating enemies. Even if some close range instant bite kill or charged fireball kill, since the player would avoid overusing it as killing drops score (a novel and surprisingly moral mechanic!). Maybe pikemen as enemies. Perhaps that is all a terrible idea, just throwing it out there.

The other maybe is not too firm of a suggestion either, as it is hard to imagine if it would radically change the feel. The dragon is large and heavy compared to the small human shooters, but graceful as a creature scaled up to those sizes can be. This is very much the opposite of say Mario, and perhaps it is just that which took some getting used to for me. Strangely enough this is similar to why I think I suck at Platz;hey I am not necessarily saying the problem isn't me :lol:

The momentum makes the dragon more about continuing in a line that changing directions. Minimizing that in the extreme form of course would make the dragon seem weightless which would be awkward. I think this relates in with the small enemy size (and mouse not really an option for precise shooting as in the game "Abuse") and potentially bad players as myself sometimes resorting to "plowing" and taking a few hits, as opposed to attempting a technical approach..which goes wrong and ends up with the dragon as a pin cushion! I could only beat the level after I gave up on doing so without being hit. Then again, if it is easier to not get hit, it nullifies the "health rationing" that emerges from knowing when to wait and when to run through. That seems the strongest tactic right now, which admittedly does play well with "don't kill unnecessarily" motif.

So that is the only suggestion I can think of, though I don't think it needs changing to be classified as a great game. Mostly just my personal preferences and also digging deep to find releveant suggestions. Excellent stuff, this is the type of thing that makes Uzebox an exciting platform.

User avatar
Jubatian
Posts: 1355
Joined: Thu Oct 01, 2015 9:44 pm
Location: Hungary
Contact:

Re: Flight of a Dragon

Post by Jubatian » Mon Dec 19, 2016 8:19 pm

Huh, thanks for the elaborate feedback!

More enemy types are of course one of the priority to-do elements, possibly even the first level will have some more. The archer was just one with the most complicated logic (they actually have to aim for a start) so a good enemy for a proof-of-concept. A pikemen comparatively is a very simple unit, but I also plan to add things like war machines, I have several ideas, will need to see how they play out code size and animation size-wise (that 60K is nasty). The pikemen is not a bad idea at all, it is a necessity ;) (as a close-range enemy which can do you a more substantial damage if you fail to avoid it, needing different strategy to cope with than archers).

You won't be able to get a flawless run. The dragon is a though guy, he can withstand a couple of hits, wouldn't care of a few arrows poking out of his hide. You don't need to perform a flawless run to get the maximal score, for that you would have to reach the goal faster (the current mechanics gives you 2 points for each second survived, however every remaining second will earn you three points upon completion, possibly I will even increase this difference in the final) preferably unscratched. If you can collect more health-improvements on the map than your max. health, then you won't miss score for losing some during your progress (the most striking example in the demo level is freeing the prisoners: if you don't want to kill, you will be hurt there, but there is a meat on the end of that corridor to compensate for the lost health).

So yes, the mechanics by this is quite different to ordinary platformers where you usually have a fixed number of lives, and often it is possible to do "perfect" runs (since they are usually designed so). You have to minimize your losses while aiming for maximizing your score by collecting items and doing stuff while being as fast as possible at it, and actually plowing through archers is about the most efficient strategy against this enemy as they mostly fail their shots then, especially if you are lucky to hit some with a fireball. Jumping also often gets you across unscratched, but that costs energy which is harder to replenish than your fire reserve, often that minuscule damage what a single arrow means doesn't worth more effort than trying to avoid it with a well aimed fireball.

If you stop, they may surround you, and soon you are under heavy fire, which I felt rather realistic (just consider the situation, even their in-game point of view, that they would want to grind you down). Keep moving!

I considered adding mauling, but in the end I didn't feel it useful enough for the gameplay to make it worth the extra animation frames taking away lots of ROM. I settled with that the dragon's anatomy might even make it less practical, so this deficiency may pass (he has a long neck, so he wouldn't be very efficient using his claws, he could bite, but why if he also has fire, may not even have too powerful jaws as he doesn't need to rely on that). Another thing on my mind about this were that the controls are already a bit complex, I wouldn't want to add one more capability unless it was essential (walking by the way sometimes is useful to position yourself precisely - hint!). I will re-consider it, though, later, as a context-specific action (like for destroying a war machine or a door), but for now it feels like it wouldn't really worth it.

My maximal score by the way is 1480 points, that's a fast run collecting everything with zero kills, but certainly not flawless (so the default score written in the EEPROM is passable).

Which game do you mean by Platz? B.C. Dash?

User avatar
uze6666
Site Admin
Posts: 4449
Joined: Tue Aug 12, 2008 9:13 pm
Location: Montreal, Canada
Contact:

Re: Flight of a Dragon

Post by uze6666 » Sat Feb 04, 2017 7:17 am

Was replaying the demo tonight. Every time I play it I seem to discover something new! By accident I found I could light a wall torch with my fire breath! :D

I though of a cool little design thing that could enhance and add a bit of drama punch to the intro. Instead of the plain text intro, why not use that tiny dark cell scene (when you actually lose) and have the text above? Some little friend could then come in and open your cell to free you. Then the whole level map would "reveal" itself around that cell showing your start point in the level. Eh, what can I say, I love animated intros ever since I played Karateka in the old days. :)

Btw, saw your mode74 doc on Github, two thumb up! Very detailed, love it!

User avatar
Artcfox
Posts: 945
Joined: Thu Jun 04, 2015 5:35 pm
Contact:

Re: Flight of a Dragon

Post by Artcfox » Sat Feb 04, 2017 11:13 am

uze6666 wrote:Was replaying the demo tonight. Every time I play it I seem to discover something new! By accident I found I could light a wall torch with my fire breath! :D
I too discovered this one by accident, along with the freeing of the prisoners.
uze6666 wrote:I though of a cool little design thing that could enhance and add a bit of drama punch to the intro. Instead of the plain text intro, why not use that tiny dark cell scene (when you actually lose) and have the text above? Some little friend could then come in and open your cell to free you. Then the whole level map would "reveal" itself around that cell showing your start point in the level. Eh, what can I say, I love animated intros ever since I played Karateka in the old days. :)
That would be awesome, great idea!

User avatar
Jubatian
Posts: 1355
Joined: Thu Oct 01, 2015 9:44 pm
Location: Hungary
Contact:

Re: Flight of a Dragon

Post by Jubatian » Mon Feb 06, 2017 4:45 pm

Huh, thanks!

I plan to rather throw some ROM space into an appropriate epilogue (I even have one vaguely planned), I feel it a greater necessity to have, to have something nice when you complete the game. I just feel disappointed when I play through some game, and I get nothing but maybe a "the end" screen. This will be quite difficult to finish the way I want due to the battle with the ROM versus the amount of gameplay I want to squeeze in it (I wish to have at least 8 or 10 levels, and that by my estimations will eat away the remaining space, I very much planned it through all the way: there is no such thing like "premature optimization" here. It is a design requirement to get it fit...).

What I also had in my mind was a map, similar to Golden Axe's, displaying your progress between levels. I originally planned this using up a bunch of 1bpp tiles which otherwise I thought would be left empty, but later I discovered a way to locate some in-game data on those scattered bytes as well (so I will likely rather use this space for that to get myself room for more in-game content).

User avatar
Artcfox
Posts: 945
Joined: Thu Jun 04, 2015 5:35 pm
Contact:

Re: Flight of a Dragon

Post by Artcfox » Mon Feb 06, 2017 6:04 pm

Jubatian wrote:Huh, thanks!

I plan to rather throw some ROM space into an appropriate epilogue (I even have one vaguely planned), I feel it a greater necessity to have, to have something nice when you complete the game. I just feel disappointed when I play through some game, and I get nothing but maybe a "the end" screen. This will be quite difficult to finish the way I want due to the battle with the ROM versus the amount of gameplay I want to squeeze in it (I wish to have at least 8 or 10 levels, and that by my estimations will eat away the remaining space, I very much planned it through all the way: there is no such thing like "premature optimization" here. It is a design requirement to get it fit...).

What I also had in my mind was a map, similar to Golden Axe's, displaying your progress between levels. I originally planned this using up a bunch of 1bpp tiles which otherwise I thought would be left empty, but later I discovered a way to locate some in-game data on those scattered bytes as well (so I will likely rather use this space for that to get myself room for more in-game content).
How much of the level data would you be able to offload onto the SD card?

User avatar
Jubatian
Posts: 1355
Joined: Thu Oct 01, 2015 9:44 pm
Location: Hungary
Contact:

Re: Flight of a Dragon

Post by Jubatian » Mon Feb 06, 2017 9:43 pm

Artcfox wrote:How much of the level data would you be able to offload onto the SD card?
Honestly about 0 bytes. Unless you can get a fully working SD layer completed with only 2 bytes of RAM (currently there is only so much free RAM unless I removed RAM tiles, the kernel is already trimmed down to only contain what is necessary, I really use every byte for something, you would see it in very action intensive regions in CUzeBox where all RAM tiles might be used momentarily). Then to get the outermost layer of the level compression scheme into RAM you would have to get 256 bytes of additional RAM for level data, and another ~256 bytes for the definition of a reasonable number of actors (enemies, items and stuff). So without throwing away gameplay features (or reducing sprite rendering quality by dropping RAM tiles), this is impossible.

I totally did not plan for this, and I don't really want it either. I would like to have this game relying on the AVR only, so you can play it without adding the SD hardware, it is a kind of challenge to see how complex game can be done in 60K. I think Mode 74 rather excels in this: it has low ROM footprint due to the 4bpp format (and the additional support for 1bpp), but to get notably distinct platformer / shooter quality compared to what is possible with Mode 3, you need many RAM tiles (so you end up similar RAM demands, but with that, you can get a lot more sprites, also helped by the fast carefully optimized blitter). Not that it would be impossible to make a game using SD data with Mode 74, but that would demand different planning from the very beginning. It is a bit like any retro machine coding (such as the C64 or the Atari VCS): you have to know the limits to fit a good game into it, from the start.

I wouldn't really want to add any further algorithmic elements expect enemy types (which have room as they use the memory within active actor slots allocated as you travel around the map), then balance content so it becomes a good game to play through. Then of course some epilogue which needs custom code, possibly would likely eat away some 1K. This is about what is planned, and what would fit well in the space remaining (I just will have to balance it, what to add, how it should wrap up in a story of the escape, totally possible, there is ample room for it).

User avatar
Artcfox
Posts: 945
Joined: Thu Jun 04, 2015 5:35 pm
Contact:

Re: Flight of a Dragon

Post by Artcfox » Tue Feb 07, 2017 4:45 pm

Jubatian wrote:
Artcfox wrote:How much of the level data would you be able to offload onto the SD card?
Honestly about 0 bytes. Unless you can get a fully working SD layer completed with only 2 bytes of RAM (currently there is only so much free RAM unless I removed RAM tiles, the kernel is already trimmed down to only contain what is necessary, I really use every byte for something, you would see it in very action intensive regions in CUzeBox where all RAM tiles might be used momentarily). Then to get the outermost layer of the level compression scheme into RAM you would have to get 256 bytes of additional RAM for level data, and another ~256 bytes for the definition of a reasonable number of actors (enemies, items and stuff). So without throwing away gameplay features (or reducing sprite rendering quality by dropping RAM tiles), this is impossible.

I totally did not plan for this, and I don't really want it either. I would like to have this game relying on the AVR only, so you can play it without adding the SD hardware, it is a kind of challenge to see how complex game can be done in 60K. I think Mode 74 rather excels in this: it has low ROM footprint due to the 4bpp format (and the additional support for 1bpp), but to get notably distinct platformer / shooter quality compared to what is possible with Mode 3, you need many RAM tiles (so you end up similar RAM demands, but with that, you can get a lot more sprites, also helped by the fast carefully optimized blitter). Not that it would be impossible to make a game using SD data with Mode 74, but that would demand different planning from the very beginning. It is a bit like any retro machine coding (such as the C64 or the Atari VCS): you have to know the limits to fit a good game into it, from the start.

I wouldn't really want to add any further algorithmic elements expect enemy types (which have room as they use the memory within active actor slots allocated as you travel around the map), then balance content so it becomes a good game to play through. Then of course some epilogue which needs custom code, possibly would likely eat away some 1K. This is about what is planned, and what would fit well in the space remaining (I just will have to balance it, what to add, how it should wrap up in a story of the escape, totally possible, there is ample room for it).
Gotcha. I have felt the same about the games I've created so far.

User avatar
Jubatian
Posts: 1355
Joined: Thu Oct 01, 2015 9:44 pm
Location: Hungary
Contact:

Re: Flight of a Dragon

Post by Jubatian » Wed Feb 08, 2017 9:35 am

It depends. With Mode 3 you typically end up in the same situation as there to get a reasonable sprite coverage, you have to use lots of RAM. But it is possible to integrate SD in there, too, D3thAdd3r's Alter Ego port is a nice example. The big difficulty with scrolling games in Mode 3 or 74 is that neither the VRAM or the RAM tiles are so you could store anything on them fetched from SD (the VRAM is not since it scrolls, the RAM tiles are not since they are a dynamic backbuffer for blitting sprites), leaving you with very little room to add any SD content (you could do level streaming, though, with little extra RAM demand). If you designed a game for Mode 13 (or 74, I say 13 for the 6cy / pixel) while adhering to Mode 3 limitations with your sprite coverage, you would get about 800 Kbytes of free RAM.

Mode 72 (which I introduced recently) should be a great option for games heavily using the SD. Currently I am designing an RPG engine for it, interleaving SD streaming into the VSync mixer, allowing a capability to stream MOD rows and sprite data. Sprite data streaming is an interesting capability only really possible with this mode.

Back to FoaD: I like it that way, to use only ROM, it may be nice for some people to have it without the need to build the SD interface. Maybe after I completed it, I could design a "special edition" using the full 64K (no bootloader) with some bonus material such as some intro sequence. But first I will have to see how it works out within the 60K which is still a lot of design (mostly enemies, levels, some interaction fixes and enhancements, delicate stuff affecting the overall playability and fun factor of the game).

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest