Collaboration

Too many things to do, perhaps someone may help me?

6

Jeanmilost 2022-02-19 18:10

Hello,

I’m a huge fan of retro-gaming, and sincerely I like LowResNX, in which I spend some of my free time. There are several games which made the greatness of old computers like the Amstrad CPC (which my father owned), or the Commodore 64 (which I owned), and I would like to have the time to port many of them on LowResNX. But as I have also a family, a work, and many other projects I want to realize, (without saying that I’m also a gamer), I need to make some compromises, and I currently prefer to work on my own game projects (including those for the LowResNX) than making the port of an existing game.

One of those games that deserves a port is Cybernoid (https://youtu.be/jftdEl_o0pU). It was one of my favorite shoot-em-up on my good old Commodore 64 😄

These last days I tried something for another game I’m currently creating, and I finished by create a part of the resources (graphics, music) of this game. And sincerely I think that it would be possible to make a good version of a such game on the LowResNX.

But as I said, I haven’t the time to work on a such port these days, and it’s a shame. Probably I will port this game one day, but this will happen in a very distant future. For that reason I asked me if someone may be interested to collaborate on a such game with me?

If someone is interested to develop the game logic, I compromise myself to provide all the required graphical resources, and the music. I’ll probably simplify some of them, however, to be able to enter all of them in the LowResNX editor.

I think to create an intermediate version between the ZX Spectrum (more simpler) and the Commodore 64 (more pretty).

Please find attached the current version of the resources. I’m also interested to know which version of the spaceship you prefer 🙂

Anybody is welcome to work on this project, including newbies, or casual developer which would just write a small function or part of the game engine.

Here are the tasks I think the game requires:
- Basic gameplay (spaceship movements and gravity)
- Collision detections
- Weapons management
- Enemies
- Destruction and explosions (decor, enemies, …)
- Particles system

And so, is someone interested?

Cybernoid.nx | Open in app
2022-02-19 18:10

Jeanmilost 2022-02-19 18:14

Also, just for fun, I share below the 2 other games on which I’m currently working 😎

This one:

Titanium Core.nx | Open in app
2022-02-19 18:14

Jeanmilost 2022-02-19 18:16

And this one:

Djinns.nx | Open in app
2022-02-19 18:16

Timo 2022-02-19 19:07

These programs look all very cool :)
But I have the same "problem": The time I have I prefer to spend for own projects.


was8bit 2022-02-20 16:54 (Edited)

I've watched the video... the mechanics seem simple enough... there are never more than 60+ moving things... so the SPRITE HIT would mostly be used for contact with moving things... the background images don't seem to be hazardous, and everything seems to fit into a standard cell grid, so Timo's code for contact with a background cell would work...

Also, there doesn't seem to be any scrolling, just a simple screen change...

The hard part would be creating all of the screens, and setting up each screen with all the needed sprites....

A single main DO LOOP that could process all possible contacts with player should suffice...

My own Pitfall (llaftip) took me a TON of work, and is much more simplified, with randomly created rooms... so with all my issues trying to get my games finished, the best i could do would be test or help if you get stuck :(

... You do make cool games :) maybe try making a small single room that is kinda randomly created... maybe start with one screen type with random enemies, then later add other screen types that might randomly pop up... it would be easier and it could help flesh out your ideas ... :)


nathanielbabiak 2022-02-21 04:31 (Edited)

Jean, if you take tiles that you make, and then also put them in the background designer to create some proof-of-concept screens, I'll make a game engine for them.

I haven't reviewed the upload yet, but from the other responses here: is it correct to assume this hasn't been done yet?

