Jump to content
IGNORED

Gosub/Super Pro Gosub Post Mortem


Tarzilla

Recommended Posts

I've been going through my many folders deciding on what games I'm going to finish in 2018 (and looking for where I put the 4th game we are going to use for IntyBASIC Showcase Volume 2)

 

It reminded me that I wanted to do a post-mortem for the game that I put the most time into...Super Pro Gosub.

 

I did a few things I'll never do again, so this post will highlight some of the tools and workflow I used to make Gosub a game I would want to play.

 

I can't remember when Rev of Intellivision Revolution asked me if I would help him get Gosub ready for a cart release but it would have been late 2015, if I recall. Unfortunately I had an opinion about value, expected game design methodology, and what a customer should be entitled to for a release that people pay $60 or more for.

 

Lots of cart space left, a more polished release would have a bunch of things:

 

A reason to play, better scoring, high score, a reason to keep going (carrot and stick etc,) intermissions with a story, more variety, player customization, skill levels and so on.

Rev said something to the effect of "show me, don't tell me"

So, in no real order are some of evolutionary steps of Gosub to Super Pro Gosub

 

 

1) The Map Menu Screen.

post-38229-0-58401300-1514863613_thumb.png

 

I wanted a way to replay certain maps and show off the graphics of the Intellivision. Above are the two quick ideas I threw out, Rev wisely chose the right hand one. It gave a more visual idea of zones (including that prerequisite...snow)

At some point I added animated indicators that the Zone was open (having unlocked it from completing the previous 10.)

A benefit of having zones is that you can replay completed zones which led to the idea of giving lives to the player, instead of the arbitrary 3 tries per level in Gosub. This leads to a risk/reward scenario because I wanted to know what was in those damn chests you had to touch to complete each screen. I also wanted the items to have a purpose, leading to the creation of the compass item, so you could exit back to the map to replay some easier levels to build up lives. How to build up lives? Well, giving a free one at the end of a zone or level would be arbitrary, how about one of the random items in a chest be a free life?

 

So the various items began evolving.

Rev didn't like that you couldn't stop the motion, I was just going to use an unused button to let the less skilled player stop, but quickly realized that would be too easy so I made the anchor another item that you find and have a limited number of uses for. That resulted in another issue, namely that the Octopus would only move if the sub did. Rather than re-coding the behavior I got the idea of adding more critters to avoid as you get farther in the game and that ignored the anchor. That led to the creating of the other critters and the story and intermissions and whole story fell quickly into place.

Below is the basically final map screen as seen in paint.net, each zone is a layer, as is the grid.

post-38229-0-53424700-1514864958.png

 

 

2)Make some noise.

I wanted a lot more audio so I created a bunch of new short tunes, Chris also created the nice loopable map screen music.

I have zero musical bones in my body so I had to resort to hand converting notes from Synthasia videos from youtube. Here is a couple of examples:

post-38229-0-83006800-1514864588_thumb.pngpost-38229-0-61730100-1514864596_thumb.png

 

Fortunately I've created better ways of converting MIDI files for my use so the task is much less onerous now.

 

3)Reward the player with new stuff

Otherwise known as carrot-and-stick I wanted to see new stuff as the game progressed, not just new mazes. A common game design technique is bonus levels. I decided that every 5 levels you should have a bonus level to allow the player to get some more treasure, especially if the random chests haven't been lucky.

At first I had a simple shoot the octopi as they were falling game to get random items, but the story I was going to tell in the intermissions conflicted with that. The next idea was Slot Machine.

 

First stab was this:

post-38229-0-85599700-1514865522.png

I can't remember why I didn't like it, probably because a giant octopus with prizes for eyes didn't make sense ;) but a sunken temple or ruin did.

 

Below is the evolution of the skull slot machine:

post-38229-0-07951500-1514865677.gif

Notice how it changes as I adjust to card boundaries and re-use cards so I still have detail but also freeing up some to use for the octopus arms inside the eyes as they flick the prizes out. Initially I was going to give 3 tries, but decided getting random coins in the level chests would add a randomness to the over all game. To be fair to the player tho, if you hadn't found any coins, they would at least get one try...and might be rewarded more by the slot machine.

 

