How the game board can look after a typical four-player session.
Portobello Market is a strategy game where players strive to earn the most points by expanding their markets to the most valuable positions on the board. Portobello Market is played by two to four players. Each game takes from about half an hour to an hour.
The box of the game, the title roughly translates to “Dragoncastle”. This is the swedish remastered version and the english version is called Dungeonquest.
Drakborgen is a fantasy themed strategy game where the goal is to gather treasures that has the most worth and then escape the castle alive. Two to four players enter the castle, but between the play sessions that I’ve had, only one or two players made it out alive.
This week have been a really productive one in terms of features completed. First off, I’ve done some finishing touches on the Pathfinding algorithm which I wrote about in last weeks’ post and all that remains now is to give each enemy it’s AI-logic.
One of Haunted Lights more prominent feature is its re-generation of levels. Because of that particular feature we need to have the level to be updated whenever the generation happens. In case we didn’t update the sprites when the level generates we would get something that look something like the screenshot below.
In the previous post I wrote that I was going to go through how our level generation worked, but due to missed deadlines we’ve been forced to push the implementation of that feature to later when we have a working path-finding since we prioritize having a challenging game rather than a fancy level-generation. Because of that unfortunate turn of events I’ll now write about how our A-star implementation currently works instead.
Before I even began working, I did some research on what the easiest way of implementing A-star were. After a while I finally settled on using the “Micro-Pather” libriary which is a lightweight and easy-to-use library containing only two single files;”micropather.h” and “micropather.cpp“.
This week I’ve been mostly thinking and planning out how the level generation will work and I’ve also assisted our programmers in different parts of the game.
since I haven’t completed any new artifact in the game this week (except different resolution support…but it’s such a minor part and therefore I don’t’ count that) I’m going to talk about a feature of Haunted Light that’s a work in progress. The “(Re-)generating Levels”. I’ll explain what I mean by that.
Haunted Light is a game where you wake up on a basement-floor with only a single candle in front of you. As soon as you pick up the candle you notice that there’s a monstrosity following you and the goal is to survive by running away form that monster while avoiding critters and other horrors.
While you’re escaping you’ll notice that the rooms and corridors aren’t the same as when you previously were there. That’s because as soon as you move a large enough distance away from an area then it’ll change i.e. “re-generate“.
This week I have accomplished a couple of things.
I changed what the Object-Manager stores. Previously it stored GameObjects but now it stores pointers to GameObjects. This prevents the object you want to store inside the Object-Manager from being destroyed when it gets copied over to the map container. Due to this change I also managed to fix a couple of memory leaks concerning the objects sprites and colliders not getting destroyed. Another thing I did was making the game scale according to what resolution you have. This change prevents the users who plays the game at higher resolution from having an advantage due to the increased field of view. But the main thing I did this week was the revamp of the State-Manager.
Previously we had no way of pausing the game. If you wanted to take a break from the game you’d have to restart from the beginning again in-case you lost while you were gone. And that’s not acceptable. So now instead I have changed the way states are handled and gave each state a couple of new functions and member variables.
This week we’ve been working hard on getting an alpha product done for the presentation that will be held in from of the class.
I’ve made some finishing touches on the light engine so that it e.g. no longer have transparent shadows. This was accomplished by using blend modes. I’m quite familiar with using blend-modes because of my previous projects when I used to program a lot inside the game engine Game Maker. But I’ve gotten more and more used to how SFML works now and it feels great!
But enough of that. Today I’m going to write about how Haunted Light handles all it’s different objects.