The Bear Essentials: Developing a Commodore 64 game – Part 5

Creating Caverns

I wrote about creating rooms back in part 3 of this series and how I began to store the room data in memory.  But of course, rooms in the game have to fit together to form a world in which the character will explore on their journey.

With my game I thought it would be good to split this world into different areas where a number of rooms will be grouped together and have a common theme.

I actually came up with this idea fairly early on, as I always find it easier to play through games when you exit one area and find yourself in a new area that looks completely different.  It keeps the game feeling fresh and encourages exploration.

Pic03

The first map I sketched for the game had 60 rooms.  I picked this number to aim for as I figured this would allow all rooms to be visited in around an hour, and also as this is the size of Miner Willy’s mansion in the first Jet Set Willy game, which is a joy to explore without feeling too overwhelming.

I split the map into eight different areas:  Home, Forest, Cloudy, Rocky, Mining, Jungle, Tunnel and Secret.  However, I soon opted to cut this down to six areas (taking out Tunnel and Secret) when I realised how much work was going to be involved in creating a different look, and ideally, a piece of music for all areas.  With only 64kb to work with, memory was also a consideration here too!

Pic04

The map went through four revisions, until I settled on a final design.

The Home area would be where the player starts and finishes the game.  This leads into the first ‘proper’ area of the game, which is Forest and serves as an introduction as to how the game is played and what the objectives are.

From Forest, the player can opt to exit the area in two places which lead to ‘continue’ rooms, where the player is awarded an extra credit and a new point to start from when continuing after death.  These continue rooms also serve as a break from the game and a hub to which the other areas of the game are accessible.

I decided to keep one special area of the game locked until all others have been cleared in the Mining area.

This area works differently to the rest of the game, and forms the final part of the players journey back to the Home area.  It takes inspiration from Manic Miner and the very first idea I had for the game, which was to only allow exiting of the room once all objects had been collected.  The first room of this area is a not too subtle acknowledgement of this influence!

pic05

Once the map layout was finalised, it was time to start planning the layouts of the rooms.  This was done by sketching each area seperately, and then planning the possible routes through the area that the player may take, joining the rooms together by adding exits.  I found that the feel and difficulty of each area could be affected greatly by adding many exits to give a feeling of openness, or reducing them to give a linear journey.  One way exits were also added, where the exit would only be accessible from one side, by making it too high to reach or using a hole in the floor that the player could only fall through.

Once the possible routes through the area were planned out, this then gave me a decent idea of the platforms needed for each room, and I could start planning the layout and journey that the player would then take through each room.

With the rough layout of the rooms planned, I could then draw them properly on squared paper and mark the possible positions of collectibles and enemies.  With this done, I could then begin entering them as data into my project, and begin testing them.  Testing usually involves seeing how many lives it takes me to get around the room grabbing all the collectables, and then adjusting the positions and enemies speed until I can do it all without losing a life.

With all rooms in the area completed, I then tested the area as a whole and adjusted anything that stood out as too difficult or possibly annoying for the player.

The End in Sight

I had often heard people say that the last part of a project is often the hardest, and I was determined not to let this be the case with my game.  Theoretically, I had already done the hard part, which was re-learning how to code in assembly and building the engine for the game.  All I had to do was finish putting the rooms together and then give the game a start and an end.

What I hadn’t planned on however, was that even though the end was in sight, I just lost the motivation and creative spark to carry on designing rooms.  I kept picking up my laptop and doing a little bit more, and then just ended up staring into the screen and getting distracted.
Eventually, I gave up trying to design the last of the rooms (by now, all areas except Jungle were complete), and started work on the ending, thinking that maybe a break doing something else on the game would help.

Unfortunately this wasn’t the case.  I made some progress on the ending, but I just wasn’t satisfied with the results, and decided to have a break from making the game for a couple of days.  Days turned into weeks, then into months.

December 2016 came around, and I spotted a message on Twitter asking the Pond Software team if any new games would be released for Xmas.

The answer from all of us was no,  but it really got me thinking.

Seeing as the Bear in my game was collecting apples for Winter, it would be a real shame if the game wasn’t released in the Winter season.