To be continued.

  • Like 10
Link to comment
Share on other sites

Part 2

4) Intermissions

A story quickly fell into place about the curious Octopus and the mysterious "weird thing." I didn't make sense for the octopus to be talking to himself so along came the guys...Guys..GUYS!!!

post-38229-0-54439100-1514933786.png

Each of the gang used double high cards to get more details. If I had more time I would have used more than 2 frames of animation.

 

I didn't go thru the effort of creating any kind of scripting engine, but came up with a trick to make the speech and thought bubbles easier to manage but I also didn't want to use the default Intellivision font due to it's size.

 

Below is an example of some of the text, in many cases putting 2 letters in the same card.

post-38229-0-41259800-1514933754.png

 

All text is printed using this command

Print color $2600, "\290\291\292\293\294\295\296\297"

During the intermissions I just redefine the cards

Define 34,5,WeirdThing

The bubble is also defined cards, with the speech or thought indicator a MOB

 

5) Levels

The original game had 39 levels, and these were kept but were patched in many cases with things like the plunger to clean blockages, as well, zones were stylized to match the theme of the zone.

Here are the original 39 levels plus the first menu screen that changed radically by the end.

GosubLevels.pdf

 

Breaking up into zones of 10 meant I now had to create 21 more levels to round out the 60 we would need based on 6 zones on the map.

For awhile I was creating new mazes on graph paper but then I built this:

post-38229-0-51285800-1514935360_thumb.png

It let me create really elaborate levels using all kinds of map pieces but the result was to jarring compared to the original 39 so I dialed it back a bit.

 

The level editor is coming in real handy for my original game I hope to finish in 2018.

 

6) Jean-Luc to the Rescue

At some point it was decided to use Left Turn Only's JLP board which opened up a whole new world of features, but mainly SAVE support.

A game this long needs to be resumable, For awhile it was saving high score, color and type of sub and the highest level beaten. It proved confusing when entering a zone...should the player be taken to the highest reached? What if the player wanted to replay an earlier level? So I changed the save to save what zones were opened and added the animation on the map to show which ones were open. Another benefit of save support is after you complete the game a variable is set and saved that adds a new menu option to view the intermissions as a complete story. It also unlocks something else ;)

 

To be continued...

  • Like 7
Link to comment
Share on other sites

This space for rent

 

7) Details make the difference

The octopus will laugh at you when you die, it still makes me chuckle when I see it.

Since the octopus was in the intermissions, it didn't make sense that he be killed by your torpedoes like in the original game where the purpose was to murder as many of them as possible ;)

 

Now, the octopus runs away stunned only to come back again from a corner. I also added the quick little score that rises up.

post-38229-0-14032200-1515124359.gif

 

Since his friends are in the intermissions, it made sense to have them in the game part as well.

 

One of the things I think turned out the best is the starfish that guards the chest.

post-38229-0-21767200-1515125149.gif

It only took a few lines of code and uses a circle data table like so:

 

CircleX: Data 0,1,2,3,4,5,6,7,8,9,9,10,10,10,10  ,10,10,10,9,9,8,7,6,5,4,3,2,1,   0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-9,-10,-10,-10
Data -10,-10,-10,-10,-9,-9,-8,-7,-6,-5,-4,-3,-2,-1

CircleY:Data -10,-10,-10,-10,-9,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,  1,2,3,4,5,6,7,8,9,9,10,10,10, 10,10,10,10,9,9,8,7,6,5,4,3,2,1,0
Data -1,-2,-3,-4,-5,-6,-7,-8,-9,-9,-10,-10,-10

Normally CircleWidth and CircleHeight are equal to 1, but by varying them in later zones, the circle becomes bigger in one or both directions, and is randomized in the last zone.

Sprite 6,ChestX+visible +HIT+ circlex(RoamerLoopFrame)*circlewidth, chesty+doubley+CircleY (RoamerLoopFrame)*circleheight, spr06+spr_YELLOW

