Jump to content
IGNORED

Intellidiscs: Weekly development log


Ryan Witmer

Recommended Posts

I guess it's time to formally announce my next project.  I've posted about this on the Discord server a couple of times, but this feels more official.

 

I would put this in the 5200/8-bit programming forum, but that's not really a place where 5200 people hang out, it's just full of those weird computer people, so I'm putting it here so people that might care can see it.

 

Intellidiscs

 

This one has been on my to-do list since before my first game, Ratcatcher.  Tron: Deadly Discs is one of my favorite Intellivision games and I really want to see it on the 5200, so I'm going to make it happen.

 

Here's a very early screenshot:

large_tron.png.244b3a85d8d04a81ebac25560b3886e5.png

 

The plan (in part)

 

I'm going to attempt to recreate the Intellivision game play as faithfully as possible.  If you're familiar with the original game, you can see that I'm not trying to copy the look of the game.  I want my version to more accurately reflect the aesthetic of the Tron movie.

 

I'm planning to do some interesting things with the controls.  I have three different control schemes in mind, and I plan to support all three.

 

  1. Keypad Style:  This is a copy of how the Intellivision game works.  The numeric keypad is used to throw your disc in eight directions, the 5 key activates block/duck mode.  One interesting aspect of the Intellivision game was that you couldn't throw your disc while moving.  To the best of my knowledge, this was a technical limitation of the controllers.  They couldn't read disc and keypad input at the same time.  The Intellivision version worked around this by allowing you to use the keypad on the second controller to throw your disc.  The 5200 doesn't have this limitation, so you will be able to throw your disc on the move.  The 5200 keypad has its own weird issues to deal with, so some small aspects of the Intellivision's control scheme will be changed.
  2. Berzerk Style:  This is also how the 2600 version of the game functions.  You throw your disc by pressing a direction and the lower trigger button.  The upper button will be used for block/dodge.
  3. Twin Stick:  Got a joystick coupler?  Play the game Robotron style using one stick to move and the other to throw your disc.  I'm not sure exactly how I'll handle the block/dodge functionality in this mode.  I'm thinking that pressing any keypad key will do it.  To be perfectly honest, I think this control mode will not be all that effective but it's so cool I'm going to do it anyway.

 

What isn't in the plan

 

I'm not going to make any additions or changes to the game.  My goal is to port the original in a reasonably accurate fashion, not to enhance the game in any away.  If you don't like the Intellivision game, this version won't change your mind.  However, I do have a few secret plans that will be revealed when the time is right.

 

What is this thread for?

 

I plan to post to this thread once a week to discuss what's going on with the game.  At some point there will probably be some videos, but that's quite a ways off.  During the week, I work on the PC version of Magical Fairy Force.  This game is my weekend project.  It's something I can work on to get my mind off of my main project.  Posting weekly updates here will encourage me to do more work on it.  Still, this is my side project so progress may not be rapid.

 

What does it do so far?

 

Not much!  My early efforts have been on the disc movement.  Right now you can move your character and throw your disc using the keypad.  The complete throw/return/catch cycle is implemented, although the details are still rather clumsy.  I've already had to make one change to the Intellivision control scheme here.  In the original game, you could press any of the throw buttons while your disc was in flight to cancel the throw and recall it.  I've implemented this, but with one small catch: you can't use the button you pressed to throw the disc to recall it.  This is because of how the 5200 keypad interrupts operate, precision keypad input is basically impossible and this is the only reasonable choice.  It's not a particularly onerous change.

 

The enemies pictured in the screenshot don't function yet in any way.  I just put them there to look cool.  I also haven't done any player animation.  You can run around the arena, but you just slide around.

 

That's really all I have to say for now.  I'll do some more work tomorrow and hopefully I'll have something interesting to report.  I'm really looking forward to making this happen and would appreciate some testing help when the time comes.

  • Like 13
Link to comment
Share on other sites

I spent the morning playing around with doors.

 

large_tron.png.146c251a2a704d1193e49542e0a2018f.png

 

Here's a first shot at an open and closed door on the back wall.  I have another playfield color to work with and I'm going to change the color of the open doors at some point.  The doors themselves don't function, but I do have all of code in place to create any arbitrary door.

 

