Category Archives: Development

Development of the game

Update 84

This week again a lot of debugging but also new animations created for the second level. There is still a lot of work to do for the game to be bug-free but the fun part (design) is finished.

I like to think about the next game, nothing is decided yet and I don’t know which type of video game I will make. However, there are things that are important for me:

  • 2D
  • Focus on art and the storytelling
  • Third-person view

And I will probably do something different than a point and click game, maybe something with more animations. I need to do a lot of practice to have something good, hopefully, there are tools and references to make life easier for example posemaniacs.

Update 83

This last two-week I have found and fixed a lot of bug in the first two levels. But this is far from finished there are more and more bugs coming up each time. I don’t know how much time I will spend on the debugging, but there are far more bugs than expected. This is my biggest project so far, and I don’t have a lot of experiences in programming, so nothing too surprising

This is my biggest project so far, and I don’t have a lot of experiences in programming big things, so nothing too surprising. I have tried again to load DXT textures but it seems I need to change SDL_gpu directly or use OpenGL directly which is very time-consuming. That’s ok texture compression are not absolutely needed, so I am good with using PSD or TGA files for the images.

I am regenerating every sprite sheets because before using OpenCV I have used SDL_gpu and in some cases, the rotated image is a bit blurry.


Update 82

The last level is done! The fire animation is completed, now I am testing the music and sounds effects. For the moment I can’t past the first level, I have discovered nd fixed so many bugs. But I am sure there are more bugs than that, there is always more.

I have finally done a dynamic wrap word system for the dialogs game. I have tried with SDL_ttf before but there was still a bug because the text is printed character by character and the line break was done when the word was not finished to be displayed.

Now with NFont, I am inserting ‘\n’ character before the text is displayed. Here is the part where I insert ‘\n’ char.

Update 81

This week and the previous week I have been job hunting, but also trying to make a realistic fire animation for the game.

I have been trying to use this video taken from shadertoy to make the animation of the fire.

But with that video, I only have a small fire with constant size. I have been trying to merge the fires to have a big one, but it does not look good.

I am playing a little bit with the shader to have something that increases in size over time. I am not comfortable with the maths used the shader: Perlin noise and Fractional Brownian motion. I am still tweaking the shader to have something good, after that, I can record the video and import the frames into the game.

Once the fire is finished I can add the smoke, the smoke is already done with the particle engine.

Update 80

This week I have not worked on the game because I had to finish the CV and I have some health problems so I rest most of the time.

Update 79

More debugging to do in this last level, every day there are new discoveries, new bugs. The dialog is not done yet because this last part reveals a lot of the story.

I have spent some time doing a CV and a motivation letter, the 1st March I will start the job hunting! I am also trying to change my sleep schedule, to wake up in the morning instead of the afternoon.

I think the game still have few months of development, so I think by that time steam greenlight will be replaced by steam direct. But once the development is finished I will focus my time on the marketing of the game and maybe bugs.

Update 78

I have been working on the computer terminal, there is some animations, loading bars that need a lot of tweaking to have a good delay. After that, I have fixed a bunch of bugs and I am doing the last things for the level to be completed.

The game will not be finished the 1st march, I have a lot more polishing to do, add soundtracks, beta test the game.

I have added a lot of new content so the polishing phase is really starting now. With all this content the game will still be short because there are five levels, some levels are bigger than other so I expect the player to complete the levels with this pace:

Level 1 45 min
Level 2 15 min
Level 3 1 h
Level 4 1 h 15min
Level 5 15 min

There are a lot of small puzzle interaction, but I tried my best to make them logic and pretty much obvious once you know what you have to do. I think the difficult part at the beginning is making the first discoveries to understand what to do. There is no tutorial in the game (even for the controls) so you need to make some discoveries by yourself, try things. The game becomes easier after you have discovered some of the mechanism but I tried to add new things along the way to break the pace.

Update 77

This week I have made more content for the last level, a few more things and all the content be in the game. After that, there are some sprites to redo maybe make more animations and a lot of bug fixing.

I still have two weeks full time before job hunting, I know that at the end of the two weeks the game will not be polished enough. Most of the marketing (trailer, screenshots) will be done after the art is complete.

I don’t have the musics for the game yet, so I still have quite a bit of work before having an unpolished complete game. But that’s fine, the game needs to be polished to be ready, and it will be release only if it’s ready. The single most important things for games is quality. Quality takes a lot of trial and error and to do that you need a lot of time. The time can be reduced with experience, but since it is my first “big game” I have to go through almost all the errors. Hard work will eventually show someday…

Update 76

A lot of bug fixing this week and optimization, I have replaced the unordered_maps with less than 35 elements with vectors of pairs.

Q: Where did you find the number of 35?
A: Should you be using something instead of what you should use instead?

This change introduced some new bugs with the lifetime of some objects, and invalid iterators, but overall the speed and the memory footprint is improved.

The level progress well, but there is still a lot of work before it’s complete but mostly the game is at the end of its development. Let’s compare the number of lines of code of the current project vs the old one.

Some of the libraries in C are included in the project such as NFont, SDL_FontCache, theoraplay, and the code generated with glLoadGen. The c++ code has 17269 lines instead of 7360 lines at the time I was working on the big level 4, and I have added a lot of content since then. The functionalities are in C++ and the content is in XML, as you can see now 5476 lines instead of 460 lines. The project becoming more and more complex and “heavy” the debugging is becoming more difficult, but hopefully, I have also improved my skills since the beginning of the game.


Update 75

It seems TGA and PSD are the fastest image format read by stb_image. TGA is an old uncompressed format with support transparency layers, uncompressed images have the same size on the disk and in memory. PSD is compressed with RLE which is really simple and fast to decode however it do not compress a lot the image. I think I will be using PSD for the most sprite sheets now.

For my sprite sheets generator, I have had some problems with CImg trying to generate a sprite sheet with a lot of small images. So I now use OpenCV for the generation which seems to be the standard for computer vision. OpenCV is quite heavy, but everything is reliable and really fast compared to CImg.

The last level progresses a little bit each day and becomes bigger and bigger. This level has a lot of big images, for example, the level objects and one map need three sprite sheets. So maybe I will split the objects along maps more to balance the loading time and improve memory footprint.