Jump to content
IGNORED

Lynx 2020 Programming Competition


Igor

Recommended Posts

30 minutes ago, agradeneu said:

straight ports of existing fullfledged/professionally done games are unfair

I agree with that. Even though its generally quite impossible to reuse any code and the art generally needs a massive amount of work anyway. But you get the design for free and an instant "love" bonus.

  • Like 1
Link to comment
Share on other sites

10 hours ago, agradeneu said:

especially if large parts of code

I was reacting to that ;)

 

What I meant is that if you're porting MK to the lynx, you simply start from scratch from a coding perspective - and to some extent same for the art. So the unfairness is not in the code, but in everything around that.

  • Like 1
Link to comment
Share on other sites

8 minutes ago, LordKraken said:

I was reacting to that ;)

 

What I meant is that if you're porting MK to the lynx, you simply start from scratch from a coding perspective - and to some extent same for the art. So the unfairness is not in the code, but in everything around that.

So you mean they wrote the whole fighting engine and all its functions from scratch? Without any help from the Arcade source? ;-)?

Edited by agradeneu
Link to comment
Share on other sites

Didn't know the source was available.... Maybe they looked at how things were done, it can help, but converting from a 16bits processor to a 8bits it well... not easy... So even if they looked at the code, I'm pretty convinced they didn't reuse any single line from it.

Edited by LordKraken
Link to comment
Share on other sites

For various reasons I have been disassembling Lynx carts. And the funny thing is that most of the code in the cart is IDENTICAL. They just change the graphics and the name of the game. The same thing happens with most game producers. The number of re-usable code snippets tend to grow. The sounds in all games start sounding familiar. The fonts are the same. In certain modern games you don't even know what game some guy is playing because the engine is the same.

 

I would probably use Handy Music, the template developed by @Nop90 and me, the default Lynx palette, tiled engine for layout.

Link to comment
Share on other sites

56 minutes ago, LordKraken said:

Didn't know the source was available.... Maybe they looked at how things were done, it can help, but converting from a 16bits processor to a 8bits it well... not easy... So even if they looked at the code, I'm pretty convinced they didn't reuse any single line from it.

I did not know the graphic assets were either ;-) Apart from the coding, (I can't really comment on that because I'm incompetent) such high fidelity  move sets and animations alone are impossible to create from scratch for a homebrew/hobby team. And that is the point, its all a bit too intransparent and "grey area stuff" with ports and using popular IPs, reusing/retooling graphic assets that possibly represent creative work/ownership of other parties, apart from legal issues like no licenses. 

As it looks, we will see alot of ports of popular IPs in future compos and that is the point where I come to terms that any partipation in that would be a waste of time.

 

 

 

 

  • Like 3
Link to comment
Share on other sites

1 hour ago, LordKraken said:

I agree. Taking inspiration or making an hommage game is fine. But a straight port should not be allowed in any sort of retro gaming competition.

Actually.. I disagree.

 

Rules can also kill creativity. Perhaps your thing is to create a unique control of an old game. Vary the goal of the game. Or whatever.

 

My "find a way to my heart" was based on minesweeper sources. But it had new ideas:
- hexagonal tiles
- clear a path from left to right to unite the lovebirds
- HandyMusic first experiment. I used Chipper before
- Digitized sound streamed from the cart as my kids sing "Find a way to my heart" of "found a way to my heart"

 

I agree that using existing game idea and existing sources cut down the development time to a week.

 

Of course in my case this game had little appeal in the competition as everybody already knew minesweeper. So there was no "new idea" moment.

  • Like 2
Link to comment
Share on other sites

7 minutes ago, karri said:

My "find a way to my heart" was based on minesweeper sources. But it had new ideas:

Which is an "homage" on MineSweeper.

 

IMHO, a game competition needs some limitations to have fair one.


So doing a game competition where entries take existing sources (code, GFX, SFX) and just adapt it for the Lynx is nothing really new and unfair.

I'd rather prefer to see a 256B Tetris than another retroguru port (no pun intended).


 

  • Like 1