This spurred me on to pick up my laptop again and check how much work was left in the game.  I decided to scrap the ending that I wasn’t happy with and crack on with finishing the last of the rooms for the Jungle area.  At least if they were done, it would mean that the core of the game was finished, and I would be able to concentrate on putting all of my creative energy into the bits that would bring the game together as a whole.

pic07

After making a ‘to do’ list and breaking up the rest of the work needed to finish the game, I managed to get the final room designs finished in a few evenings.  This really motivated me, and I started to realise that I may even get the game finished in time for Xmas, which would make for a lovely game release date (and an even better Xmas break!)

The last couple of weeks before Xmas were a bit of a mad dash to get the game completed, and I worked on the game every day: early in the morning, lunch breaks, evenings and weekends solidly.

Somehow, I even found time to cram in some bonus items that I hadn’t even planned before: cameo appearances from other popular C64 characters that award extra lives, a jukebox mode, some simple poems that my wife helped to create to tell the story, a ‘manic mine’ challenge and some codes that could be inputted for various cheats to help with testing.

It all came together with about a week to go until Xmas, so I sent the game off to the Pond Software team and beta testers to gather some feedback.  There were a few bugs found, some very helpful suggestions and the opinion on the games difficulty seemed to be that it was ‘challenging but fair’, which I was quite happy with.

I spent a few evenings madly testing and tweaking, until I was happy that everything was as it should be, and the game was ready for one final full play-through.

I wrote the game to a 5.25″ floppy disk, and tested every part of the game from start to finish on the C64 that my parents bought me for Xmas back in 1991.

On evening of the 21st December 2016, the game was finally complete!

We decided to release the game on Xmas Eve.  I didn’t sleep much that night, as I was madly checking forums, download counts and reading comments and feedback.  I was over the moon that people seemed to be enjoying the game, that it had been completed for Xmas, and that my dream of releasing my own C64 platform game had finally come true!

The game can be downloaded for free from: http://pondsoft.uk/bear.html

Releasing for Real

Xmas was a very welcome break, but I soon found myself back at work on the game, preparing for the planned physical disk release in February 2017.

On completing the game, I found that I had a little spare memory left over, and thought that it may be nice to try to completely fill it all up and release a proper 64k game.  I thought of ways in which I could make the game a little bit extra special for the people who purchased the disk edition, and opted for an in game map feature to help players keep track of where they had been and where there were still collectables to be found.  The feature would be triggered when the game was paused, and gradually expand as the player discovered more areas of the game.

I thought the best way to display the map would be to have a second screen in memory and then change the register that tells the video chip where the screen is located in memory, so there would effectively be two screens in memory and it would be very easy to flick between the two.

However, two problems cropped up when it came to implementing this:  I had used up all of the memory in the bank I was storing graphics in with sprites, characters and the main screen, so there was no memory left here for a second screen.  The other problem was that I also needed another free area of memory to store a second colour map for the new feature.

I ended up having to copy the map feature and colour onto the screen and colour memory every time the game was paused ñ a little more work than I was expecting, but it worked well.

pic13

With the map feature complete, I looked at the free memory I had left and found there was still some left.  I decided that the best way to utilise this would be to add a few extra rooms, which would make a really nice bonus for the disk edition.

I managed to bring the room count up to 64, and this also brought the collectibles up to 350 (the original version of the game had 326, so I was chuffed to finally have a nice round number of objects to collect in the game!)

On final testing of the game, I found that a very strange and intermittent bug had been introduced.  The rooms shown on the map were meant to be red if they had not been visited yet, and green if they had.  However, sometimes when a new game was started, some rooms of the map were already marked as green and some areas of the map not yet visited were already unlocked.

This took quite some time, testing and head scratching to solve and only finally became clear when I sat staring at the game and watching the title sequence.

I had added an ‘attract sequence’ at the start of the game which cycles through the title page (complete with dancing Bear!), the credits page, and then (in tribute to Jet Set Willy) shows some of the rooms in the game from a pre-determined list.

I realised that this strange bug only occurred after watching the attract sequence and that as the rooms were displayed in this sequence, they were being marked as visited by the player.  This was down to something which I added to the code that draws the rooms, so as each room is drawn it is marked as ‘visited’ on the map.