The doors on the other walls are far less interesting.

 

large.doors..png.7aad9323a10078e7f641f7426fd8df86.png

 

This is probably where I'm going to stop for this weekend.  It's Sunday afternoon now and I feel like doing things that don't involve writing code.  I still need to figure out what to do next.  Possibilities are working on the actual door logic (responding to disc/player contact, warping to the other side of the screen) and looking into implementing the blocking mode.  I have all week to decide!

  • Like 3
Link to comment
Share on other sites

Just wanted to do a little bit of "thinking out loud" about this game.

 

When I do a game project, I always try to identify THE PROBLEM.  What is THE PROBLEM?  It's the one thing that I need to get right, or else there is no game.

 

The best example of THE PROBLEM I can give was from RealSports Curling.  It was possible, however unlikely, for sixteen rocks to be active at the same time in that game.  So THE PROBLEM for that game was how to actually put sixteen rocks on the screen in a way that would work.  The 5200 only offers eight sprites, and four of them are two-pixel wide missiles.  Those wouldn't work at all.  The solution was to build all the rocks out of the playfield.  The player sprites actually make up the rings, and the missiles are used for various vertical lines.  The rocks are, in effect, a really fancy moving background.

 

I first got the idea for a Deadly Discs port way back before my first game, and I quickly identified THE PROBLEM even back then.  In the Intellivision original, there are four enemy types and they're distinguished by color.  Normal dudes are light blue, armored dudes are purplish, leader dudes are dark blue, and the orange dudes show up at 1,000,000 points.  In addition to this, there are four types of enemy weapons.  Normal discs are dark blue, double-damage discs are kind of a dark purple, seeking discs are white, and the orange dudes have white staff things.

 

The 5200 provides eight sprites.  Four of them are 8 pixel wide "players" and the others are 2 pixel wide "missiles."  On the surface, this seems perfect!  There are four people on the screen at once, each has a small weapon!  THE PROBLEM lies in the colors.  There are two ways to do color for the sprites.  Normally, each player has an associated missile that shares its color.  There's also something called "fifth player" mode which allows you set the four missiles to an independent color, but it's one color that all four missiles share.  The 5200 doesn't have enough sprite colors to do this the way the Intellivision does.

 

So, what are the possible solutions to THE PROBLEM?  The first decision to make is whether or not to try to preserve the color-coded approach that the Intellivision used.  It's worth mentioning that the final orange enemies don't throw their weapons, they're just decorative, so there's less of a need to make a solution work for those guys.

 

If the is answer is yes, the color coding should be preserved, how can it be done?  I have one solution and I don't like it.  Flicker.

 

I could flicker between the players and their weapons, changing the color every frame to simulate 8 sprite colors.  Against the mostly black background of the game, this might not actually look that bad.  It also has the advantage of being really easy to do.  The disadvantage is that when flicker does look bad, it looks really bad.  It also breaks hardware missile-to-player collision detection, since the players and missiles will never actually be on-screen at the same time.  I'm not sure I'm willing to give that up.

 

Any other approach that I can think of involves dropping the Intellivision's color coding, at least in part.  This allows some other possibilities.

 

It's clear that the enemies can be color-coded or the weapons can be color-coded, but not both.  So how to differentiate the things that aren't color-coded?  Make them look different.

 

This leads to two approaches:

  1. The enemies all look the same, but are colored based on their type.  The enemy weapons are shaped differently based on their type.
  2. The weapons all look the same, but the enemies are colored based on the type of their weapon.  The enemies themselves look different to represent their type.

Option 2 seems to be the best.  The players are 8 pixels wide, so there's a lot more room to come up with different designs to make them distinguishable.  There's only so much you can do with a 2 pixel wide weapon sprite.

 

So what will I do?  I haven't decided yet.  I'm not exaggerating when I say that this is a problem that's been on my mind for over six years.  I was hoping that after a few 5200 games I would have come up with a good answer, but I'm pretty sure that answer isn't coming.  Now that I'm committed to doing the game, I'll finally have to make a call.  I'm leaning toward different enemy designs, colored based on their weapons.  Time will tell, I guess.  Sometimes the way these things turn out surprises me.

  • Like 1
Link to comment
Share on other sites