After you're done, what I'd do is pretty much the steps was8bit described, except that each screens' data would be processed from the background ROM rather than generated in-code. It'll allow levels to be reviewed/revised more easily. (Although it makes the game engine more complex, as there are merits to was8bit's alternate approach.)


was8bit 2022-02-21 06:04

In my pitfall game, each screen starts as a background, randomly generated... then this background gets scanned and there are preset characters that are removed from the background and converted to sprites, on the same location that it was spawned from...

It is abit tricky, but it combines the best of both worlds, (originally i was going to make each screen as saved backgrounds, then later changed it to random) ... you can design your screen via editing a background... but then it can be played as both background and sprites....


Roy___ 2022-02-21 21:16

Might be overkill, but I found this topic about a level editor for the ZX Spectrum version of Cybernoid which is quite interesting. I was wondering how they would have saved all the screens with limited memory, seems it was a form of RLE. I’m not really up on the amount of memory LRNX has, so perhaps you could fit a large number of screens in the BG editor without compression?

There is also a disassembly out there which has a hex dump, using the info from the editor topic you could probably rip the screen data out of that if you wanted!

https://worldofspectrum.org/forums/discussion/14711/cybernoid-editor

https://derekbolli.wordpress.com/2014/12/28/cybernoid-disassembly-for-zx-spectrum/


Jeanmilost 2022-02-22 01:43

Thank you for all your answers, it's nice to see such motivation 🙂

@was8bit thank you for sharing your experience, it's always very interesting to read. I'm going to take a quiet look at this over the next few days, and see how I can best use it. And of course your skill for testing will be welcome 😉

@nathanielbabiak great, I'm glad I caught your attention, from what I've seen of your code, you're a very talented person. About my above release, indeed it contains only a few simple concepts, but I will try to prepare several levels over the next few days, and I will soon publish a new version in this post. It will take me a little time though, I'm pretty busy these days. But I will try to give news as much as possible. Also don’t hesitate to contact me from this thread, I’ll keep an eye on it 🙂

@Roy___ very interesting resources, I’ll take a look on that ASAP. Thank you very much for this sharing


Jeanmilost 2022-02-26 21:36

@ nathanielbabiak Hello, I joined below a little update of the Cybernoid project. I selected a spaceship model, and I created 2 demo level screens, available in the designer. I noticed the following:
- I created the user interface on the top, but I cannot draw the text showing the score on 2 lines, otherwise I’ll need to use too many space for the resources in the designer. For that reason we will have to simplify the manner how the score is counted in game, or find a better solution to draw it
- I will have to organize the levels in a non logical order, i.e one may not follow the next in the designer, even if they follows in game. This is because I cannot generate a workspace which may contain the correct number of screens. There is one more on the bottom, but two are missing on the right
- Also I assume that each level screens may have to be swapped between several files, because there is too many screens for the available space in one file. Or perhaps we will have to simplify the game and exclude some screens from the final level
- There is a missing space on the top of each screen. It’s normal, it’s the reserved space for the user interface (the header showing to score)
- To change the screens, we may add a small transition effect, I already created a fader in another project, I may quickly implement the code in this project

These next days I’ll try to add the sprites for the vulcan particle effects, the weapons and the enemies

Please let me know what do you think 🙂

Cybernoid.nx | Open in app
2022-02-26 21:36

Jeanmilost 2022-02-26 21:39

And of course don’t hesitate if you have suggestions or remarks to improve the usage of the memory and available space (it’s not my strong skill 😄)


Timo 2022-02-27 08:36

Wow, Cybernoid looks and sounds amazing!


Jeanmilost 2022-03-01 00:57

@Timo thx 🙂


nathanielbabiak 2022-03-01 06:53 (Edited)

Hi Jean,

I've attached a modified version of the code. It's optimized/readable/equivalent.

I've modified the palettes a bit, since I didn't play the original game before. I'm using this video as a template. The blue's good too - I'll switch it back after I get a bit more familiar with the game.

I also modified/added pixel art for a few of the pseudo-3D border tiles. Honestly yours looks better (more artsy), but this one is consistent. I just wanted to (graphically) show the two concepts bulleted here. Can you incorporate? My designs aren't artistic, they're just simplistic to illustrate the points...

But (onto important matters), please add enemies and interactive objects in the levels! I want to start testing the game engine to identify those tiles, then convert them to "living" sprites. Take this upload and just cram sprites where they fit in the character designer. They can look like crap for now, just make it recognizable enough that I can figure out the plan, and put them in each screen you make too...

Also, there's a bunch of subjects that have been discussed already. Here's my thoughts on this stuff...

And here's a few comments on implementation:

Thanks,

~Nate


Jeanmilost 2022-03-03 01:32

@Timo thank you 🙂
@ nathanielbabiak good job! I’ll add the graphics you need ASAP


Jeanmilost 2022-03-04 02:19 (Edited)

@nathanielbabiak Hello 🙂 so I added 2 kinds of enemies, the bandits and the elevators (to use later). I added a quick demo on how to draw them (but it need to be polished, because my code is ugly 😄)

I also added the vulcan particles on slots 84 to 87, the rotating mace (weapon) on slot 191, the booster (ship equipement) on slot 175, and the missiles (enemies) on slot 189.

Quick question, my idea was also to include the game menu. Would it be possible to write text (I’ll probably recreate the font later), as we already filled the font slots with other stuff?

Good job, by the way


nathanielbabiak 2022-03-04 23:49

Looking good! Your artwork is amazing!

On the topic of text, just create a new upload with the text you want. Make the screens for title, menu, pause, etc. I will incorporate all of your art uploads into one "combined" file, and it'll just be some ROM data that swaps at runtime. I'll handle the swaps.


Jeanmilost 2022-03-08 02:36

Thank you!

Here is a new version, I added several new levels. I become pretty limited with space in the character editor, also there are less available space on each screen than on the c64 version, so I need to simplify and adapt a little the levels, and perform more character reuse than I initially planned, but I think that the result remains acceptable.

The only annoying thing is that I need to create more enemies, and I need some space in the editor to achieve that. I think I may adapt the sprites to fit in the remaining space but the best would be to divide the characters between 2 files, however I don’t know if it is possible. What do you think?

For the menu, no problem, I’ll create it in a separate file. The text will remain simple: the same as the original game, plus our names for the LowResNX porting 🙂

Feel free to comment or react to my latest work


nathanielbabiak 2022-03-08 03:37 (Edited)

Hey,

I'm working on this tonight too actually. I'll have an upload to you before I go to bed. I've already addressed the character designer space-limiting issue. You'll see it in this upload in ROM 2 cells 98 and 100, and ROM 5 page 1. (...I was sincere when I said its super-easy to swap data...)

I won't have time to review your upload tonight though - I want to prepare for tonight's upload by me! (I'm just selfish, jk.) I have the screen-flip "file format" done in a way that will allow you to make each screen without shuffling them too much, and I'll have the ship movement, background collision, and screenflip navigation done too. No enemies yet.

FYI - the ROM format of the screens in your upload today will be changing. It's because I'm shuffling a bunch of character graphics around, I don't mind at all taking your latest screens and importing them into the (as yet unseen) format. Don't waste your time on it - I'll take care of it. Just use the NEW (again, as yet unseen) character data as best you can (and throw your latest graphics in too). (This is going to happen a few times, I'd think.)


nathanielbabiak 2022-03-08 03:43

It may seem a bit OCD to plan ahead that far (by saying it's likely the character data order will be swapped a few more times). It probably is. But I'll take care of it on my end so it shouldn't bug you too much. :-)

Actually, I want to focus on it because I think we were a bit ambitious. My gut feeling (without calcs) is that we're quickly approaching the LowRes NX ROM limitations! I've got a few ways we can compress the level data, but weirdly it's likely going to depend on ordering the character data reasonably well.


nathanielbabiak 2022-03-08 05:38 (Edited)

Here's the upload - maps can be explored! It includes the four things I mentioned.

You can do CTRL+F for "VERT=UP" if you want, and uncomment that line, and comment-out the line below instead. That'll make the controls match the original game.

The final version won't change the color of tiles during background collisions like this one does.

I'm not actually sure I *like* pixel-perfect background collisions - it seems to cause jigsaw-puzzle style locks in many places. I'll do some research on this. More to come.

Sometime this week, I'll import your art and levels from your upload tonight. TTYL!


Jeanmilost 2022-03-13 16:01

@nathanielbabiak great, good work! About the required space, I think I’m close to finish the graphics, and it’s always possible to simplify if needed. From my point of view a good conversion would be this which restitues the feeling of the original game, don’t need to be exactly the same 😉

About the collision detection against the walls, I also faced a similar issue on my above « Titanium core » game project, and I tried another approach, which involves 2 sprites (nb. 63 and 64), in which I put the background cell in one, and the ship cell in the other, and I perform a normal sprite collision between the 2. It’s experimental, and I don’t know if it’s a better approach, but it works well in my project. You may take a look if you want, I already attached this project to the starting of this thread, above.

As soon as you post a newer version including the latest graphics, I’ll continue to create them🙂I’ll also continue the music ASAP.


Jeanmilost 2022-03-14 01:09

I tested your latest version. On my iPhone there seem to have no issue with the collision.


nathanielbabiak 2022-03-14 06:50 (Edited)

Hey,

Do you go by Jean? I'm Nate. :-)

I'm not worried about the code (per se) for the sprite-background collision, it's more-so that when the ship is adjacent to a non-smooth background tile (the red spiny ones for example), that the pixels can become interlocked and the pixel-perfect collision detection actually binds the ship preventing sliding movement (as though it were a jigsaw puzzle). I've got some working ideas for how to avoid that - but basically it all boils down to avoiding pixel-perfect collision detection for backgrounds (keeping collision detection for enemy sprites, obviously).

I actually kind'a freaked out about the graphics. I've spent a few days on a compressor-tool and decompressor-subprogram to ensure there it won't ever be an issue. It's inspired by pucrunch but has a few differences, notably gzip's non-greedy parsing and Phatak's 2016 Elias Gamma improvement for mode select and RLE indexing... More to come on that, although it appears it won't be necessary for this game after all.

My next upload will have finalized the locations of all the tiles, and it'll include the backgrounds of your earlier work with the updated tile-associations. Sorry it's taking a while...

One request though:

Many of the graphics are obvious if they're animated, but I'm trying to avoid missing any. I need to know which are animations to organize the final tiles. Only one 'frame' of the animation will actually go in the system's ROM 2 and CHAR DATA (and use up valuable cells), the rest will be swapped each frame from a separate ROM.


Jeanmilost 2022-03-15 01:12

@nathanielbabiak cool, looks really good! 🙂 Ok I’ll identify the animated background objects, I’ll either mark them in the designer whenever possible, or create small demo code as I did for the previous sprites, if required. I’ll also do the same thing for the combined cells (i.e cells which requires 2 layers to be complete).

Thank you very much for your excellent job, it’s nice to work with you. Don’t worry about time, I’m myself quite busy 😉.


nathanielbabiak 2022-03-15 02:47

Hey - I just meant reply back to this forum with something like:

It's from [Jean's] upload above with filename 03-07, and it's these characters:

03, 05, 31, 45, 67

Nothing fancy!


nathanielbabiak 2022-03-15 05:22

I withdraw that last comment - you are right - short animated examples would be very helpful!


Jeanmilost 2022-03-27 01:15

@nathanielbabiak hello, here is a small update containing several new stuff:
- I continued the level design and I added new rooms
- I added a new animated cruiser (sprites 203, 205, 235 and 237), see the SHOW_CRUISER function
- I added a demo animation for the missile (sprites 157, 173 and 189), see the SHOW_MISSILE function
- I added a cannon (see room [1, 0], and sprites 149, 151 and 153), see the SHOW_CANNON function
- I added a blue sphere on the layer 1 of the green blob, the sphere to use is the sprite nb. 89

NOTE that the current locations in the sprite designer are of course temporary, you’ll need to move them to their correct final locations. Just be careful to not break the levels while moving the sprites I used in the designer 🙂

As I become limited in space to create new sprites, I want to reuse already used locations. Can you please tell me which locations I may use to create the next sprites?


Jeanmilost 2022-03-27 01:15

@nathanielbabiak hello, here is a small update containing several new stuff:
- I continued the level design and I added new rooms
- I added a new animated cruiser (sprites 203, 205, 235 and 237), see the SHOW_CRUISER function
- I added a demo animation for the missile (sprites 157, 173 and 189), see the SHOW_MISSILE function
- I added a cannon (see room [1, 0], and sprites 149, 151 and 153), see the SHOW_CANNON function
- I added a blue sphere on the layer 1 of the green blob, the sphere to use is the sprite nb. 89

NOTE that the current locations in the sprite designer are of course temporary, you’ll need to move them to their correct final locations. Just be careful to not break the levels while moving the sprites I used in the designer 🙂

As I become limited in space to create new sprites, I want to reuse already used locations. Can you please tell me which locations I may use to create the next sprites?


Jeanmilost 2022-03-27 04:09

Ah! And I also reproduced the font for the menu. I saved it in the slot nb. 10


Jeanmilost 2022-03-27 20:46

@nathanielbabiak Hello, here is a small piece of code you can use to switch smoothly between screens if you want 🙂 I also released it today for everyone. Hope it may help 😉

Fader In Out.nx | Open in app
2022-03-27 20:46

nathanielbabiak 2022-03-28 01:48

Hey good evening. Sorry I fell of the face of the earth recently. My work gets pretty hectic sometimes. I've needed some time to hit deadlines, haven't had the mental capacity after work to focus on this stuff. I'll be back to this in April. Sorry again for the delay.


was8bit 2022-03-28 04:40

@jeanmilost, I love your fader :) although not directly for the purpose of fading the screen... playing with it at the slow speed really sparks some ideas for other uses :)