This was one of those bugs that was incredibly easy and satisfying to solve, but difficult to get to the root problem of!

pic14

Once this bug was fixed, I was happy that the game was finally finished (again!) and around 99.9% of the C64’s memory was full, bringing it as close to 64k as I was ever going to get.

I added a new loader in front of the game with a loading screen that I created in a very nice bitmap editing program called Timanthes [http://csdb.dk/release/?id=75871].

The rest of the time in the weeks leading up to the games physical release were spent designing the manual (with my niece, who drew the lovely cover art for the manual) and sprucing up my entry for the Reset 4k Craptastic game competition into a ‘super’ edition to be included on the disk as another bonus.

Super Bonkey Kong was born, containing the original 4k game and another version with better graphics and improved music and sound effects, courtesy of Pond’s founder, Vanja Utne.

The final work on the game (ordering the printing, bonus items, case and designing the inlay) was completed in Norway by Vanja.  I was really blown away by the artwork that Vanja created for the inlay, it really gives Bear some extra character and sums up the game perfectly!

The game started shipping at the end of February, and to keep track of where in the world the game has been sent Vanja has been updating a map, which is amazing to see.  So far, the first batch of 250 copies has sold out and we have just prepared a second batch ready to be sent on their way.  This is mind-blowing to me, for a game that was made for decades old hardware!

The Future

Thank you for joining me on this journey, the messages of support have really helped me to keep going with the project and see it through to the end.

What now?  Well, I have already started work on a new project for the C64, and I have lots of ideas that I would like to try out, but for the moment I’m just having fun prototyping, drawing sprites and not taking on anything too big ñ it’s nice to be having a rest from a project that at times felt like it was becoming too much to finish!

pic18

If you would like to order a copy of the game, or chat about old computers, you can find myself and the rest of the Pond Software team on our forums: http://pondsoft.uk/forum/

Or catch me on Twitter: @zxmutant64

I’d like to thank all of the Pond team (including the beta testers) for their support and help in bringing The Bear Essentials to completion, and a big thank you to Ant Harper for asking me to write this development diary which has really helped to motivate me to finish the game.

7 Comments

  1. Awesome story – I _love_ getting a glimpse from behind the scenes, and I really enjoy your positive and upbeat attitude. Frankly, you really inspire me and if your next project would be a tutorial in assembler development for the C64 I would jump right at it!

    Also, please considering going to Kickstarter for funding your work – as you probably already know, the upcoming and really ambitious Ultima-inspired roleplaying game “Unknown Realm” (https://www.kickstarter.com/projects/stirringdragongames/unknown-realm-an-8bit-rpg-for-pc-and-commodore-64?ref=user_menu) did really well, and I’m positive the team behind it are happy to share any experiences with you!

    Best of luck with your future endeavours – I can’t wait to find out what you have in store for the C64 (and also the C128?) community!

  2. Author

    Thanks so much! Really glad you enjoyed it.
    I would definitely consider some kind of commented source code release in the future for a smaller project, hopefully that would be a useful resource for learners!
    As for Kickstarter: I have supported Unknown Realm, it looks great so far. And I was very happy to find out they supported me too!

  3. Wonderful blog/deb diary on Bear, Graham.

    I’m sure this will inspire many to either make or play.

    You’re a star!

  4. Dev diary even.

  5. What a wonderful story Graham. Truly inspiring.

    I played the free version of your game last night and I was so impressed. Very polished.
    And the packaging. Wow!

    Trying my hand at C64 game development too. (Apple II 6502 exp. only)
    Why I never bought a C64 is beyond me. This little machine rocks!

    Keep up the good work.

  6. Great read from a C64 owner back in the day who only dabbled in coding… Thanks for taking the time to write the journey up.

  7. Hello Graham,

    It is fantastic to see these types of games still being made for the Commodore 64, thank you for doing this.

    In this tutorial you talked about an earlier game of yours — Rock Maze — is there any chance you would be willing to post the CBM project studio files for it (either the original or “reset” version) on github? I’m just starting to learn C64 assembly and I feel like a code walkthough would make a great tutorial for a beginner (Boulder Dash being one of my all time favorite C64 games).

    Thanks again!

Leave a Reply

Your email address will not be published.