The Black Lamp


Download The Black Lamp playable

Here’s a new version of The Black Lamp. I put some extra effort into making this a more wholesome game, though I have to admit I stopped developing it further rather than finishing it. 🙂 Still, I think it is a good enough idea, so it got some new features and levels, but to develop it further would be a totally new project, rethinking it from the start.

Some things are the same: the player has to drill through a bunch of maps, collecting treasures, opening exits, avoiding or falling on top of enemies. Still, the number of treasures that have to be collected is the same (5 out of every 6), treasure and hole placement is randomized every time the player enters a level. The game can still be played with a keyboard (recommended) or a gamepad. The boss at the end is unchanged.

A bunch of new things have been implemented: the game got a simple menu, and even some option possibilities to set sound, music, camera blending speed and zoom level (no key binding though). The game saves some data in AppData\Local\descent. Updated GUI, shows not just the number of treasures, but if the door is opened, the treasure icon’s border flashes. A little animation on the ‘lives’ icon. Also, animating protagonist on main screen. Invincible tiles spark if drilled. Background tile layer on every level. Re-colored tiles in front. Some levels have lifts, in those maps there is no checking if the player can reach enough treasures. The player can reset a level by pressing “R”. I added spiked skull blocks that chase the player if they are on the same horizontal line. I added a new type of boss: the shredder. I also added a version that can be controlled by the player with arrow signed tiles. I added a smasher block, these start to move down and crush everything in their way. I had to add an extra button for stopping the character and having it drill in place. There could be specific situations on any level for this (to drill under a treasure or an enemy, so that it falls, but player doesn’t), but there is one map called Puzzle, where this is a necessity. So I put a reminder there about this function.

As you can see, these are a lot of features, if you play through the new maps, you will see that many other maps could be made, but I really have to concentrate on some new stuff I set my eyes on. I am also re-thinking the Ian Stokesworth project code wise, so that adding new, or revisiting old code won’t make me do a detective’s work.


See original post of this project here:

Around the start of July, one of my colleagues mentioned that there is a Hungarian group for 1GAM (One Game A Month) called HEJ (Havi Egy Játék = 1GAM in Hungarian :)). I asked to join the group out of curiosity, and they already had the theme for July: DESCENT. I had been experiencing “writer’s” block with the Ian Stokesworth project and I immediately had an idea for this theme. So as practice I joined and started to design and then put together the basis for a new small game. Though I recycled many elements from the Autumn Special and Ian, I also had to create a bunch of new code for things I had never done before. I managed to stop the character on the middle of tiles without snapping, so after releasing the direction keys it still walks until it reaches the tile’s middle. And I had never programmed a timer before. I also enjoyed making some simple cinematic-like screen effects and (sort of) cutscenes.

The game itself is about an archeologist (I draw the guy a derp with shorts, white socks in sandals and a jackhammer :)) who wants to find the black lamp. He can drill in 8 directions, but cannot jump, so he can move only left and right or fall down. There are doors on every level, and to open them the player has to collect treasures. On the GUI there is a treasure icon and an X / Y counter to show how many treasures the player has collected out of how many. As indicated in the tutorial and on the screen, not every treasure has to be collected: 1 treasure can be left behind out of every 6, so if the GUI reads there are 6 treasures, only 5 has to be collected, and the 6th can be picked up for extra score. I set the hardness of a level by how many treasures are on the level, eg. out of 11 treasures the player can only leave 1 treasure behind. But out of 12 treasures, 2 can be left behind, and so on.


The game puts a pre-set amount of treasures on the levels randomly and deletes tiles randomly. This gives some replay value, and also the possibilty that a level cannot be completed without dying. Of course, I check whether the player can collect enough treasures to open the door, but to check for the possibility of failure beforehand exceeds my programming skills. Still, there is a small chance to this (well, randomization is a cruel mistress) and on restart, treasures and holes appear in different positions.

I implemented a type of enemy with a very simple AI. It walks from wall to wall, stops idle if it falls in a hole and walks faster if the player is on one tile above it. It also kills the character if it touches him from the side. But if the character falls on top of the enemy it dies.

I didn’t plan to draw big tiles and put too much time into graphic elements whatsoever (well, tell it to the main screen and the title graphic… I LOVE to draw titles :)). I spent the available time with coding mostly and I finished 1 day before the meetup. Some people asked why the tiles are so dark. This is because of the short time and the fact that the game’s events take place in the darkest night and under the ground.

I made 10 levels total and an outro/credits scene. My darling girlfriend Allegra was so kind and helped me with testing and a little level design and a little with how the boss could work. We talked about implementing more levels and new features (like pause and a non ALT-F4 quit from the game :D), but some things may not change. No need for saving progress, no real need for a menu. This was a gamejam idea, a fun one, but I really don’t want to put extra time I don’t have into it.

Vincenzo provided some amazing tracks for the game again from his vast library of music collection. I also tried to use Attribution licensed free sounds and I gave credit to the people ingame and in a separate file.

I made a boss fight! Well it’s not a fight as the player has to run and drill for dear life, but still it’s something. 🙂 And at the very bottom of the last level there awaits the big prize: THE BLACK LAMP!