Jump to content

Recommended Posts

I’m back with a new homebrew game, where you fend off a viral infection to hopefully build ‘Immunity!’ You play the role of parts of the human immune system, in which you can fling antibodies from a ribosome, and if you neutralize an infecting virus, you can direct a macrophage to gobble it up. But watch out, if any virus finds its way to your cell membrane, it can find a place to latch on, which will increase the viral load and decrease your health! Clear enough viruses from one tissue type and your point of view will switch to another, in the sequence: lung, mucus membrane, bone, muscle, brain, and artery. Within each tissue type, you will find the virus mobility differs, adding challenge to your task. In this demo version of the game, you gain some antibodies each time you clear a virus and additional antibodies each time you clear a tissue type. Completely clear all infecting viruses before you run out of antibodies to win immunity. But if you run out of antibodies with the infection still present, or your health drops to zero, there is a deathly Game Over. Take care lining up antibody shots, as the cell membrane pores continually cycle between being wide open and more closed.

 

This ‘demo’ work-in-progress version of the game is an 8K ROM that I hope you enjoy and help me improve by reporting bugs, gameplay issues, or ideas for the future. I do have a few ideas already to add flourishes to the title screen and main gameplay screens in the demo version. I also have ideas for a ‘full’ version of the game with a second gameplay mode with different kinds of action and strategy. Eventually, if this comes together as I envision, I hope it will be worth making available as a boxed cartridge with printed manual here through Atari Age!

 

Controls: Immunity uses the Left joystick. Press fire (as prompted in the title screen) to begin gameplay. Move the cell’s ribosome Left or Right with the joystick. Press Fire to fling an antibody up, hopefully striking a virus and neutralizing a portion of its outer spikes (which will change color from dark red to yellow to indicate neutralization). Viruses have six zones of spikes. Hitting a virus when it is farther from the cell membrane will cover more of the zones with one antibody ‘shot’, three zones for the farthest, two zones for the mid-distance, and only one zone per antibody when the virus is low and close-in. Note: a flung antibody will be slowed dramatically if it hits the cell membrane or more solid parts of the surrounding tissue, and you cannot fling another antibody until the current either hits a virus or reaches the top of the screen. When a virus is completely neutralized and all spikes are yellow, push Up on the joystick to switch control to a macrophage, which will aligned vertically with the virus. Then use the joystick to direct the macrophage left or right toward the virus,. The macrophage will ‘chomp’ as it moves. If you you engulf and trap the virus by positioning the macrophage directly over it, press the Fire button to completely dissolve the virus and automatically switch control back to the ribosome. Or if you choose, you can switch back to the ribosome without clearing the virus yet by pulling the joystick Down. The game supports (B)eginner and (A)dvanced game options via the Left Difficulty selection switch. In Beginner mode, the viruses move significantly slower, and there are fewer viruses per tissue and overall to clear. The Reset switch will directly take you back to the title screen.

 

Scoring: Whether you’ve won immunity or met an untimely death, when the game is over, the screen will alternate between the title/game over screen and the final gameplay screen, which will allow you to see what your final health level was and how many “breaths” you took before winning or loosing. The breath count is based on time, but when you run out of antibodies, your health percentage is added to your breath tally. Health starts at 96% and rises each time a tissue is cleared, up to a maximum of 99%. Each time a virus latches into a cell membrane, health is lost. Up to three viruses will latch within a tissue type. Each latched virus will replicate into four additional viruses when the tissue type switches.

 

Other gameplay notes: You can fling antibodies “through” (around) latched viruses. Completely neutralized viruses cannot latch into the cell membrane. Only one virus can sweep across the cell membrane at a time looking for a latching site, so if a second virus is present, it will not fully descend until the first virus is either eliminated or latches on.

 

Preview video: A slightly buggier version is demonstrated on my Odysee channel.

 

Let me know what you think!  I hope you enjoy my game theme in our current times!

 

 

immunity_title.png

immunity_antibody_fling.png

immunity_macrophage.png

immunity_latched_viruses.png

immunity_game_over.png

imm_proto_0_6.bin

  • Like 6

Share this post


Link to post
Share on other sites

Implementation notes:

As mentioned before, this is an 8K ROM, using the simple F8 bank-switching scheme. I had hoped to keep it to 4K, but ran out of space before I even had title/end screens and sound. Gameplay is in the high bank and title and ending screens are implemented in the lower bank. Moving the score digit prep routine to the low bank helped open up a lot of space to finish up the game logic and sound effects.

 

Viruses are drawn with both Player sprites in order to have the grayish virus body and red/yellow viral spikes. The two moving viruses are kept in separate vertical strata. Interlace “flicker” is used when a macrophage is active or when a moving virus is low enough to vertically overlap latched viruses. The latched viruses are drawn with player replication to get two or three to appear. If the macrophage is also active for a low virus when there are also latched viruses, a special version of the neutralized virus is drawn that is made from just one player sprite but having alternating colors to still appear to have a body and colored spikes. During the action, most players should not notice this drawing “cheat”.

 