Link to comment
Share on other sites

2 hours ago, karri said:

Perhaps your thing is to create a unique control of an old game. Vary the goal of the game. Or whatever.

So in fact, we agree :) Creating your own vision of a game, making it better, experimenting, changing the art, this is totally fine and legit. Essentially you deliver a similar game concept but with a different identity (and you avoid the pitfall of legality too). Also your clone of minesweeper @karri was a very personal reinterpretation, so this was of course NOT a straight port.

 

What me and agra meant is that it's generally unfair in a gaming competition to come up with a 1-1 straight port. 

 

Quote

So doing a game competition where entries take existing sources (code, GFX, SFX) and just adapt it for the Lynx is nothing really new and unfair.

+1.

 

A 256 bytes Tetris is a particular case where a straight clone is acceptable because obviously the constraints is the size here.

Edited by LordKraken
  • Like 2
  • Thanks 1
Link to comment
Share on other sites

A new game (port or original) is always a good news.

As long as rules do not refuse ports, and of course it is better if permission and rights are given from original authors (or license permit) but a proof of concept like Mortal Kombat is not a complete copy, so I'm fine with this.

 

I personnally prefer to make a new game from scratch (but I can use or buy assets, as I'm not an artist) just for the contest, but some contests are more a "best game shown" than a limited in time contest. I mean, I could start a game now for the SillyVenture 2027 and it would be OK, but not for the AC 2021 (let's hope it won't be cancelled) as we are supposed to code the game in the week-end. 

This is where rules, and themes given at the beginning of the contest are important, you cannot anticipate (or it is off-topic, like a monochrome FPS presented for a G&W themed AC coding contest).

Link to comment
Share on other sites

On 11/24/2020 at 6:20 PM, agradeneu said:

So you mean they wrote the whole fighting engine and all its functions from scratch? Without any help from the Arcade source? ;-)?

Why just not ask? :)

It's kinda rude talking "they" about people on the forum ;)

 

TL;DR: In our MK port there is not a bit of code from any "Arcade source" and no insight how it was written. The code except Handy Music driver is ~100% ours. I even wrote by myself a custom loader, initialization routines, Suzy handling etc. About making ports in the competitions I'll write at the end, but now I have an urge to write some about the technicalities as it's important to understand the point.

 

So basically the "fighting engine" is only the tip of the iceberg. I don't mean it's trivial, but if you have enough idea/knowledge about game mechanics it can be written in... let's say... a week. Some more if you are doing it in assembly as we did. Actually @solo/ng is a hardcore lover of the genre and he knows all the moves by heart and he was tweaking it until the deadline, so we haven't benefit much from that edition of Silly Venture :)

 

Under that is a Sprite Drawing Engine intermixed with Resource Management Engine. That's where the magic is happening. I was writing all the tools and 6502 code about half a year - from June of 2019 when I've learned about Lynx 30th anniversary competition and the goal happened to be the Lynx Quest. For that game I did a tool that manages assets and divides the code to separately loaded "stages" and it was designed to make it quickly and easily. It has also pretty efficient routines to draw sprites - virtually any stone and clump of grass is a separate sprite there and you all can judge whether it's sluggish (That's the only reason I was whining in the Odynexus thread as I know that anything that is on the screen it that gorgeously looking game can be drawn faster).

 

