# Qonk

## What is Qonk?

Qonk is a small game I wrote to learn some SDL basics. The game is a small build-and-conquer strategy game with very simple rules. A complete game only lasts for a few minutes and can be a fun break away from work or whatever you're doing.

The setting of the game is a solar system of planets. Your goal is to conquer all of the planets in the game by sending ships there. Planets that are under your control generate new ships. Simple AI players are playing against you. As you gain more experience throughout the game, more AI players have to be kicked out of bigger solar systems.

The game is currently very much in beta. I published it however in order to see whether it compiles on other machines, and to see what reactions people had on its gameplay. The game engine itself is fully functional. A lot of things have to be added to make this a mature game (like menus and stuff), but since the engine itself works, Qonk is already very playable.

## How to install

Qonk is currently still very beta, and doesn't even have the proper configure files installed yet, but only a simple Makefile. In order to compile and run Qonk, check the following list:

### Version 0.0.1

1. You'll need SDL, SDL_gfx and SDL_ttf to compile Qonk.
3. gunzip, untar, make
4. run ./qonk!

James Gregory provided a Windows executable.

### Version 0.0.2beta1

1. You'll need SDL and SDL_ttf to compile Qonk.
3. gunzip, untar, make
4. run ./qonk!

## How to run

In order to change between levels, Qonk exits and parameters for the game and its level have to be entered from the command line. After a game, Qonk will tell you how to start Qonk again when exited. This is because I'm too lazy to write a decent menu system (everyone who is interested, may add a menu system to the source), and only interested in hacking and tuning he game engine, its graphics and obviously, game play.

Rodolfo Borges provided a small shell script that helps starting the game, saving your current level, and moving to new levels automagically. You have to edit the file to change the path where you have installed Qonk before running it.

Qonk can be given two numeric parameters, the first denoting the number of planets in the solar system, the second gives the number of enemy AI players. Successive levels of the game are defined by two such parameters.

The first levels in the game are given by parameters (6 1), (7 2), (8 3), (9 4), (10 5), (10 6), (10 7), (10 8), (10 9), (11 10), (12 11), ... I managed to get to about (35 34) before I got bored with it and started over again. I have also managed to win a (100 99) game once. That was pretty hectic :)

Although the game engine is prepared to run under different modes, the game always defaults to 1024x768 resolution, and goes into fullscreen modus to run qonk. (because of beta status)

## How to play

You select ships and send them out to planets, to attack or fortify them. A ship that arrives at an enemy planet dies and kills an enemy ship, residing on that planet, along with it. If no enemy ships are based on the planet, you take over the planet. Planets under your control grow new ships for you to send around.

You control white planets and white ships. Colored planets belong to the opponent players. Gray planets are not controled by a player and can easily be conquered, once its resident neutral ships are destroyed (about 2-4 of them on each neutral planet).

There are two types of planets in the solar system. There are planets orbiting around the "sun" and moons orbiting around the planets. There are as many moons as planets in each solar system. Some planets may have more moons than others. A planet is expected to generate twice as many ships as a moon in the same amount of time. Some planets/moons build ships more quickly than others. Each ship also has a random speed.

Select ships by dragging your left mouse button. A ship can only be selected for an action if it resides on a planet. Use the right mouse button to send selected ships to the nearest planet to the mouse pointer. If you want to select all of the available ships, press A.

As you conquer more planets, more ships are built in parallel. Try to conquer as many planets as possible, so that many new ships are constructed and you can reign over the solar system.

There are some extra keys that can be used:

• While pressing E, the ships of enemy players are shown, so this is kind of a cheat button
• Press P to pause and unpause the game
• Press S to save a screenshot (screenshot.bmp) of the game

### Player ranking

The rank of a player is not only based on the number of planets the player possesses, but also on the number of ships. A planet gives a player 2 points, a moon gives 0.999 points, and each ship adds another 1/3 of a point. A moon is thus worth just under 3 ships. Players with the highest amount of points rank highest.

## Screenshots

A game is underway and the human player is currently winning against its computer opponents.

Legend for above screenshot.

## Todos

The game is very much in beta, and that can clearly be seen when playing the game. The game engine itself runs, but all of the stuff around the game is nowhere to be seen yet. There are a couple of things on my todo list that should be added quickly:

• A menu for all your settings, levels, ... that wraps the game in a more convenient method of starting games. Before I can plug in a menu shell, I have to check whether the engine is completely free of memory leaks, but I'm optimistic about that.
• UI improvements; I have had some comments on how to better select and send ships to planets (i.e. left click on a planet to sleect all ships on that planet, right click on a planet sends the nearest ship there if none are selected ...)
• Add autotools scripts to detect necessary libraries, and wrap the build process
• Add a proper license to the game, e.g., GPL, and see whether the font we redistribute (Lucid Sans) should be replaced for correct distribution.

There are also some performance issues. I can easily have about 100 AI players in a solar system on my old laptop, but the performance starts bogging down once I become too optimistic. I should be able to do some performance updates on the event queue (everything in the game is going through this) which makes the AI and other performance a tad better. Having about 16FPS might be slow for some, but the game isn't changing that much at a time so 16FPS is plenty for current needs.

Further along the line, it would be nice to have multiplayer capabilities in the game. Having this game networked would be a lot of fun. However, that means seperating the game engine with its event queues from the UI interface. The game wasn't build with the intension of doing so, so it might be hard to add multiplayer stuff into the game.

## Contact

You can contact me at anthony@liekens.net