Jeanmilost 2022-03-29 00:37 (Edited)

@Nathanielbabiak No problem, see you in April 🙂

@was8bit nice, feel free to use it for your own purposes. I'm curious about how you will use it 😉


was8bit 2022-03-29 04:35

@jeanmilost, thanks so much :D


McPepic 2022-03-30 20:50

@Jeanmilost I hope you don’t mind. I’ve been messing with your game and optimizing character memory. I’ve had to fix up the map because I moved stuff around. I thought that I should probably ask you if it was ok to optimize your program a bit before I continue.


Jeanmilost 2022-03-31 01:37

@McPepic For me everyone is welcome on this project. However I don’t take care of the programming and memory optimization part, this task is currently handled by NathanielBabiak, I’m just providing the graphics and the music 🙂

The best would be to ask to NathanielBabiak directly about that, but he told me that he will be busy until April (see above). But if you’re patient, let him come back and respond to your answer.

Anyway thank you for your interest on this project. As I said, any help would be welcome.


nathanielbabiak 2022-03-31 14:22 (Edited)

Y'all please feel free to use whatever you'd like! :)

We're all posting under the terms anyway... You know I've not actually been asked permission before? But yeah, please feel free to use anything I post in any way you wish.


McPepic 2022-03-31 14:45

@Jeanmilost I realized that by moving all the animated frames to a separate ROM, several the game becomes much easier to code. Characters can quickly and easily be swapped individually into character memory and you don’t have to change where sprites are drawn from. This also clears up character memory a lot, so you can add more. I was also able to fit your font set into character memory, so you don’t have to swap that in during run time. I’ve already worked out all this. From there, the background does need to be redrawn because the characters need to be moved around.


