Gamedev Technical Best Practices

When you develop, i.e. create, a video game, you may want to follow this checklist of best practices. This is less important than the actual content or gameplay of the game but these items apply to the majority of video games:

  1. Enemies don’t respawn automatically unless the player is informed. By default, except for JPRG games, the expectation is that there is a limited number of enemies. No matter your genre, you must be consisent: enemies either respawn everywhere or nowhere. If there’s a special area with respawn, you must inform the player (for example, the character could be repeating “I don’t think they’ll ever stop coming.”).
  2. When there’s a time limit, you must show an actual countdown timer on the screen. No matter how bad the situation looks, the default assumption is that you can leave the game on for hours away from keyboard and nothing bad will happen. The characters can keep repeating things like “We need to hurry.” or “There’s not much time left.”  but unless there’s an actual countdown timer in the HUD, you cannot punish a player for waiting.
  3. Mark all points of no return. In open world games, any points of no return must be clearly marked. If completing a question will cause a chapter to end, or if moving into a certain dungeon will end a part of the game or if talking to a certain NPC will move you in the finale, a big red dialog box should pop up in the player’s face, stating in no uncertain terms something like “This is a point of no return. If you proceed, the chapter will end and you will no longer be able to return to Littletown. Do you wish to proceed? [Yes, move on.] [No, not yet.]” Do not use in-character dialog for this. Make it very clear by using a game interface element.

Continue reading Gamedev Technical Best Practices

Java Pathfinder Inspector

In the summer of 2016, I participated in the Google Summer of Code program, during which I updated and significantly improved the Java Pathfinder Inspector.

Java Pathfinder (JPF) is a framework for formal checking of Java programs. Its core consists of a virtual machine for Java bytecode, running itself on Java; this allows JPF to instrument the code and provide its own functionality for critical instructions. JPF is very extensible and many modules exist for various kinds of verification such as symbolic execution. JPF Inspector is one such JPF module that focuses on debugging capability.

JPF Inspector is a tool for inspection and control of Java Pathfinder execution. It supports breakpoints and single-step execution (forward and backward) at different levels of granularity, and it allows the user to examine and modify program state (threads, call stacks, and heap objects). Unlike with standard debuggers (GDB), it is also possible to control thread scheduling explicitly.

This is the first software engineering project for which I received actual money.

It is programmed in Java.

It was created at the age of 23, in 2016.


Continue reading Java Pathfinder Inspector

Oracion Online

Oracion Online is an online collectible card game for one or two players. It is in Czech only. It was created as a school project in the summer of 2016.

I invented the game Oracion, in its paper form, in 2009 for my Scout group and in the years 2009-2011 I used it in my patrol as a motivation element.

Oracion is a simple card game. Each round, each player plays a creature card, attaches tool cards or uses special actions, and then rolls dice. The number and kind of dice is determined by cards. The player who rolls the higher total “defeats” the opponent’s creature. The first player to defeat four of their opponent’s creatures wins the game.

Continue reading Oracion Online

RFC: Protocol for initiation/termination of dialogue

Abstract: Many people sometimes wish to talk to other via instant messaging applications about their lifes, news, common interests and other topics without having important information to tell and without wanting to make a request (we will call these conversations “chats”). However, it may be difficult to find out whether your interlocutor wants to chat or would prefer to end the conversation because we encounter problems related to courtesy. For these reasons, we present a new protocol for chats that could save time for both interlocutors and help them lead the conversation for exactly as much as they both desire.

Continue reading RFC: Protocol for initiation/termination of dialogue

World Romantic Relationships Authority

Sylvia was living in an unsanctioned relationship.

It wasn’t the fact that she was dating a girl that was bothering the World Romantic Relationships Authority. No, same-sex relationships had been sanctioned decades ago and were commonplace. The problem was that Sylvia was also dating a boy.

This was not a problem in itself. The WRRA could be more aptly named the World Romantic Relationship Advisory – it didn’t make laws, it offered recommendations. But even though it wasn’t illegal not to follow the WRRA’s guidance, it still felt wrong somehow and Sylvia couldn’t wait to be back in full compliance with the Authority’s recommendations.



Continue reading World Romantic Relationships Authority

The Deadlock Empire

The Deadlock Empire is a programming puzzle game created in a team with Michal Pokorný for the 2016 Hack Cambridge hackathon.

In the game, the player assumes the role of a computer scheduler. In each level of the campaign, the player sees two or three threads of a computer program written in C#. He must then step through the program, performing context switches as he deems appropriate in order to demonstrate that the program contains bugs in its parallelism code.

For example, the player might simulate an execution order such that two threads enter a critical section at the same time or that results in a deadlock.

The game won the 1st place at the hackathon. In addition, we won two auxiliary prizes – Improbable‘s prize for “the best gaming/VR hack” and Bloomberg‘s prize for “most interesting project”.

The game is programmed in Javascript.

We created the game at the age of 23, in 2016.

Play online:


  • Learn parallel programming by playing a game
  • A story-based campaign – slay dragons, master concurrency!
  • Over 15 levels
  • Over 6 different synchronization primitives

Download Source Code: