“In the depths of a corner of the world, ancient forgotten ruins are buried. It’s been one thousand years since the realm of Ias Lord of the darkness fell, and everyone on earth forgot about the pain and suffering he caused.”

Tull was a small roguelike that I developed in December of 2013 for the Trials of Oryx. The objective of the contest was to use Oryx’s tiles and sprites and build a roguelike game for a prize of 500 dollars with a month of deadline.

I started working on it since the beginning of the contest, the advance was pretty good, I manage to create the basic dungeon crawler system in the first 9 days and then started to work on the town:

The most difficult part was to fill the dungeon with all the creatures and try to keep the game balanced so it could be finished.

I finished the game on December 22 just in time to deliver it to the contest, this version can be played at:

After the contest ended and the winners were selected (I didn’t win but I got an honorable mention) I started working in a new version in January of 2014, I added some things that I wanted for the first version but that I couldn’t add to it because of the limited time such as fading field of vision, blood, day lapsing and some other minor things, I also corrected a lot of errors in this version.

I finished this version in February of 2014 (This is the last version) you can play it at:

I really enjoyed working on Tull (I took the name from a town in the first Dark Tower book from Stephen King) and I learned some things on how to create and organize a working plan.

I could still add some cool things to the game but I am currently working in different projects, so I don’t think I will release a new version in the soon time.


New changes to the project (still no pixel artists), first I added some extras to the rendering process, when you walk the height of the camera changes to add the effect of being walking and not skating in the dungeon and you can look up/look down now:

I also added the option to change the height of the camera which allowed me to introduce things like water tiles and texture animations:

And finally (but not complete yet) I added the option to interact with objects using the mouse instead of having to press the enter key each time:

I worked also in the angled walls, which now work better but still have some distortions in certain angles, this week (hopefully) I will work on the interface (add a weapon and create a spritefont system for the game).


The project is starting to move on, last week we made public the first project that will use this engine: Britannian Underworlds, we are looking for people to join this project, you can find more info here: http://slashland.wordpress.com/

There are a couple of changes that I did this week on the engine, the first one and probably most big was the inclusion of the floorcasting, so now the levels can have a floor and a ceil:

There is also the option to include different floors and ceilings:

The other big change that I include was angled walls, although they can only be 45 degrees, there are a couple of graphical glitches with it but they are working pretty fine now:

You can try the live demo now, it works better with Firefox since Chrome won’t use the nearest pixel algorithm for scaling the game:

Try live demo

That would be all for now, remember to follow the blog of Slash to get more info on this project.

The project is going a bit slow lately because of different reasons (I need art, I recently changed job, I have other projects, etc…), I probably won’t update it so often until I solve the issue with the art direction, up until now I’ve been doing the whole art, but there is no way I can handle the full art of the game and the programming of it.

Anyway, problems aside, here are the last changes I added:

I started making a new texture package and a new game building, nothing to special, just to try to adjust the game to the ambiance that I am trying to create:

I also added some new objects and effects, for example walls that can be interacted (and change texture) mostly for manipulate the scenario (open doors).

As a part of the new objects and effects that I added, there are now chests:

The engine is ready to work with sprites of 8 directions to make the game feel like Wolfenstein, but until I find someone to do the art I will make the characters in one direction (looking to the player)

That would be everything for now, I also started another mini project which I hope I can publish more about it very soon.

This last week wasn’t so productive, there are some advancements but definitely less than the amount that I wanted, there is a couple of reasons for that, the most important been the fact that I don’t have an artist so I have to make all the assets myself.

The first thing I added was the fog, a simple code that make things that are far more dark than the ones that are near, (this was pretty easy to do using the alpha channel for the pixels instead of changing their rgb values):

The other thing I added was to enable the doors to have locks and the Items system (only keys for now).

I also started making a new building with new textures (64×64 instead of the current 32×32) just to acclimate the engine to look more like the game it’s supposed to be (I’ll publish more info on this later) and to test other memory related things., I still need to work on things like chests and more Items, also special items that can modify walls (for animations or switches). And then I hope, get start with the AI.

It’s been a week since I last updated about this project, I fixed some bugs, changed the way I plotted the color data into memory and also I started with the development of the instances of the game and the actions they can have.

The first problem I had a week ago was the door casting, I was having a problem with the depth buffer which causes that the door blend with the wall, the problem was very simple I was storing the data of the depth buffer in a Int array instead of a float array, causing that the decimals of the distance got lost and causing the problem.

Now the doors works perfectly and can be opened and closed:

The next change I did was to allow the billboards (Non special objects) to have animations:

The other important change would be allowed to see the enemies from different perspectives:

And finally, the last change was to allow to the billboards to have some actions (there are few possible actions for now):

Thats all for now, there are more changes coming this week, items and actions related changes, and if everything goes well then I will start to work on the enemies AI.

Last week I started working on a new game engine programmed on HTML5, its a pseudo-3D raycaster Engine that hopefully will end in the development of two games (pending to reveal).

This is about the fifth time I write a raycast engine, (attempts 1-3 failed because of bad performance of the code) the fourth is working on another game (still on development) that I will write about soon.

All this failures (among many others) taught me certain things about the importance of the memory management and the clean and short code, the result is a smoother engine that runs up to 60 fps on a modern browser. There is still a lot of work to do before getting into the real game development with this engine but I have a decent progress with this engine in just a week.

All the wall and basic billboard textures are images of 32×32 pixels in order to give the engine a retro look, but the textures can be any size, for example: the enemy’s sprite is 64×64 pixels.

The last thing I implemented was the door casting which I’ve never done this way before, I still have some issues with the depth buffer and other things but the doors are working pretty fine so far (They can’t be opened though).

That’s all for now, I’ll try to post news of this engine once per week with the new advancements that I add.

Hi there!

I decided to start this new blog to become more like my personal web, I’ll post (hopefully) here about my games development and other things that I like such as pixelart and game music composition.

Anyway, let see if this goes somewhere.