I love the idea of this coming to the 5200 and a slightly different layout could add a little life.

 

A couple of things to note from the video description and notes.

1. The attack waves are not always in sets of 3.   This is the case only if all enemies as derezzed.  Other wise, 1 or 2 can spawn randomly.

2. Blocking is a HUGE part of the Intellivision game.  With that said, when the white tracking disks are blocked, the disk returned to the enemy is no longer white/tracking, but a standard disc.

 

I get what you are saying about 8 direction movement, but I would love you to take advantage of a 5200 strength... Most of the time the analog stick is a weakness ( to me at least ).

Let me enjoy my GOLD upgraded controllers!  LOL

 

Whatever design choices you make are cool with me, I will certainly play it when available.

 

This could be incredibly annoying???  But one of the tricks used in the movie to get past a color sifting problem in the film was to have electrical "noise" in the background to hide the shifting.

Maybe you could make the sprite flicker a "feature" of the game?  Though flicker adds other complexity.

  • Like 1
Link to comment
Share on other sites

15 hours ago, 1980gamer said:

1. The attack waves are not always in sets of 3.   This is the case only if all enemies as derezzed.  Other wise, 1 or 2 can spawn randomly.

I know, I just wanted to keep things simple for this video.  In my mental model, the follow on guys are part of the same wave.

15 hours ago, 1980gamer said:

With that said, when the white tracking disks are blocked, the disk returned to the enemy is no longer white/tracking, but a standard disc.

That's really interesting.  I'm not sure if I knew that.  I'll need to spend a bunch of time with the Intv game to confirm this.  Not complaining!

 

Today I accomplished what I call the "contact jam," the jamming of doors by running into them.  That was my goal for the day, and pretty much the weekend.  No pictures or anything, because it doesn't really look like anything.

 

Next week I plan to get started on the enemies.  I have some plans for this, but there's a lot of groundwork to put down so I may not have any visible results for a while.

Link to comment
Share on other sites

I think this will be fun to play.

 

Yes, when you pass the 1,000,000 points and the Orange / Pain Stick ( death stick ) guys come along...  You kind of want the Disc enemies around.

But the tracking discs and heavy damage discs are just too "Deadly".  So you block them and they are standard damage and you can take a hit or 2.

 

Then just chase the Orange guys down. 

Link to comment
Share on other sites

Why not have 360d movement and 360d disc throwing?

 

The enemies do come out three at a time but if you take too long, a replacement comes out one at a time.  So technically you could be in the first wave forever if you always leave one enemy alive; and you'll never see a recognizer.

 

And you can't open a door on the opposite side by walking through the opposite door.  You have to first open both doors.  But if the opposite door is open, you can walk through to the other side.

Link to comment
Share on other sites

41 minutes ago, mr_me said:

Why not have 360d movement and 360d disc throwing?

So Throw in the direction you are running like the 2600?

I never really liked that about any 2600 game.  I really liked dark caverns, but I liked Night Stalker controls better. 

Strange thing, I never noticed the disc and button on the same controller issue...I guess I just instinctively let go of the disc for a split second to throw/fire.

 

I do remember some strange things happening playing NBA when running NNW and Blocking a shot at the same time... The guy would sometimes jump off the screen.  RESET required...

52 minutes ago, mr_me said:

And you can't open a door on the opposite side by walking through the opposite door.  You have to first open both doors.  But if the opposite door is open, you can walk through to the other side.

I guess I need to play some TRON... I don't remember this.  But typically, the opposite doors never really opened consecutively.  Plus my first goal, before derezzing an enemy was to open the doors.

Then I would try to get all 3 quickly so a whole set of doors might open.  Didn't you always hate when they spawned from the same set of doors a few times in a row to start a game!

 

Link to comment
Share on other sites

No, using Ryan's control method three you could run in any direction and throw in any other direction 360d.  Control method two, stand still and throw in any direction 360d.

 

It's probably not true but I have the impression the enemy comes out the side that your closest.  So I'd hang out against the wall opposite open doors.  If the enemy comes out there I just step through to the other side.

  • Like 1
Link to comment
Share on other sites

13 hours ago, mr_me said:

Why not have 360d movement and 360d disc throwing?