When we've decided to make an entry to Silly Venture game compo I was initially planning to do some survival shooter (akin Phobia II) but few weeks before the party @solo/ng presented a proof of concept that MK can really be done and look great on Lynx. Initial concept has been hence dropped and we started to evaluate what is needed to do full fledged Mortal Kombat clone stripped down to Lynx' capabilities. Soon it turned out it would not be a Mortal Kombat that "complies with our standards" if it would sacrifice fluidity of (many many frames of original) animation and if it would not have samples played during fight. So We've faced the same problem that @Nop90 is facing now in his Starblade fighter game. The difference is that the "memory optimization" was off the table because sprites of fighters occupies more that 64 kB. Not to mention many kilobytes of samples... So rather than saying that it's impossible, I've made it possible pushing my resource management way further that's reasonable. At the end our gameplay has about 30 fps what includes drawing two layers of background with parallax, two players with shadows, some UI and few palette changes amids the screen. But the core concept is that we are loading required resources on the fly. The are few pieces of puzzle here:

  • Our rendering takes less than a 1/60 of a second (a frame) so in every 2-frame rendering cycle we have 1 frame for rendering and 1 frame that we are using to load the resources.
  • MK animations have 10 fps, we are rendering 30 fps so any change in sprite occurs every 3rd refresh.
  • Longest animation have 8 frames. We can load 2 frames in one loading cycle so we can load 6 frames before first frame is needed
  • The samples are needed not sooner as at third frame of animation (kick, punch etc) so we have theoretically plenty of time to load all sprites before we switch to streaming sample data on-line from cartridge (in practice there is no much time left as there are two players that need to have animations loaded).

Keep in mind that all these resources need to be managed, kept in cartridge, addressed, and have to have some place to be loaded to RAM and accessed without glitches. To speed things up I even devised a way of ordering cartridge blocks so that switching to next block would need shifting only one bit to IODAT.

 

So without false modesty I think that the engine behind Mortal Kombat is really a piece of cutting edge retro-technology that I don't think has been done before on Lynx. And to be fair I wrote it only because we were doing Mortal Kombat that already has resources that are demanding to fit in. If it would be original game I would probably given up and "ordered" simpler assets that would fit in the memory.

 

After saying all this I think that the only thing that is unfair here is to diminish the accomplishment of doing something theoretically impossible only because the idea and assets are not original. Of course there should be rules that needs to be followed. We did original game to 30th anniversary competition because rules said so. We wouldn't submit a port of AAA game on the competition held in this community.  On the other hand, @agradeneu, you probably don't fully understand the concept of competitions on demoparties. The idea there is not to present a demo-version of a game that you wish to sell someday later, but to push the limits and present something as impressive as you can. So, please, let's don't mix these concepts.

 

 

 

22 hours ago, roots.genoa said:

To be fair the Mortal Kombat port didn't win the competition anyway...

My friend told me that I had very sour face after the announcement of the results ;)

But that's the way democracy works. The Silas Adventure had 3D dungeon and we had only two moving sprites. Sadly the majority of voters didn't know what are the capabilities of Lynx and apparently voted using their gut feeling.

 

PS. As a side note about Lynx Quest - I've actually published it's source code about 8 months ago on ChibiAcumas assembly forum and was waiting all that time whether it will be discovered. It wasn't, so it kinda proofs my hunch about very little assembly interest in Lynx community :). I stop waiting then and you can find it here. BTW I won the Tiny PacMan with it.

 

PS2. We will push MK further. Multiplayer game waits when I'll stabilize my com-lynx code (as I strongly don't like the way it was done in the redeye). We'll add some more animations too.

 

Edited by laoo
  • Like 3
  • Thanks 1
Link to comment
Share on other sites

8 minutes ago, laoo said:

PS. As a side note about Lynx Quest - I've actually published it's source code about 8 months ago on ChibiAcumas assembly forum and was waiting all that time whether it will be discovered. It wasn't, so it kinda proofs my hunch about very little assembly interest in Lynx community :). I stop waiting then and you can find it here. BTW I won the Tiny PacMan with it.

 

Who reads this forum ?

 

Quote

 

ChibiAkumas ASM Programming Forum

Learn Assembly Programming for the Z80,6502,68000 and more!

 

 

We all know how to code in Assembly ;-)

(Now I will have a look, always eager to learn new tricks.)

Edited by 42bs
  • Like 1
Link to comment
Share on other sites

Thanks for sharing your code @laoo, and yes you might be right, there are probably more game programmers than pure hackers here. Or to put it differently it's more a C than an ASM enthusiast club :) (nothing wrong with that, what matters is that everyone have fun doing some hobby programming one way or another).

 

