DevBlog – Checkpoints, portraits and more checkpoints

BlodyavengerCourier of the Crypts, Development7 Comments


I have some great news for everyone that kept dying and cursing in the Courier of the Crypts demo preview – checkpoints! I’ve implemented them and they are working now more or less. I also have some great news for those that don’t like checkpoints. Matej did an impressive update on the portraits as well.

In this Development Blog post:

  • Checkpoints and all the problems I had implementing them (technical details)
  • Consequences of dying and respawning at the checkpoint
  • Portrait updates and dialog preview
  • Ghosts arrival changes
  • Other changes / updates

 Checkpoints and all the problems I had implementing them

cotc_checkpointA lot of people were complaining about the lack of checkpoint feature in the game and there’s a very logical explanation for that – it’s not that easy to implement them. One of the simple solutions would be to respawn player back at the checkpoint when he dies but that wouldn’t work in this game. Good example is a boss room with a checkpoint infront of it. When you die you can’t get respawned back at the checkpoint and leave the damaged boss there and all other states like they were. I need to reset that. What about the room where floor falls apart? I can’t leave the hole in the ground which player couldn’t pass…To cut it short, I had to save all the information what has changed before reaching the checkpoint, which items doesn’t exists anymore etc.

Checkpoint debug room. This is a loaded state - chest opened, eggs popped, button pressed, doors opened...

Checkpoint debug room. This is a loaded state – chest opened, eggs popped, button pressed, doors opened…

That’s how I did the checkpoint system

  • Before you reach the checkpoint
    • Save items you pick/destroy/kill to the IgnoreObjectsOnLoadCurrent list
    • Save information about current terrain changes
  • When you reach checkpoint
    • Move all the saved information to the global lists and clear the current ones
    • Save existing objects states
  • When you die and respawn at the checkpoint
    • Load map
    • Don’t load objects that are on the GlobalIgnoreObject list
    • Apply terrain changes
    • Apply saved objects states to the objects
  • When you restart the whole map (respawn at the beginning)
    • Clear all saved states and changes

I was trying not to complicate that much but I really couldn’t find a better way around the issue. It took me quite some time to implement this, especially the object saving / loading states. Checkpoints are in the game now and they are working but I still need to add saving & loading states to some stuff like lights, animations and particle emitters.

I could write few pages about the whole system but I don’t want to bore you to death. If you have more questions or opinions on the issue let me know in the comments.

I hope I’ll see less rage quits this time around 😉

 Consequences of dying and respawning at the checkpoint

I really like the no-checkpoints idea becuase players played the game more carefully but then again I don’t want to punish players too much for bad game design decisions / mistakes and that’s why checkpoints are great BUT….I won’t let you run around carefree and that’s why I implemented that dying consequences.

When you die, you’ll loose 30% of your collected gold in the map (that’s only if you respawn at the checkpoint of course because you always start the map with 0 gold). It’s not that big of a punishment but gold will be needed for upgrades and some bonus map unlocks. The game isn’t that much about skill than it is about learning about the environment. That’s why I want players to use the knowledge to lower the death count instead of running into the same trap 100 times because the checkpoint was just behind the corner.

There’s another thing I’m really happy about – when you die and respawn, you’ll find your own skeleton lying on the place of your death. If you’ll die 10 times then there will be 10 skeletons lying around wearing the Courier’s leath jacket. I’ve made a short gif for you 😉


Portrait updates and dialog preview


As you can see, portraits changed a lot (in a positive way) and “day light” portraits are marked as finish for now. Courier in the torch light needs improvements though but Matej did an amazing job so far! He also got some feedback from Yuriy Gusev himself (he is a legendary pixel artist for me) which is a great honor!

Portraits are all in the game now and I’ve prepared this short dialog just to show the faces. Tell me, what do you think?  🙂



Ghost arrival changes

When you run out of torch, ghosts were spawned instantly which made one kid cry (true story!) also, it was so out of sudden that they didn’t know what’s happening. Now, when your flame runs out, the blue bar is displayed with a text “Shadows are looking for you…” – you have 10 seconds to find the flame before ghosts appear.




Other changes / updates

  • Vision fog for the visions Courier will get from time to time
  • You can skip dialog with a key now
  • Fixed some player animation frames
  • Dialog system changed a bit (code, only code…)
  • Credits of the devs displayed on the gameplay map
  • Inventory item slot darkens when the item is there
  • You can now go from the main menu to the overworld map and from there to the maps and all the way back to the menu. That works but I still have to work hard on the overworld state.

As you can see, I only did 1 thing from the TODO list I’ve published in the last dev blog. I’m working like that. If I don’t feel like working on something I pick another task. It’s better than doing nothing right? Everything is part of the bigger Early Access TODO anyway.

This is for this week, I would love to hear your opinion on the work I’ve done. Don’t be afraid to share your doubts or critics 😉

Have a great week on!