There is one level that is designed to introduce a "holy shit, I have to move!" factor. Normally the starfish starts moving as the level starts, (unlike the octopus,) this lets you sit an analyze the maze. However there is a level where the starfish will circle right into if you aren't paying attention. This unpredicabilty comes into play later where the circle is random and bigger.

 

8 )Cheat while testing

Each level needs to be repeatedly tested. Program in cheats to help testers play thru, including a few times where I had to test an entire playthru from 1 to 60.

Sometimes cheats stay in the game's final code ;), I'm not sure since I don't have a copy of the final cart, I'll have to dig thru my emails to find the final version I sent to Joe Z. for burning to confirm by the final part.

 

9) Get some help/friends

While I like to think I can do the box art, manuals, and the programming/graphics (but not music as stated above ;) ) I'd never have finished the game for the PRGE 2016 deadline (big thanks to Joe or making the last minute production of the carts!)

 

So thanks to MThompson for doing the manuals, awesome work as usual. If you are working on a game, ask him to do the manual so you can do the programming.

 

 

 

 

 

  • Like 6
Link to comment
Share on other sites

The final chapter

 

In post #2 I mentioned a level editor. Here is a fairly lengthy animated gif of it in action.

 

post-38229-0-66214300-1516743464.gif

It would have let me mix the different zone themes, particularly in the last Volcano zone. Unfortunately if I had used it the way I intended I would have had to go back and recreate every maze because the style change would have been too jarring if I had just used it on the last 10 levels. I didn't want to miss PRGE and it would have meant a proper refactoring on how the levels were stored and rendered. The plan was to save each level to flash then pull the data out of the jzintv flash file then do some sort of rle compression before adding to the code but I changed my mind before even attempting it.

 

I checked the final BIN delivered for burning and I did leave in a cheat, someday I'll reveal it... ;)

 

All in all, I'm really happy with how it turned out, showing what can be done with the Intellivision to make a complete game that has a story and a reason to play to the end; modern features like game saving were a very welcome bonus, all my original games will use this feature along with high score saving where appropriate. After any creative endeavor you will always see things that you could have done better or notice just one more thing you could have added but a deadline like PRGE also makes you evaluate the cost vs reward factor of a change or addition, especially in this day and age where the number of people actually playing the homebrews they bought is so small. About the only thing I'd really do different is get some things in writing up front...I'm glad that I got to see the final product at PRGE, someday I might even get my copies to go on my shelf with some of the other titles I have contributed to.

 

The End.

 

 

  • Like 4
Link to comment
Share on other sites

You'll know if you finished it when you see the

5-Story

option on the menu. This lets you watch the intermissions as one continuous movie.

 

attachicon.gifshot0108.gif

 

Well, it's been a long time since I played, so I honestly don't remember. I'll have to check it, but I know I played the heck out of it! :)

 

I also hope that if you plan to include the Government Waffle Project in the next anthology, that you give it a similar "Super Pro" treatment. :)

 

-dZ.

Link to comment
Share on other sites

Well, it's been a long time since I played, so I honestly don't remember. I'll have to check it, but I know I played the heck out of it! :)

 

I also hope that if you plan to include the Government Waffle Project in the next anthology, that you give it a similar "Super Pro" treatment. :)

 

-dZ.

Please check when you have a minute, I'm generally curious if you finished it since in this day and age I don't believe that many people actually play the new games, let alone finish the ones that have an ending ;)
  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

That level editor looks pretty cool!

 

 

The plan was to save each level to flash then pull the data out of the jzintv flash file then do some sort of rle compression before adding to the code but I changed my mind before even attempting it.

 

BTW, for those wanting to do something like this on a future title, there's a little-known feature in jzIntv called EmuLink. EmuLink lets you make calls directly into jzIntv for various services, one of which is file I/O. You have to enable it on the command line, in order to prevent jzIntv from becoming a vector for malicious cod

 

I put together a couple small demos, including this file I/O example. The rest of the documentation is mainly in macro source files. See emu_link.mac, el_fileio.mac, el_joy.mac, and el_event.mac for an idea of what EmuLink can do.

 