Before "ranting" a bit more, I just want to make it clear that I'm completely amazed by your achievement. Lynx quest was fantastic, but MK proved to be one major tech achievement. Now, regarding porting existing games for retro-gaming competition, I have mixed feeling. I'm not totally against, I think it's cool, but then I can't help but to consider that ports have an unfair advantage as they are already known by basically everyone and get love by just basically existing. And it becomes much easier to sell the idea and to get votes.

 

What do you think? 

Edited by LordKraken
Link to comment
Share on other sites

IMHO, using a game idea and making your own version is ok for me. But using existing sources and just make it a Lynx game is ok for selling, but not in a competition.

Hey, none of my stuff is a original "42Bastian-idea" ? But (with the exception of Isolation, a GFA BASIC game on ST), I never did  use any existing sources.

Link to comment
Share on other sites

2 hours ago, laoo said:

Why just not ask? :)

It's kinda rude talking "they" about people on the forum ;)

 

TL;DR: In our MK port there is not a bit of code from any "Arcade source" and no insight how it was written. The code except Handy Music driver is ~100% ours. I even wrote by myself a custom loader, initialization routines, Suzy handling etc. About making ports in the competitions I'll write at the end, but now I have an urge to write some about the technicalities as it's important to understand the point.

 

So basically the "fighting engine" is only the tip of the iceberg. I don't mean it's trivial, but if you have enough idea/knowledge about game mechanics it can be written in... let's say... a week. Some more if you are doing it in assembly as we did. Actually @solo/ng is a hardcore lover of the genre and he knows all the moves by heart and he was tweaking it until the deadline, so we haven't benefit much from that edition of Silly Venture :)

 

Under that is a Sprite Drawing Engine intermixed with Resource Management Engine. That's where the magic is happening. I was writing all the tools and 6502 code about half a year - from June of 2019 when I've learned about Lynx 30th anniversary competition and the goal happened to be the Lynx Quest. For that game I did a tool that manages assets and divides the code to separately loaded "stages" and it was designed to make it quickly and easily. It has also pretty efficient routines to draw sprites - virtually any stone and clump of grass is a separate sprite there and you all can judge whether it's sluggish (That's the only reason I was whining in the Odynexus thread as I know that anything that is on the screen it that gorgeously looking game can be drawn faster).

 

When we've decided to make an entry to Silly Venture game compo I was initially planning to do some survival shooter (akin Phobia II) but few weeks before the party @solo/ng presented a proof of concept that MK can really be done and look great on Lynx. Initial concept has been hence dropped and we started to evaluate what is needed to do full fledged Mortal Kombat clone stripped down to Lynx' capabilities. Soon it turned out it would not be a Mortal Kombat that "complies with our standards" if it would sacrifice fluidity of (many many frames of original) animation and if it would not have samples played during fight. So We've faced the same problem that @Nop90 is facing now in his Starblade fighter game. The difference is that the "memory optimization" was off the table because sprites of fighters occupies more that 64 kB. Not to mention many kilobytes of samples... So rather than saying that it's impossible, I've made it possible pushing my resource management way further that's reasonable. At the end our gameplay has about 30 fps what includes drawing two layers of background with parallax, two players with shadows, some UI and few palette changes amids the screen. But the core concept is that we are loading required resources on the fly. The are few pieces of puzzle here:

  • Our rendering takes less than a 1/60 of a second (a frame) so in every 2-frame rendering cycle we have 1 frame for rendering and 1 frame that we are using to load the resources.
  • MK animations have 10 fps, we are rendering 30 fps so any change in sprite occurs every 3rd refresh.
  • Longest animation have 8 frames. We can load 2 frames in one loading cycle so we can load 6 frames before first frame is needed
  • The samples are needed not sooner as at third frame of animation (kick, punch etc) so we have theoretically plenty of time to load all sprites before we switch to streaming sample data on-line from cartridge (in practice there is no much time left as there are two players that need to have animations loaded).

Keep in mind that all these resources need to be managed, kept in cartridge, addressed, and have to have some place to be loaded to RAM and accessed without glitches. To speed things up I even devised a way of ordering cartridge blocks so that switching to next block would need shifting only one bit to IODAT.

 