Many on-screen elements are done with PFA graphics, including Health and Breath scores, bar graphs of the viral load and antibody reservoir, tissue texture, cell membrane, and the endoplasmic reticulum base for the antibody ribosome. The cell membrane animation is table driven based on an index derived from the frame count. The membrane will take on a different configuration when at least one virus has latched on, where the middle opening will close completely and the the left and right openings will twitch at a reduced size, representing a “shocked” condition of the cell. Antibodies are drawn with a player missile object. The size and position relative to the ‘line of fire’ are adjusted through an animation cycle to create a rotating Y appearance (to better appear similar to common illustrations of antibodies). There are times in the animation process where the missile is visually stretched due to kernel code limitations and/or the color changes when passing a virus due to the requirement that the player sprite and player missile graphic need to share the same color.

 

Sound effects are driven by the overall frame count. One voice is used for the heartbeat lub & dub sound and the breath sound, while the second voice is used for antibody and virus event sounds. In the non-gameplay screens, the main title theme music and short win and loose music flourishes are implemented with two voices to have a “bass” and “lead” part or simple two-note intervals.

 

I think the screen scanline count is fairly stable, but there may be a few glitches yet to work out if possible. There are some obvious cases when the viruses move vertically, it can distort the PFA drawing of the tissue in the background, making it appear slightly wobbly. While not intended, it sort of looks interesting, so I may leave that as-is. I was considering some additional animation of the background tissue but I probably won’t in this 8K demo ROM. We will see for later!

 

Special thanks to Darrell Spice Jr. for code excerpts such as the score prep routine and object positioning routine, and Duane Alan Hahn for publishing Andrew Davie’s tutorials, and a lot of other great material including sound and music info for the 2600.

  • Like 2

Share this post


Link to post
Share on other sites

Very nice game, like Microsurgeon or Fantastic Voyage but on a smaller scale. Played it for a little this evening and took me a min to figure it out. Great concept, I love seeing games like this that think outside the box and are unique. Look foward to seeing this develop.

Sent from my SM-N960U using Tapatalk

Share this post


Link to post
Share on other sites

Had some fun playing this on my phone. I love the concept!

Share this post


Link to post
Share on other sites
54 minutes ago, ZeroPage Homebrew said:

The game is a ton of fun, what a great concept. I'll be playing it on the next ZeroPage Homebrew!

 

- James

Wow, thanks!  Will you try Difficulty A?  😏 

 

I'll need to get a Twitch login to join the chat.

  • Like 1

Share this post


Link to post
Share on other sites
45 minutes ago, Prizrak said:

Very nice game, like Microsurgeon or Fantastic Voyage but on a smaller scale. Played it for a little this evening and took me a min to figure it out. Great concept, I love seeing games like this that think outside the box and are unique. Look foward to seeing this develop.

Sent from my SM-N960U using Tapatalk
 

 

19 minutes ago, KevKelley said:

Had some fun playing this on my phone. I love the concept!

@Prizrak @KevKelley Thanks to both of you for the words of encouragemet!

Share this post


Link to post
Share on other sites
Posted (edited)
3 minutes ago, Sohl said:

Wow, thanks!  Will you try Difficulty A?  😏 

 

I'll need to get a Twitch login to join the chat.

I'll make sure to play on both difficulties on Tuesday. 🙂 I love challenging myself on the hard difficulties in games, especially if it helps out game mechanic balancing for the developers.

 

See you in the chat!

 

- James

Edited by ZeroPage Homebrew

Share this post


Link to post
Share on other sites
Posted (edited)

ZeroPage Homebrew is playing Immunity on tomorrow's (Tue Mar 30, 2021) stream LIVE on Twitch at 6PM PT | 9PM ET | 2AM GMT! Hope everyone can watch!

 

 

Games:

 

 

 (SET VIDEO TO 1080P60 FOR FULL QUALITY)

 

Edited by ZeroPage Homebrew
  • Like 2

Share this post


Link to post
Share on other sites

@ZeroPage Homebrew  Looks like I better implement a fire-button reset!

 

I think it will be an extended press version so you don’t accidentally immediately restart and miss your chance to see your final results of the just completed game. I can make a little progress bar advance while you hold fire to reset, maybe over 64 TV frames or something (1 second). 
 

Thanks again for showing my WIP and the many kind words of encouragement! 

  • Like 3

Share this post


Link to post
Share on other sites
2 hours ago, Sohl said:

@ZeroPage Homebrew  Looks like I better implement a fire-button reset!

 

I think it will be an extended press version so you don’t accidentally immediately restart and miss your chance to see your final results of the just completed game. I can make a little progress bar advance while you hold fire to reset, maybe over 64 TV frames or something (1 second). 
 

Thanks again for showing my WIP and the many kind words of encouragement! 

