Textics

Hi guys!

I want to show you a little videogame I wrote, named Textics. It’s a textual game, played directly on the console, without any graphics.

The aim of the game is to reach the exit of each room without being captured by the enemies. Some of them will not move, and you just have to avoid walking in front of them. Instead, other ones will move following pre-determined patterns, so it will be very useful to observe where they go before to move!

The game area is divided in rows and columns, like a chessboard: every cell is univoquely identified by two coordinates, like (A;g).

Following, a screen of the game:

Textics screenshot

Legend:

  • P: player’s position
  • E: enemy’s position
  • +: enemy’s view: if you walk on it, you will be caught!
  • X: exit
  • | or _: these represents an horizontal or vertical wall, which the player cannot walk on and enemies look through (of course!).

Controls

You can use the following commands:

  • goto Xy: go to the (X; y) cell. Attention: the player can only move on a straight line!
  • wait: wait one turn, so you can observe how the enemies move;
  • exit: go through the exit e continue with the next level. It can be used only if the player is on a cell adjacent to the exit.
  • menu: go back to the main menu.
  • quit: close the game.

Levels

Levels are saved in the levels.dat file. It is an XML file, that is read from the executable and used to create levels’ map. The user can freely modify it in order to create new levels or modify existing ones.

Here’s how. First of all, you need to create a <level id=”xx”>…</level> node at the end of the file (inside <levels> root), and update the counter <levels count=”xx”> at the beginning of the file.

Here’s the list of the possible elements you can add into the level. Please note: x and y coordinates of each node must be numeric value between 0 and 19.

Mandatory nodes are:

  • <player x=”xx” y=”yy” />, that represents player’s position;
  • <exit x=”xx” y=”yy” />, that represents exit’s position.

The other, optional nodes are:

  • <hwall x=”xx” y=”yy” />, that represents an horizontal wall, that is identified on the map by ‘_’ character;
  • <vwall x=”xx” y=”yy” />,  that represents an horizontal wall, that is identified on the map by ‘|’ character;
  • <enemy x=”xx” y=”yy” view=”u/r/l/d” />, that represents one enemy. The view parameter, that can be equal to u, r, l, d, tells where he is looking: in order, up, right, left, down.
    • Enemies can move along pre-determined paths. You need to add into the enemy node, a node called <movement>; in it, you need to add as many <point> nodes as the points the enemy will reach (excluding the starting point). The syntax is: <point x=”xx” y=”yy” view=”u/r/l/d” />.
  • <dialogue>, that can be inserted at the beginning of the <level> node: you can insert the text you want to be viewed to the right of the map in it, enclosed by the tag <![CDATA[ … ]]>. It must be no longer than 20 rows, and each of them must contain no more than 30 characters.

Conclusions

Nowadays, the game counts only 10 levels, so it will take no more than a few minutes to be completed. Any progress is saved when you complete a level, and the game can be resumed at any time.

Probably, I will add an inventory system, giving the player the ability to get different items, like keys to open level’s exit, or other gadgets.

You can find the source code in the repository, and the archive with the executable can be download here.

Stay tuned!

Annunci

Expeditus: dialogues’s system

Even if it’s quite slow and there are some difficulties, Expeditus project’s developing is going on. Dialogue’s system is ready, but it is not possible yet to give answer (like a simple YES/NO): this feature will be soon implemented.

At the end of this post, a gif image shows Expeditus dialogue’s system in action. It is a little tribute to Pokémon Gold Version, from which I took the introduction dialogue by Prof. Oak.

If you want more frequent and detailed information, please follow the official repository.

Update: a little animated cursor is now present at the bottom-right corner.

Stay tuned!

New Project: Expeditus

Hello everybody!

Today I want to talk about a new project I am currently working on: Expeditus. This title is latin for quick, armed, ready.

It is a small 2D adventure videogame, with a bird’s-eye view style like Pokémon. Fundamental is the trading-card system: the player will be able to collect and use cards in order to perform every action.

There are four classes of cards:

object_cardObject cards: they represent an object that can be used by the player, like a potion or a dress;

utility_cardUtility cards: they represent utilites and tools that can be used by the player, like the ability to quickly travel to any point of the map.

battle_cardBattle cards: they represents attacks or defense that can be performed by the player during battles;

special_cardSpecial cards: they are rare and powerful cards, that give a great advantage to the player.

Further details on the game will be shared as soon as possible.

I want to highlight that my aim is not to produce a great videogame, trying to compete with other games, obtain a lot of downloads, nor sales. The major aim of Expeditus is to give me a place where I can experiment, improving my programming skills.

In fact, I will not use external libraries (as far as possible), but I will write myself all the code. I am using C++ programming language, and Lua for cards’s scripting.

A public repository on bitbucket.org will be available soon: you will able to view and download Expeditus source code.

Stay tuned!

Update: Repository is now online!