So without false modesty I think that the engine behind Mortal Kombat is really a piece of cutting edge retro-technology that I don't think has been done before on Lynx. And to be fair I wrote it only because we were doing Mortal Kombat that already has resources that are demanding to fit in. If it would be original game I would probably given up and "ordered" simpler assets that would fit in the memory.

 

After saying all this I think that the only thing that is unfair here is to diminish the accomplishment of doing something theoretically impossible only because the idea and assets are not original. Of course there should be rules that needs to be followed. We did original game to 30th anniversary competition because rules said so. We wouldn't submit a port of AAA game on the competition held in this community.  On the other hand, @agradeneu, you probably don't fully understand the concept of competitions on demoparties. The idea there is not to present a demo-version of a game that you wish to sell someday later, but to push the limits and present something as impressive as you can. So, please, let's don't mix these concepts.

 

 

 

My friend told me that I had very sour face after the announcement of the results ;)

But that's the way democracy works. The Silas Adventure had 3D dungeon and we had only two moving sprites. Sadly the majority of voters didn't know what are the capabilities of Lynx and apparently voted using their gut feeling.

 

PS. As a side note about Lynx Quest - I've actually published it's source code about 8 months ago on ChibiAcumas assembly forum and was waiting all that time whether it will be discovered. It wasn't, so it kinda proofs my hunch about very little assembly interest in Lynx community :). I stop waiting then and you can find it here. BTW I won the Tiny PacMan with it.

 

PS2. We will push MK further. Multiplayer game waits when I'll stabilize my com-lynx code (as I strongly don't like the way it was done in the redeye). We'll add some more animations too.

 

Nah, we did Odynexus just for fun and the idea to finish it came much later. We did push our limits as much as your team did.

As for MK, its pretty obvious that using copyright protected IPs could be troublesome. That is beyond discussion and if I was "rude" to question that practice.  I just think any competition needs rules that are reasonable and fair to everyone. It's unfortunate that I exposed MK as a bad example here, despite it's masterclass programming skills. Sorry for that! 

But from a different perspective, Iam sure your engine would have been even more impressive powering an original game with original assets, for all good reasons. ;-) It would have not diminish the programming efforts in the slightest.

 

 

 

 

 

 

Link to comment
Share on other sites

18 hours ago, LordKraken said:

Now, regarding porting existing games for retro-gaming competition, I have mixed feeling. I'm not totally against, I think it's cool, but then I can't help but to consider that ports have an unfair advantage as they are already known by basically everyone and get love by just basically existing. And it becomes much easier to sell the idea and to get votes.

The whole issue is from different understanding what exactly retro-game competition is. I presume that you are perceiving it monolithically and it means always the same, whereas our team has strong demoscene background rooting in the nineties hence our oldschool view on the matter. For us, in contrast to traditional competitions (like those organized by AtariGamer), a competition on the demoparty isn't about making a game as a product, but rather to create a showcase what can be done on specific machine. There's a huge difference. A product is oriented on gaming experience, whilst showcase.... is to show what we are able to do, that others can't. It's about programming skills and game assets are of secondary importance. We've done MK with exactly that attitude: "No one manage to program Mortal Kombat on the Lynx, and look - we did it and it does not look inferior to versions on 16-bit platforms". A fully working game might be a side-effect :)

So in my opinion on demoscene competition such mindset in acceptable and even desired because it's the demoscene.

On the other side - as I said before - non-demoscene competitions has different rules to which we comply.

 

17 hours ago, agradeneu said:

Nah, we did Odynexus just for fun and the idea to finish it came much later. We did push our limits as much as your team did.

As for MK, its pretty obvious that using copyright protected IPs could be troublesome. That is beyond discussion and if I was "rude" to question that practice.  I just think any competition needs rules that are reasonable and fair to everyone. It's unfortunate that I exposed MK as a bad example here, despite it's masterclass programming skills. Sorry for that! 

