Second week: it’s starting to look interesting

Hello, another week passed and a lot of progress was made on the Supernova 2 engine. On Monday I started with 4 out of 71 rooms programmed, now I am at around 22 rooms.

There was also a small change in the schedule. Originally I wanted to leave sound to the end, since I think it is the least important part of the engine and it wouldn’t be that bad if I didn’t manage to add it before the end of Google Summer of Code. Because now I am not that worried that I don’t finish the engine in time, I am adding the sound alongside with everything else.

Today I got stuck on pretty interesting problem. I was working on a labyrinth inside a pyramid (it was labyrinth in game but also a labyrinth in code, so I had no idea about the overall layout of the labyrinth). Everything looked quite good, I could walk around and it looked like in the original game. But then I added a special room with puzzle:

and I thought it would be a good idea to actually try if the puzzle works by solving it. So I turned on the game, went to the pyramid and tried to find the puzzle. After like 30 minutes of wandering around with no success I started making a map. So thanks to that after a few more minutes I found the puzzle room. Now I just have to solve it, which is easy, right? It took me like an hour. Not that it was that hard, but while solving, I accidentally swapped 2 similar pieces (third row, second and forth column on the image) and couldn’t figure out what was wrong. Overall I spend like 2 hours just doing this. But thanks to that I have pretty detailed map, so next time I won’t get lost anymore.

That’s all for this week, next week I hopefully manage to finish the pyramid and start working on museum, which is the last part of the game, that will be missing.

Supernova2 engine after the first week

Hello reader, it has been more than a week since my last post and I have the first week of work done.The plan for this week was to create a tool to generate English translation, make a basic engine and make ScummVM assign the Mission Supernova 2 game to that engine.

When I made the schedule for this Google Summer of Code, I planed to use the engine for the first game as a template. I knew the games are quite similar, but I thought I would still have to change quite a lot of the methods and accordingly to that I made the schedule. So far it looks like I quite misjudged the similarities of the games. I started slowly, copying from the first engine only the really essential parts. Then I was carefully as I needed them adding more and more methods with just some little adjustments until I basically ended up with almost identical engine except for the really specific parts (rooms, objects, …). I guess that if I started by copying the whole first engine and deleting what isn’t needed for the second game or reimplementing what’s different, I would get pretty similar result after less time and a lot less work.

The initial schedule was:

  • Week 1:
    • Make tool to generate Supernova2.dat with translated strings and images
    • Make ScummVM correctly detect MS2 game and assign it to Supernova 2 engine
  • Week 2:
    • Implement loading of game files and strings from Supernova2.dat into memory
  • Week 3:
    • Start working on the intro animation
  • Week 4:
    • Finish the intro animation
    • Start working on rendering the first room
  • Week 5:
    • Finish rendering the first room
    • Add inventory, commands and exit map to the screen
  • Week 6:
    • Implement user event handling
  • Week 7:
    • Implement the logic behind commands, exit map and inventory
  • Week 8:
    • Implement Save/Load feature
    • Start adding the rest of the rooms
  • Week 9:
    • Finish adding the rooms
  • Week 10:
    • Add the outro animation
  • Week 11:
    • Add sound

 

  • Week 12:
    • Fix bugs
    • Room to spare

The schedule didn’t work quite as planed, since in the first week, I basically completed the first 8 weeks. I started adding the rest of the rooms and right now I am at 4 rooms out of 71.

For the next week I plan to continue adding the rest of the rooms.

Getting ready to work

Because from today the 3 weeks of studying for exams are over, I can finally start focusing on the project again and give an update on what I want to achieve in the following days.

Before the actual coding starts and I dive deep into the project, I want to take a short brake, so I can recover my sanity after almost non-stop studying for 3 weeks and catch up with my sleep deficit. But still, there are a few things I need to take care of:

  • Updating my fork of the ScummVM repository
My fork is a few months behind the official repository now, this should take just a few minutes.
  • Plan the first week of coding
I have the project planed into weeks in my GSoC application, but I would like to take a few minutes every weekend to think about the task for the upcoming week and divide it into even smaller sub tasks for each day of the week.
  • Maybe buy another monitor
Since I am used to work in 2 terminal windows next to each other (one running vim with the code I am working on, the other one running vim for editing header files, or compiling the project) I cannot fit anything else on the screen, so web browser, IRC client, terminal with man pages or other useful stuff has to be on a different workspace and because of that I keep switching back and forth between workspaces. So I am considering to buy additional monitor because this.
  • Make a script to show plan for the current week
Currently I have a script, that puts a list of important dates, for example deadlines of projects, dates of exams, etc., into my wallpaper (using imagemagick I generate a new image out of the wallpaper and text with the dates), which I am going to use to display the whole plan of the project. Since I want to plan each week into individual days, I want to make similar script to display that as well.
My wallpaper now
  • Maybe start coding a little bit earlier
If I feel like I have everything prepared and am in the mood, I might slowly start coding at the weekend.

Introduction

Hello reader!

I am Jaromír Wysoglad, a student of computer science from Czech Republic.

I have been accepted to work for ScummVM on Mission Supernova 2 engine as part of Google Summer of Code 2019.

I’m looking forward to working on the project throught the summer and give updates through this blog.