nathanielbabiak 2022-03-31 17:53

McPepic,

That is 100% exactly the path I had started pursing (in the uploads above). Any chance you're interested in taking over the programming of this project? (And re-drawing those backgrounds so that Jean can build more levels?) As far as the game engine goes, I don't think there's anything more complicated besides what you've already described. (Just make sure the animation VBL interrupt doesn't exceed the 1152 clock cycle limitation, effectively limiting the game engine to around 55 animated characters.)

I hate to back-out of a commitment, but my professional work is so up-and-down and I'm rubbish at the non-engine side of programming... It's yours if you want it.


McPepic 2022-04-03 13:37

Hi @Jeanmilost! I have moved around the characters in the ROM and now have 2 areas redrawn. Just so you know, I’m working on a game jam project in Unity, but I will try to have this game fixed up ASAP.


Jeanmilost 2022-04-03 15:40

@McPepic so you’re an Unity user too?😀I love this game engine! I myself using it to create a small game on my own, which I think to publish on my itch.io page when ready. Is your jam also on Itch? If yes, please tell me, I’ll take a tour!

About the above project, thank you for your work. Feel free to work on it when you want (and when you can). I’ll continue to create graphics and sounds soon, I just need to know where I may create them, to facilitate the life of everybody🙂If it’s OK for you I’ll create them where I can in my current project file, and publish updates every time there is something interesting, then I’ll let you move the resources where you want. Or if it’s better for you, you can provide me a file in which I can continue to create the graphic resources. Just attach it to this thread.


McPepic 2022-04-03 19:18

If you’re interested, I post all of my games on itch.io. Same username if you want to check it out. The game jam just started and is called the black and white jam. The idea is that you only can use 2 colors and the theme is “loop”.

At the moment, I’m just redrawing the backgrounds before I reanimate the sprites. I have the animated characters in a separate ROM and have been moving them around by copy-pasting the hexadecimal. Once I finish working on the backgrounds, I can send back the project for you to edit (and tell me how poorly I placed the graphics in the ROM).


McPepic 2022-04-03 21:37 (Edited)

I’ve finished redrawing the background. The UI needs to be fixed still. Would you be ok with doing this? The sprites are also glitched out. What needs to be done with that is you can have them just point to where they’re stored in the default ROM. Then, during run time, I’ll make it so that they properly animate by swapping in data from a separate ROM.


McPepic 2022-04-04 14:53

It looks a bit broken at the moment. The UI needs to be fixed and the sprites need to be set to their new positions in character memory. I’ll take care of the animation once you fix the graphics. :)