You're very welcome, it was a lot of fun playing it on the show and a nice challenge playing it on advanced mode! Thanks for looking into adding the fire-button reset and it's a excellent idea to put in a delay so you don't accidentally restart right after a game over. 🙂

 

- James

Share this post


Link to post
Share on other sites
3 hours ago, ZeroPage Homebrew said:

You're very welcome, it was a lot of fun playing it on the show and a nice challenge playing it on advanced mode! Thanks for looking into adding the fire-button reset and it's a excellent idea to put in a delay so you don't accidentally restart right after a game over. 🙂

 

- James

@ZeroPage Homebrew  I've made an implementation of the fire-to-reset feature.  Seems to work OK, but I want to look for unrelated potential remaining bugs before I make another public demo release.  But here is the reset progress screen.

imm_fire_to_reset.png

  • Thanks 1

Share this post


Link to post
Share on other sites
Posted (edited)

Additional game variation questions  

 

For the full game, I imagine most people including potential customers will want more game variations, but if you have any specific feedback on these options, let me know!

 

1) Two-player game version: One controls the human side (ribosome & macrophage), while the other controls the infecting viruses.  Since the antibodies only shoot on a line, the virus movement may be only changed at certain times, or cannot be changed when an antibody is "in flight".  Perhaps at the tissue change, the human and virus players can swap (player swapping could be an independent game variant too?).  Scoring may be different than in the one-player version, such as viruses destroyed versus viruses created after latching? Or can think of other ways to score the two-player version?

 

1b) Two-player cooperative mode:

  * Two ribosomes fighting viruses side by side, see who gets the most?  Might not want to have the macrophage part then.

  * 2nd player controls macrophage? Maybe the macrophage can nudge a virus into a better place to help the ribosome's aim?

 

2) Single-player as virus: If I implement the two-player mode, it would not be difficult to make a one-player as virus version.  Would people enjoy this mode?

 

3) Intracellular vs. Extracellular vs. Both: Since the beginning when I conceived the game, I wanted to have an "inside" the cell gameplay mode where a "free" ribosome could move around doing multiple things: battle the virus RNA coming into the cell, collect energy and vitamin molecules, and 'nibble' the latched viruses to determine how to make antibodies. I envisioned that this mode would alternate with the "outside" the cell perspective that is now implemented in the playable demo, and what you do in could affect the other.  E.g. if you don't make any antibodies during the intracellular mode, you will not have as many to fling in the extracellular mode.  Would people enjoy having an option to lock into just one of the modes?  That way you could pick extracellular-only and get the current demo version basically, but you could pick intracellular only if you prefer it, or the alternating "campaign" mode that I had in mind from way back.

 

4) Minor variants: I've thought of variants with different strengths and weaknesses, such as:

  * Speed of ribosome - faster or slower movement (but will it be too hard to control?  Might want a bit of accel/decel in motion?)

  * Health robustness - loose health more slowly and/or regain it more quickly

  * Antibody production efficiency - build antibodies more/less quickly 

 

In the intracellular or both variants, the collection of energy or vitamin molecules could also affect the factors in part 4).  Can you think of other variants?

 

Oh, buy the way, I think I'm flipping some colors in the main title & win screens.  This will line up better with the potential box art I have in mind if this game ever gets into the AtariAge store!

 

 

 

 

 

imm_purple_title.png

Edited by Sohl
Updated screenshot, added cooperative mode idea

Share this post


Link to post
Share on other sites

Hi gang!  Just a short update in case you're curious what is going on.  I just fired up my editor and assembler to resume development after a short break.  (I've been side-tracked on some DOS VGA stuff.)  Nothing new to show yet, but I've bitten the bullet to go to a 16K ROM layout (F6 bank-switching).  I still had lots of room in the 8K ROM, but with the new "Intracellular" gameplay mode I will be working on and the other variations I'm thinking about (as I posted about just above), I don't think there is any reasonable way to get it all into 8K.  Not impossible for someone brilliant and super-skilled, but for little ol' me, I need a bit of breathing room!

 

Also during my coding break, I worked on some potential artwork for cartridge label/instructions/box and mock-up of the packaging box.  I'm keeping it under wraps for now, but I think it will be awesome, and that's before anyone with more talent lends a hand!

  • Like 2

Share this post


Link to post
Share on other sites
Posted (edited)

Modest progress this weekend:  Got a very basic kernel running for the "intracellular" (new) gameplay mode.  It has a "free" ribosome that can be moved around the cytoplasm with the joystick.  Also, there are three latched viruses at the cell membrane near the top of the screen in this mode. There will be a bunch of other stuff that can show up in the cytoplasm, so I'm a long, long way from having this playing as intended.

 

Also, based on the discussion in the "Code and Data redundancy when bank-switching" thread, I see the advantages of reorganizing by memory bank usage and moving some code and data around a bit to make things a lot less redundant.  Hopefully this won't take too long or cause too much regression breakage!  

 

 

imm_intracellular.png

Edited by Sohl
Wording for clarity
  • Like 2

Share this post


Link to post
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.

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...