Rendering of playing field and paddle

I wrote the first code for the Python version of Tankoid. It covers rendering the playing field after loading it from a file, and rendering as well as moving the paddle.

I tried to focus on the prototype style I want to follow. It’s sometimes kinda hard, as it requires to allow for unsexy code to settle in. But on the other hand I’m able to produce results quickly. And I shall not forget that “over-thinking” the code design prior actually writing it often results in demotivation due to over-engineering. So after all I’m quite happy with the progress so far. :-)

As said in the comments before, this will be open source. You can watch the progress at GitHub and even hack around yourself. And last, but not least, a screenshot:


Tankoid (Arkanoid clone) mock-up

I’ve started with Tankoid, the Arkonoid clone. The first step was to get an overview of what I want to accomplish. Here’s the mock-up:


Tankoid mock-up


It was created in Inkscape, an excellent vector graphics editor (open source). Here’s a short list of features that the game is at least going to have:

  • Movable paddle (by player, left/right).
  • Moving ball that bounces off the paddle, boundaries and bricks.
  • 10*8 bricks large bricks field.
  • Power-ups (dropped when special blocks are destroyed).
  • Overall style utilizes solid shapes and a hard shadow effect.
  • Info bar at top showing level name and current score.

The list is not detailed, but it definitely defines the goals. For example, showing the level name also implies being able to play different levels.

The next step is creating a prototype in Python using PySMFL. It shall be able to display the bricks, ball and paddle, without function.


Game Dev, here I come! (hopefully)

After months, even years of absence from game development (except thinking about ideas etc.), I decided to join the party again.

Due to my daily work, which mostly happens to be web development (Python, Django (REST), Angular JS), 8-12 hrs a day, my motivation was like zero for doing interesting things after work. Plus, my wife and the little Mia needed attention as well.

However, funnily enough, I often end up wasting time in the evening, ergo being unproductive – and I hate being unproductive.

I have a list of things I would like to work on in the upcoming weeks. Take a look:

– Make 2 game clones of popular classics: Arkanoid and Tetris
– Work on SFML and PySFML.
– Update the GDD articles (especially the one about components; my view changed a bit).
– Write a new GDD article about project structures and general game code module structures.
– Evaluate writing a book for game dev using PySFML.

I’d like to write the game clones several times: At first I am going to make them in Python/PySFML, not paying too much attention at code design (read: prototype). Then I will make the same thing in C++/SFML.

When that is done, I want to do several iterations of refactoring – Python first, then C++. Adding a message bus, components, nice graphics, sounds, music etc. Simply making solid games that are maintainable.

Python is first because it’s a lot easier to do elegant and fast code design in. The C++ part is for getting myself back into it again. I nearly completely lost the connection to it (except for SFML), and when I wanted to do experiments in the not so far past, I had always been very much annoyed by the project setup and slowness of progress.

Whilst making the games, there will probably conflicts with bugs/feature requests in (Py)SFML, so I expect to work on those as well.

If I manage to finish the games, I am quite confident that I will be able  to start working on some bigger things again. Either a book about PySFML, or implementing an interesting game idea that I’ve been having for a looooong time already. When? What language? How? I don’t know, time will tell.

I am going to post weekly updates here and at my Twitter account @TankBo.

Wish me luck, and, more importantly, endurance!


P.S.: Oh and don’t be surprised when this blog will slightly change in the near future, including the domain. I’ve never really liked “”.