Friday, April 15, 2016

Imhotep Progress - WEEK 06

I'm working towards the release of my new game Imhotep, Pyramid Builder on Steam. As I did for my previous game, I will report on the progress each and every week. Even if there is no progress, the report will be made. This is the best way to keep on track, and fight procrastination.

The game is finished and we have a release data! On May 6th, 2016, Imhotep, Pyramid Builder will launch on Steam.

This week, I added stack frame capture on crashes. I tuned the game. I added a difficulty settings BABY/NORMAL/LEGEND. I added a window icon. And I added price labels for the building types.

A big thank you to the people helping me do the beta test. There is still room to get into the beta test if you want. Just drop me an email if you want to help out.

Saturday, April 9, 2016

Imhotep Progress - WEEK 05

I'm working towards the release of my new game Imhotep, Pyramid Builder on Steam. As I did for my previous game, I will report on the progress each and every week. Even if there is no progress, the report will be made. This is the best way to keep on track, and fight procrastination.

Getting real close to a ship-able product now. As a matter of fact, the first play tester is now playing it, and finding bugs. For the first time, someone else than myself or my little 5 yo girl is playing the game.

Added cats to the game! They follow around humans, and sit and observe every now and then. When you pick them up, they meow!

I added file versioning for saved games. I now adapt the game speed to the display speed, so that running on a 144Hz gamer panel will work properly. I fixed some delta-time inaccuracies, as I was storing game time in a 32bit float, not a double precision float! I wrote a blog posting on why you should use a 4⅙ ms simulation time step.

If you are interested in helping out play testing, send me an email and I will give you a Steam code. Currently I have windows64 and linux64 binaries. OSX64 will be added at some time.

Saturday, April 2, 2016

Imhotep Progress - WEEK 04

I'm working towards the release of my new game Imhotep, Pyramid Builder on Steam. As I did for my previous game, I will report on the progress each and every week. Even if there is no progress, the report will be made. This is the best way to keep on track, and fight procrastination.

I added the restocking of the building stones if a user stops the build at a cell. Improved the initial spawn so that all four characters are visible. Added menu highlighting. Hooked up leader boards for fastest build, largest population, and most silver. Implemented button highlighting. Moved save files to steam directory. I ported the game from Linux to Windows using visual Studio. Upgraded to latest steam API. Auto load on launch, and auto save on exit. Fixed the OSX build. And lastly, I modelled a cat, because my good friend Matt told me a game on ancient Egypt needs cats in it.

Wednesday, March 30, 2016

Visual Studio gotchas

Every time that I try to develop for windows (with Visual Studio), I have a hard time. And I do this so infrequently, that I tend to forget stuff too. I now try to make a windows version of Imhotep, Pyramid Builder. Here I will document some gotchas when developing under windows.

  • It turns out that for 64bit builds that use libSDL2, you need to add some inputs to the linker, being: winmm.lib, Imm32.lib, version.lib libraries.
  • What's up with the '32' suffix for 64 bit builds? Somehow you still need to link Imm32 and OpenGL32 and not Imm64 or OpenGL64?
  • The best way to generate new project files is to copy them from an old project, and edit the XML contents.
  • Don't use a full screen app and a full screen debugger at the same time. If you hit a breakpoint, the apps fight over the screen, and you cannot control the debugger any more.
  • Win32 builds cannot handle functions that take four __m256 arguments. Three is fine, but for the fourth, the compiler craps out with the message "formal parameter with requested alignment of 32 won't be aligned."
  • If my code were to be C++ I could replace with const references to __m256, but this is C code. So I have decided to not build 32bit versions of my game at all.
  • To get rid of the generated .iobj and .ipdb files, change the Linker/Optimization/Link Time Code Generation option to something other than /LTCG:Incremental.
  • Before creating my .exe file, Visual Studio creates a .lib and .exp by the same name. I don't know why. Configuration is set to Application(.exe) so why create the lib?

Friday, March 25, 2016

Imhotep Progress - WEEK 03

I'm working towards the release of my new game Imhotep, Pyramid Builder on Steam. As I did for my previous game, I will report on the progress each and every week. Even if there is no progress, the report will be made. This is the best way to keep on track, and fight procrastination.

Good progress was made this week, again.

I added ixes for the serialization of game state.

I improved the huts, which are now replaced by larger tents that house 10 workers, instead of the 6 in the old huts. These tents have better collision characteristics too, as the workers have less issues path planning around them.

Hooked up Remotery to find out the cause for a slow down. I have not been able to catch the issue yet, though.

Added steam leader board for the fastest pyramid build.

And the biggest new feature: player-designed pyramids! The player now directs the building of the pyramid by marking out the spots on the terrain where blocks need to be deposited. You can also use this feature to build new roadways, and ramps up steep cliffs to create short-cuts for your workers.

Tuned the path planning. The workers are now less averse to climbing slopes. Steep paths are still avoided, but less so. This fixed an issue where the workers could get stuck in a vortex of the path planning flow.

Friday, March 18, 2016

Imhotep Progress - WEEK 02

I'm working towards the release of my new game Imhotep, Pyramid Builder on Steam. As I did for my previous game, I will report on the progress each and every week. Even if there is no progress, the report will be made. This is the best way to keep on track, and fight procrastination.

Lots and lots of progress this week. I added the capability for the player to pick up and drop individual members of the crowd, which at the moment also comes handy when a worker gets stuck during navigation. Added spawning from multiple tax offices. Implemented win/lose conditions: you lose when half your population is dead. You win when the pyramid is finished.

I added steam stats and steam achievements. Currently I have these:

I also added two great music tracks, one for menu music, one for in-game music. Both pieces have a distinct North African vibe to it. So it helps you get into the mood of the Egyptian lands. I must say that adding music to a game prototype does add some legitimacy to the game, and makes it feel more like a complete product.

I've added save/load game functionality. This was a hard one, as I need to track down each little piece of game state, and make sure it stores and restores correctly. It is implemented now, but I'm not sure it's without bugs yet.

And to conclude: I also added sound effects. They are pretty neat. You can hear the workers pickup water, drop water, harvest, drop grain, pickup and drop food, pickup and drop stones. With proper 3D audio using OpenAL. If you zoom out, you hear all the action in the distance. And zoomed in, you hear specific actions.

Saturday, March 12, 2016

Imhotep Progress - WEEK 01

I'm working towards the release of my new game Imhotep, Pyramid Builder on Steam. As I did for my previous game, I will report on the progress each and every week. Even if there is no progress, the report will be made. This is the best way to keep on track, and fight procrastination.

This week has been spent on getting actual game play in. I hooked up the spending of silver on buildings. Here's the hieroglyph that spells silver.

I added scrolling by moving the mouse to the edge of the window. I fixed the OSX build of the game. It looks really nice and sharp on a retina screen. I added emoticons. If a builder is tired and hungry, a sleepy face is used to denote that state.

I created a hiring menu. Once hired, the new workers are spawned sequentially from the tax office. I improved the gradient visualization.

The buildings all compete with each other for deliveries of goods. They also compete with each other in providing goods for pickup. This competition needs to be regulated, as we do not want to swamp or starve one building over the others. To do this, I am using the notion of 'urgency'. I've spent a lot of time this week tuning these urgency levels, so that if a building goes too long without service, it will increase the desirability to the workers.

All these efforts mean that the game has slowly gotten to a playable state. Placing buildings, hiring workers, earning silver are all in, so there already is a game challenge in there. It just needs a lot of finishing up. Win/lose conditions, leader boards, achievements, load and save games, game settings and Steam integration are all still on the todo list. Hopefully I can take some of these on next week.