I wonder if it makes sense to extend IntyBASIC to make use of it this interface? Otherwise, it should be possible to write some inline ASM to invoke the emulator calls. It would make writing level editors like this easier, possibly. Easier than pulling data out of the flash image file, I'd hope.

Link to comment
Share on other sites

That level editor looks pretty cool!

 

 

 

BTW, for those wanting to do something like this on a future title, there's a little-known feature in jzIntv called EmuLink. EmuLink lets you make calls directly into jzIntv for various services, one of which is file I/O. You have to enable it on the command line, in order to prevent jzIntv from becoming a vector for malicious cod

 

I put together a couple small demos, including this file I/O example. The rest of the documentation is mainly in macro source files. See emu_link.mac, el_fileio.mac, el_joy.mac, and el_event.mac for an idea of what EmuLink can do.

 

I wonder if it makes sense to extend IntyBASIC to make use of it this interface? Otherwise, it should be possible to write some inline ASM to invoke the emulator calls. It would make writing level editors like this easier, possibly. Easier than pulling data out of the flash image file, I'd hope.

Good thing I mentioned it ;)

 

It sounds like I could directly write the decls of the backtab to a text file on the file system instead of having to parse the screen into flash...interesting and useful, thanks!

  • Like 1
Link to comment
Share on other sites

Here is another sample level i dug up

The bubbles are deadly, but you could try to sneak past them along the lava (knowing that the periscope doesn't have collision detection) but you need to get the key first, which starts off next to the octopus...depending on where this level would have ended up, there might be a starfish guarding the chest.

 

post-38229-0-02944000-1516754596.gif

  • Like 1
Link to comment
Share on other sites

So from a technical standpoint, this level editor is pretty damned cool.

 

But I gotta ask - is it simply building up a tilemap for later export? Or are you "doing" something with other bits, like setting collisions or special actions?

For my purposes it is literally just building the screen, collisions in the game were standard mob to card collisions, so, if you touched anything with the body of your sub you died. The letters specify starting spots of things like the Sub, Octopus, Chest etc.

I don't see any reason it couldn't do more, I just didn't need it.

 

The editor itself isn't really amazing, the cursor over the tile set at the bottom is a Mob, as is the cursor moved by the disc. The side buttons move the selector over the tiles, the third button stamps it in the level.

 

How you ask? Whatever card that is under cursor is just copied to the spot the other mob occupies. I might release the source for reference after I'm done my next game (code named "16" for now) it certainly isn't general purpose but could be modified. I'll be trying Joe's file I/o examples about as soon as I get a couple hours free.

Link to comment
Share on other sites

The final chapter

 

In post #2 I mentioned a level editor. Here is a fairly lengthy animated gif of it in action.

 

attachicon.gifeditorani.gif

 

 

Wow, that's pretty slick! I recall intvnut created a bare-bones level editor for Christmas Carol, back when the plan was for him to design various levels. It wasn't as rich as yours, you pressed keypad buttons to select a tile type and then just move a cursor and pressed an action button to "stick" it on the background.

 

It worked well enough for him to design one level that actually made it to the final version. It's actually one of my favorite levels. I perhaps should find it, clean it up, and release it just for kicks.

 

Anyway, I hope someday you get to make a special "Super-Duper Pro Gosub" with a built-in level editor that lets players save their custom levels into Flash RAM. That would be great! :thumbsup:

 

-dZ.

Link to comment
Share on other sites

Wow, that's pretty slick! I recall intvnut created a bare-bones level editor for Christmas Carol, back when the plan was for him to design various levels. It wasn't as rich as yours, you pressed keypad buttons to select a tile type and then just move a cursor and pressed an action button to "stick" it on the background.

 

It worked well enough for him to design one level that actually made it to the final version. It's actually one of my favorite levels. I perhaps should find it, clean it up, and release it just for kicks.

 

Anyway, I hope someday you get to make a special "Super-Duper Pro Gosub" with a built-in level editor that lets players save their custom levels into Flash RAM. That would be great! :thumbsup:

 

-dZ.

Probably not Gosub but "16" might have a custom zone where the player can edit, save and play a custom zone.

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