nathanielbabiak 2022-04-04 15:12

Good deal. My insane work hours seem to be stabilizing, I can take care of the graphics after work today.


nathanielbabiak 2022-04-05 06:34 (Edited)

Evening,

It's attached. Let's lock the main characters (except those clearly marked as available), what a pain that was (and a huge thanks to McPepic for optimizing the tile layouts). I've trimmed-down the game engine to keep it bare-bones - there's plenty of tokens/ROM available for additional stuff.

Jean, there's two subs to add the fade in/out code if you want.

McPepic - I'm not sure if you saw this post, but the animation was done already (although that post is now out-of-date). I'd think it'd be faster/easier to use a few extra bytes of ROM rather than optimizing the tile layout and manually entering character numbers/addresses, but feel free to revise it if you'd like. In any case, there's plenty more to do...

Some rambling thoughts:


McPepic 2022-04-05 17:35

I modified the collision to work cell-by-cell. I also noticed that when you move into the fourth area, the player almost always gets stuck. I think that’s because of where the ship spawns in. There are also a lot of random crashes while you’re going through the level.


nathanielbabiak 2022-04-05 20:06

Nice! I feel like at this point each of the subprograms can be improved incrementally too. I may pick one or another to help out with, hope you and Jean will too.

(Off topic, is there a better word than 'gyroid'? I can't imagine that's correct.)