This could certainly be done with the twin-stick control mode that I plan to support.  The problem is that I feel like control and fire accuracy are going to be awful on the 5200 sticks.  I might try doing this just to see how bad it really is, and perhaps I'll offer it as an option for the brave.

13 hours ago, mr_me said:

And you can't open a door on the opposite side by walking through the opposite door.

I just confirmed that you can do this, assuming we're talking about this same thing.

Link to comment
Share on other sites

Did some work this morning.  First, I worked on generalizing the character movement code.  As it was first written, it only handled the player's character and I wanted to be able to use the same code for the enemies as well.  It's not 100% there, but close enough for now.

 

I also started working on the enemy wave spawns.

 

large_tron.png.2d157721e1f85f9d468480d4a7a4db9b.png

 

Here's a wave of freshly spawned enemies with their associated doors.  All four sides work, but the spawn process is still stupid at this point.  I need to work up logic to check how many enemies are alive so it can ignore or spawn a new wave/single enemy as appropriate.  Right now it just spawns a new wave every two seconds.  I also need to work on the door spawning logic, which only works for the case where there are no doors open at the spawn location.

Link to comment
Share on other sites

Have you gotten to the point yet where the big guy comes out that tries to catch you with like a feeze area while all the doors are being put back Your goal is to hit his white rotating eye so he will stop putting your doors back Still can’t wait to play this!!!! Looking great! Thanks for your efforts on this!!!!

Link to comment
Share on other sites

7 hours ago, Indiana Quack said:

Have you gotten to the point yet where the big guy comes out that tries to catch you with like a feeze area while all the doors are being put back Your goal is to hit his white rotating eye so he will stop putting your doors back Still can’t wait to play this!!!! Looking great! Thanks for your efforts on this!!!!

Not yet, it will be a while before that thing show up!  I did do some of the ground work for the door repairs though.

 

Didn't get as much done as I hoped this weekend, just really tired.  Most of what I did was behind-the-scenes type things that I can't post screenshots of.  I have the enemy spawn system pretty well fleshed out, handling most of the different cases.  The next step is to get the enemies running around.  I think my first major milestone will be have the basic enemies fully functional, minus their weapons.  Just get them running around, dying, and spawning in the correct manners.  I may post a test ROM at that point just for fun.

  • Like 1
Link to comment
Share on other sites

Today I got the complete enemy spawn logic worked out.  Here's a picture, for what it's worth:

 

large.tron_spawns.png.e45bdd29c39d7e8582be052e26fc0c73.png

 

You can now kill the enemies with your disc and the follow-on enemies spawn like they should if you don't clear the wave in time.  Fresh waves also appear once you've cleared the game grid.  I noticed from observation of the Intellivision original that the first reinforcement enemy always spawns from a different side than the one the original wave entered from.  After that, further reinforcements appear anywhere.  I'll keep playing the original version (yay!) to confirm that this actually is the case.

 

I've also tweaked some of the speeds and angles.  The diagonal movement is on a better angle now and the disc flight is much faster.  The pursuit algorithm for the disc return is still really bad, but it's working for now.

 

Later this weekend I hope to have enemies moving in some fashion.  They'll be pretty stupid, but it will be something.  If I pull this off I'll probably make a new video and maybe even post a test ROM for anyone that wants to fool around with it.

  • Like 1
Link to comment
Share on other sites

I made another video featuring early enemy movement and spawning logic.

 

 

While reviewing the video I noticed that I've managed to introduce some door bugs along the way.  I'll work on fixing those tomorrow, and I might post a test ROM so people can run around and kill non-threatening enemies if they feel like it.

 

  • Like 1
Link to comment
Share on other sites

Alright, got those door bugs fixed.  I should also mention that further play research into the original game showed me that I was wrong about the first reinforcement enemy always entering on a different side than the initial wave.  That's great, because I was able eliminate a bunch of code that handled that and simplified the enemy generation considerably.

 

I'm attaching a build here for anyone who wants to play around with it.  There's an identification string 256 bytes from the end of the file that says Preview build 1, 8/23/2020.

 

This build isn't really a game yet, just a test.  You can run about with the joystick and throw your disc at the endlessly spawning baddies.  The enemies have no weapons.  It should be amusing for a couple minutes.

 

 

intellidiscs.bin

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