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.