Jeanmilost 2022-04-06 01:49

@nathanielbabiak, @McPepic, excellent work! I’m a little busy these days but I’ll continue to work on that project soon. Please forgive me if I’m a bit absent.

@McPepic I followed you on Itch.io 🙂


Jeanmilost 2022-04-06 01:54

@nathanielbabiak about the Gyroid word, on this page there are the names of the enemies, perhaps this may be useful?
https://nesmaps.com/maps/Cybernoid/sprites/CybernoidSprites.html


Jeanmilost 2022-04-06 01:58

And here is a full map of the 1st level:
https://www.c64-wiki.com/images/7/75/Cybernoidmap1.png


McPepic 2022-04-06 16:15 (Edited)

So, to make sure we don’t all modify different versions of the program at the same time, can we just mention if we’re currently editing the last posted version? That way, we won’t have to go back through and fix the program every time someone makes an edit.


Timo 2022-04-06 16:24

Just put it on GitHub :)


Jeanmilost 2022-04-08 01:12

Good suggestion. I may put the file on my github if it’s ok for all?


nathanielbabiak 2022-04-08 01:23

definitely!


Jeanmilost 2022-04-09 02:39 (Edited)

I committed today the latest version on my Github, here:
Https://github.com/Jeanmilost/LowResNX.git

The file is available in the Shared Work/Cybernoid folder.

Since now I’ll monitor this repository and apply any incoming pull requests ASAP.


Log in to reply.