But from a different perspective, Iam sure your engine would have been even more impressive powering an original game with original assets, for all good reasons. ;-) It would have not diminish the programming efforts in the slightest.

We're dealing with recursive concept here. The engine came to life because there were such demanding assets and we wanted to use then. If not that, I would not write it. And frankly I'm pretty sure that there aren't any individual in sight with enough skill that would spend few weeks of his time to draw sprites that would drive that engine.

If you know someone, please let mi know and we could make epic fighting game on the Lynx. The engine is pretty reusable :)

Edited by laoo
  • Like 2
Link to comment
Share on other sites

Fair enough @laoo, I get your point :)  

 

And you're right, while the atari gamer competitions required an "original" game to compete, it was not the case at SV, and you played by the rules. I agree that getting the art for "free" is what made your game possible since I don't see anyone putting months of work into that. In any case it's a fantastic achievement and I like the fact that a real game is coming out from demomakers - generally they stop at the "showing off" part ;)

 

And to concluse, no hard feeling from my side, actually the only thing I was advocating for was to have an "original game" criteria for the mini-competition Igor might set up later this month (I've heard he's pretty busy since a couple of days so not sure it's happening :D ).


Also, one last thing:

Quote

(That's the only reason I was whining in the Odynexus thread as I know that anything that is on the screen it that gorgeously looking game can be drawn faster

What made the game slow was actually not the BLL sprite engine, but my collision algorithm that was doing very unnecessary stuff.

  • Like 1
Link to comment
Share on other sites

33 minutes ago, Fadest said:

@laoo

This is probably a silly idea, but Carl has the rights for UltraVore

I don't know hor far the code is for the Atari Lynx version (maybe Carl is already close to complete it), but if just a prototype, it may be a smart move to include the assets into your engine.

 

The engine works, I guess trhe hard part is designing the characters and animating the move sets. Then playtesting and balancing it all out. Huge work. Just like laoo siad, you will need an artist who is excellent with character designs and some knowledge how fighting games work. And who is willing to put a lot of time and work into a system that is niche and not really suited for such games (2 buttons, stiff pad)

Edited by agradeneu
Link to comment
Share on other sites

3 hours ago, laoo said:

The whole issue is from different understanding what exactly retro-game competition is. I presume that you are perceiving it monolithically and it means always the same, whereas our team has strong demoscene background rooting in the nineties hence our oldschool view on the matter. For us, in contrast to traditional competitions (like those organized by AtariGamer), a competition on the demoparty isn't about making a game as a product, but rather to create a showcase what can be done on specific machine. There's a huge difference. A product is oriented on gaming experience, whilst showcase.... is to show what we are able to do, that others can't. It's about programming skills and game assets are of secondary importance. We've done MK with exactly that attitude: "No one manage to program Mortal Kombat on the Lynx, and look - we did it and it does not look inferior to versions on 16-bit platforms". A fully working game might be a side-effect :)

So in my opinion on demoscene competition such mindset in acceptable and even desired because it's the demoscene.

On the other side - as I said before - non-demoscene competitions has different rules to which we comply.

 

We're dealing with recursive concept here. The engine came to life because there were such demanding assets and we wanted to use then. If not that, I would not write it. And frankly I'm pretty sure that there aren't any individual in sight with enough skill that would spend few weeks of his time to draw sprites that would drive that engine.

If you know someone, please let mi know and we could make epic fighting game on the Lynx. The engine is pretty reusable :)

I might agree to that, a game scene competition might have a completely different mindset. We dont need to argue about that game design and graphics are essential parts that make or break a game, while the raw coding prowess applies more to something like a tech demo or graphics demo (but even for graphics demos, the impressive artwork is an integral part of the overall demo presentation!)

 

Even for a demoscene event like Sillyventure with "no rules", MK came off as a little surprise, to say the least.

 

Anyway, IMO, for a fair game compo and to ensure a certain degree of originality and legit authorship, no exploits of popular IPs or ports of "ready to go" games of 3rd parties should be allowed.  

 

Edited by agradeneu
  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...