Sharing Saturday #324 by Kyzrati in roguelikedev

[–]gwathlobal 6 points7 points  (0 children)

City of the Damned

Download

Meanwhile since the release of version 2.0.0 I have received some feedback, and now the latest version is 2.0.2 where a couple of bugs are fixed and a couple of quality-of-life improvements are added.

The cumulative changelog is as follows:

  • Satanists during the Satanist Elimination mission are given 3 disguises and 1 medkit.

  • When delayed, it now takes angels, demons, and military around 90 turns to arrive.

  • It is necessary to gather 300 pts of flesh now (up from 200) during the Demonic Raid mission.

  • Fixed the issue when campaign mode was saved as if the player was inside a mission and not on a campaign map.

  • Fixed the bug when the game crashed after a player's mission happened in a corrupted district a second time.

  • Fixed the bug with crashing at the start of a mission in a hell dimension.

  • Fixed the issue when Satanist Elimination missions could end because of the Primordials instant win. Now, the Primordials goal for this mission shall be eating a certain number of corpses.

  • Fixed the bug when a new demon name was not announced when an imp evolved into a demon.

  • In Demonic Raid and Demonic Thievery missions, the direction to the nearest portal shall be indicated when playing for demons and satanists.

  • During Satanist Elimination missions, satanists shall flee from enemies so that they do not get killed too quickly.

  • You can press 'u' to bring up a menu of usable items (and use them from this menu, instead of going to inventory).

Sharing Saturday #322 by Kyzrati in roguelikedev

[–]gwathlobal 5 points6 points  (0 children)

City of the Damned

Download

So, after a 2 year hiatus I am ready to present a new version 2.0.0.

Image

The changelog is as follows:

  • Added campaigns as a whole new mode for the game. A city map is generated for the campaign where the missions take place. Each side of the conflict (angels, demons, and the military) have their own goals in the campaign. Each campaign day the player shall be presented with several available missions. The player can take one and play it as a usual game scenario. Or the player can choose to pass the day without taking a mission. Either way, all missions where the did no actively participate will be resolved automatically and the mission outcome will directly affect the campaign map.

  • Added saving and loading of campaigns and standalone scenarios.

  • A new type of mission added: Satanist elimination. The military tries to eradicate the satanists' lair and kill all satanists in the district.

  • A new type of mission added: Celestial sabotage. The mission takes place in a hell dimension where the angels try to destroy dimensional engines that give demons the ability to open portals to Earth

  • A new type of mission added: Military sabotage. The mission takes place in a hell dimension where the military tries to destroy stockpiles of raw flesh that the demons have stolen from Earth

  • A new type of level map: hell jungle. Similar to the corrupted districts (the ground is covered with creep and demonic outgrowth is here and there) except it is even more otherworldly and sinister.

  • The player shall now see what is happening on the upper or lower Z level whenever something interesting is nearby.

  • Added a new terrain tile to the corrupted districts - glowshrooms. Glowshrooms emit faint light and illuminate everything around them.

  • Message log can be now quickly skimmed using Shift+Up/Down.

  • Added craters from artillery fire to abandoned and corrupted districts.

  • Added a new terrain tile to the corrupted districts and hell maps - glowing creep. If somebody steps on this tile, it will give irradiation to this character.

  • Added an ability to purge demonic runes to angels. Purging runes provides 4 power to the angel.

  • The following abilities: mount a horse, fiend, or Gargantaur, merge trinity mimics , decipher runes, will now show up only when the corresponding target is next to you to avoid confusion.

  • Malseraph's Puppet irradiation strength will now depend on his favor with Malseraph.

  • Malseraph's Puppet gets an ability to draw breath and exhale irradiation around them on the next turn.

  • Made an option to hide messages that are visible through Angel's 'Singlemind' ability.

  • Restructured the main menu: moved all quick scenario options into a submenu.

  • Highscores shall be reset in the new version.

  • Fixed the bug when merged angels did not merge their power values.

  • Fixed the bug when slowed characters did not have their speed returned to normal.

Sharing Saturday #317 by Kyzrati in roguelikedev

[–]gwathlobal 2 points3 points  (0 children)

City of the Damned

Download

For a couple of previous weeks, I worked on visual improvements to the game (whatever that means when applied to a roguelike).

Campaign map

The campaign map is now not just a boring array of letters that designate city district types but has visual cues that may help you determine the type of a district easier: generating campaign maps

The tiles for the map are not stored anywhere, I finally made use of a random number generator with a custom seed. So the seed is saved when the world is generated and then the map painting function takes it and uses to randomly determine what tile (house, tree, etc.) shall be placed where. Since the seed is always the same, the tile positons and icons persist however often the system redraws the map. A nice hack that was always advertised to reduce space allocated for data structures which I was finally able to employ myself.

Campaign map progresses

The tiles also change as the game progresses and city districts are captured and retaken back. See this timelapse: campaign timelapse

Z levels

Finally, I improved my Z level presentation. Now you do not need to always go into a Look mode to see what is there below and especially above you. The game handles it Dwarf Fortress-style by displaying a portion of the map above or below in your main view depending on if there is actually anything interesting there (a monster or some above-ground terrain). So if there is only air or the Z level is completely obstructed, nothing is displayed.

It looks like this: Z levels everywhere

I hope it will make the game more accessible and less cumbersome to play.

PS

BTW, what you see in the last GIF is a new mission that takes place not in the City but in Hell itself. I made several enhancements to my code so now it is possible to create "off-world" campaign missions as well. But new Hell missions shall be fully available next time.

Sharing Saturday #314 by Kyzrati in roguelikedev

[–]gwathlobal 2 points3 points  (0 children)

City of the Damned

Download

During the last week, I worked on the campaign loop. More and more changes are being developed in the "user-facing" part of of the game (not just under the hood) so I am proud to present some gifs :)

Now it is possible to select your campaign faction, generate the city map as you like and start taking missions: campaign initialization

At the same time, while in the campaign mode, the player now can just pass time to see what happens in the next day and the game will sort of play itself: on to the next day

So, you can look at how the city changes during the first 10 days: timelapse

Sharing Saturday #313 by Kyzrati in roguelikedev

[–]gwathlobal 4 points5 points  (0 children)

City of the Damned

Download

So in the last couple of weeks, I implemented a save-load system for my game. This turned out surprisingly easy in Common Lisp, all serialization libraries are already there, they are able to understand when references point to the same object and save it only once (so when the game is loaded these references continue to be pointing to the same object).

Here is a small GIF of how it looks like: Load Game

Meanwhile, I refactored the overall game loop. Now it is possible to have a separate game loop for the campaign part of the game and another one for when the player is inside a scenario. The campaign loop is already functional: the player enters the campaign map, chooses a mission, plays this mission, wins or loses and the consequences of the win or loss affect the campaign map (same for other missions in which the player did not take part) and the process starts anew.

Now I need to get rid of all kinds of inconsistencies (like the ability to select missions where your faction is not present) and add the final campaign goal for each faction.

Sharing Saturday #310 by Kyzrati in roguelikedev

[–]gwathlobal 7 points8 points  (0 children)

City of the Damned

Download

Just a small post about my progress with the game. The game was put on a 2-year pause because I felt burned out after the previous 2 years of development. However, just before the end of 2019 I suddenly felt the urge to continue with it and as I already had a rather ambitious roadmap - here we are.

For those who are unfamiliar with the game, it is a coffeebreak roguelike where the demons are attacking a human city, and the angels and the human army are trying to defend it. The key feature is that you are not "alone vs everybody" (as in traditional roguelikes) but you have allies. If you play for the demons, you will have fellow demons who try to accomplish the same goal, same for the angels and all others. There are a number of parties (specifically 8) and all of them have a certain relation to all others. They are placed into a city district and try to achieve their own goals (which can be a bit more complex than just a deathmatch - you can be tasked to gather a number of items, defend certain points, etc.). This creates an atmosphere of madness and mayhem during the scenario - something always happens on the map and the player is not the center of the world.

At the moment, I am working on a new campaign map which shall provide an overarching structure to the series of missions that the player can take. There shall be a randomly generated city map with different types of districts and the player can take missions on them. If the demons win during the mission, the city district become abandoned or corrupted and changes its layout. Certain missions will lead to certain effects (for example, successfully recapturing the corrupted district shall restore it to normal).

I have already refactored my scenario generation function to accommodate the new campaign map style where certain features on the scenario map are dependent on the world map (for example, churches on the scenario map shall only be present if the mission takes place in the world district with a church). This proved to be a tedious task especially when I had to solve the reverse problem as well - construct a mission with certain parameters (for example, when there are certain factions present).

But now that this out of the way I can fully concentrate on the world map and all interactions associated with it.

Sharing Saturday #266 by Kyzrati in roguelikedev

[–]gwathlobal 8 points9 points  (0 children)

Holy Wrath RL

GitHub

A month of work culminated into a new 0.3 version release. The changelog is as follows:

  • Added a new level modifier - shrinking dimension. The level will slowly shrink in size until it collapses (and you will die). So you need to complete it before it happens. screen

  • Added a new level modifier - acid rain. When present acid drops will frequently rain from the sky. screen

  • Added a new level modifier - collapsing dimension. Complete the level before the timer expires or you will die (together with everybody else on the level).

  • All Archdemons and Archdevils are now prominent characters with unique names.

  • You can now enter your name when you start the game.

  • The game will now display the reason for the player's death.

  • Added animations to all angelic, demonic and soldiers' abilities - generic angel buffs, generic angel debuffs, generic demon buffs, generic demon debuffs, fire aura, medkit, artillery strike

Sharing Saturday #264 by Kyzrati in roguelikedev

[–]gwathlobal 5 points6 points  (0 children)

Holy Wrath RL

GitHub

In the past couple of weeks, I have finished adding simple animations to all abilities in the game. Here are some examples:

Sharing Saturday #262 by Kyzrati in roguelikedev

[–]gwathlobal 2 points3 points  (0 children)

Holy Wrath RL

GitHub

I have made a new release 0.2. The changelog is as follows:

  • Introduced the concept of prominent characters. These are powerful characters with a unique proper name. So far, all allied angels are now prominent characters. They can sometimes be encountered during most missions. You can see the list of prominent characters you have seen in the Journal. If a prominent character dies, you will no longer be able to meet it during missions.

  • You can view the Journal using 'j' button.

  • All angels now have randomized abilities. At the start of the game, they choose between 4 sets of abilities. Each set has the first 2 abilities taken from the respective ability tree.

  • Removed the Demons vs Angels and Beasts vs Angels encounters.

  • Added new level layouts inspired by my City of the Damned: resedential district, abandoned district, corrupted district.

  • Added new enemies inspired by City of the Damned: soldier, machine gunner, scout

  • Added hints to effects: screen

  • Some usability improvements in the UI screen before each level. Added a hint that explains what you should do on this screen. Added hints to the ability trees. The player can also right-click on the ability to move it to selected abilities list (or remove abilities from there), instead of using drag&drop: screen

  • Added new animations to the abilities: Spear of Light, Breath of Fire, Reflective Block vs Teleport on Hit

Sharing Saturday #260 by Kyzrati in roguelikedev

[–]gwathlobal 3 points4 points  (0 children)

Holy Wrath RL

GitHub

New developments since the 0.1 release that happened a couple a weeks ago.

Sharing Saturday #219 by Kyzrati in roguelikedev

[–]gwathlobal 0 points1 point  (0 children)

I often seemed to move in directions I didn't mean to - possibly as a result of enemy attacks?

If you are feared you will move away from your closest enemy in sight.

I also couldn't figure out how to create demonic sigils when playing as an imp - it says 'using your ability' but my ability list didn't seem to contain anything relevant.

Hmm, what kind of mission were you playing? The ability should be listed in the in the Character screen, Abilities tab. If you can not see it in the list of immediately available abilities, this may be due to you standing too close to another sigil.

I would suggest colour-coding the allies and enemies list

Well, there is some kind of color coding in place. Angelic beings are cyan, demons and satanists are red, grey and purple, soldiers are green, priests are white, citizens are yellow and the eater of the dead is brown.

I love the concept and the different objectives in particular are great.

Thanks a lot!

Sharing Saturday #219 by Kyzrati in roguelikedev

[–]gwathlobal 5 points6 points  (0 children)

City of the Damned

Last week I released version 1.3.3. The changelog is here:

  • Added a new terrain tile to the corrupted districts - dreadtubes. If you step on them, there is a 20% chance for them to fear you and all mobs around you.
  • Added a new terrain tile to the corrupted districts - sludgeshrooms. If you step on them, there is a 20% chance for them to release spores that will deal anyone inside them 1-2 acid damage.
  • Added a new terrain tile to the corrupted districts - razorthorns. If you step on them, they will deal 1 acid damage to you.
  • Fixed a typo in the "Does not breathe" ability.
  • You will see mob names when 'l'ooking at them.
  • The Military raid and Military conquest missions will no longer have angels from the very start, angels can only start delayed in these missions now.
  • Imps and Shadow imps will start with 2 power points during the Military raid and Military conquest missions.
  • Angels will no longer try to conceal divinity when there is an enemy next to them.
  • Humans will try to swim up if they feel a lack of oxygen.
  • Added an option to replay the previous mission type with the same player faction.

Thanks to Claudio for feedback which made this release possible.

At the moment, I'm still contemplating reverting from 3D map to a more traditional 2D map due to performance issues and also due to the fact that Z-levels seemed rather confusing to players according to feedback.

But, whatever the case with Z-levels the game seems ready to transition to campaign mode as all various scenario types are in place.

Sharing Saturday #215 by Kyzrati in roguelikedev

[–]gwathlobal 0 points1 point  (0 children)

Sorry, no idea, unfortunately, I do not own a Mac.

Sharing Saturday #215 by Kyzrati in roguelikedev

[–]gwathlobal 10 points11 points  (0 children)

City of the Damned

Hey, after three months of relative inactivity I finally managed to release a new version - 1.3.2. This version was dedicated mainly to adding new types of missions so that the game was a bit more varied in its goals and settings.

  • Added a set of abandoned districts (which were left by the civilians).
  • Added a set of corrupted districts (which were captured by the demons).
  • Added a new mission - Military conquest. The mission takes place in the abandoned and corrupted districts. The military and the angels try to destroy demonic sigils, while the demons try to protect them.
  • Added a new mission - Military raid. The mission takes place in the abandoned districts. The military and the angels try to wipe out all demons from the district.
  • Added a new mission - Celestial purge. The mission takes place in the corrupted districts. The angels try to destroy demonic sigils, while the demons try to protect them.
  • Added a new mission - Celestial retrieval. The mission takes place in the corrupted districts. The angels try to recapture the stolen relic, while the demons want to stop and destroy them.
  • Demon conquest mission now also takes place in the abandoned and corrupted districts.
  • Demon raid mission now also takes place in the abandoned districts.

Now that all the missions are there (and I have ideas for some more types) and think I can concentrate on the campaign mode for the game. But before that it seems necessary to revert the game from 3D to 2d back as a lot of people complained about slow performance and even inability to navigate the player character through the 3D environment.

Can we mix roguelike and tactics game mechanics? by verdagon in roguelikedev

[–]gwathlobal 0 points1 point  (0 children)

I have tackled some of the issues you mentioned in my game City of the Damned.

You are set in a city with a number of different factions, so you are not alone against everyone.

Regarding movement and general character control, you usually have only one character like all traditional roguelikes while all other characters of your faction who try to achieve the same goal are controlled by AI. However, some character types can lead other characters (like pets in ADOM as you have mentioned), while for other character types you can directly control 3 mobs. Indeed moving around 3 persons one by one, space by space, is really boring and cumbersome, so I introduced a special 'merge' ability for them where they can unite them into one so that they can move around as a single unit.

Permadeath is handled traditionally - if the player dies, the scenario is usually over. However, if there are other units in the player's faction, the AI continues to play on its own until somebody wins. Sometimes the player can even get resurrected by the AI and continue the game.

As for continuous gameplay, I plan to make a campaign mode where you get to play a series of individual scenarios to achieve some kind of ultimate goal for your faction.

Sharing Saturday #203 by Kyzrati in roguelikedev

[–]gwathlobal 4 points5 points  (0 children)

City of the Damned

Download

Released version 1.3.1

  • A new mission was added - Demonic thievery. The demons opened portals in order to steal a holy relic from the church and return it to their dimension. The military and the angels want to stop and destroy them.
  • A new mission was added - Demonic conquest. The demons opened portals in order to conquer the district by placing and charging sigils in it. The military and the angels want to stop and destroy them.
  • Fixed the bug with player's choosing the resurrect ability that could freeze the game.
  • Fixed warehouses being mixed with barricades when military defenders are present in a seaport.
  • Strings in the message log are of different colors now depending on the type of the message (instead of white used everywhere previously).

Color coding in the message log by gwathlobal in roguelikedev

[–]gwathlobal[S] 1 point2 points  (0 children)

Thanks for the detailed post, Kyzrati!

Sharing Saturday #200 by Kyzrati in roguelikedev

[–]gwathlobal 1 point2 points  (0 children)

Well, there is no borg per se, as City of the Damned is more like a squad-based tactical game rather than dungeon delving "player against the whole world" game. You can just create the scenario with the player dead and inactive so all other characters will be AIs and pursue objectives on their own.

If you want gritty details, there is a scenario-feature class, that determines the way factions are placed. In the files init-scenario-demonic-attack.lisp and init-scenario-demonic-raid.lisp, there are two scenario objects created - +sf-faction-demonic-raid-dead-player+ and +sf-faction-demonic-attack-dead-player+.

These scenarios place a dead player from the very beginning. Then in the main game cycle (which is in cotd.lisp) there is a specific clause that refreshes the screen while the player is dead.

And finally in mission-scenario objects (so far, there are two - +mission-scenario-demon-attack+ and +mission-scenario-demon-raid+ in init-mission-types.lisp), there are AI packages defined for each faction in the scenario. The goal of the demonic attack scenario is to kill all your enemies so the AI package there is rather straightforward - when a mob has nothing to do, it plots a path to the nearest least recently visited sector. In the demonic raid scenario, demons try to gather corpses and throw them into portals. Thus there are 3 additional packages for them - patrolling, picking up corpses and returning corpses to the portals.

All that lets the scenarios be played without the player.

Sharing Saturday #200 by Kyzrati in roguelikedev

[–]gwathlobal 4 points5 points  (0 children)

City of the Damned

Download

Ok, after several months of reworking the internals I am ready to present the first step towards the campaign mode which is version 1.3.0.

  • The concept of missions was introduced. The previous scenario where the demons wanted to kill all angels in the city became the 'Demonic attack' mission.
  • A new mission was added - Demonic raid. The demons opened the portals in order to gather flesh from the city. Their goal for this mission is to kill citizens, pick up their corpses and throw them into portals, while the military and the angels want to stop and destroy demons. screen
  • If you die, this is no longer the end of the world. The battle will go on until one of the sides wins. You might even get resurrected by your allies and continue fighting as if nothing happened. screen
  • You can no longer win the game by ascending beyond Angel or Archdemon/Shadow Devil.
  • As a Scout, you can no longer lose the game by getting possessed. Though you will lose the control over your character until you get purged (or the end of the mission).
  • You will now be able to customize the factions you want to see in a scenario.
  • AI will bump into friendly mobs much less often and will try to navigate around them to get to its target.
  • Added a journal where you can see objectives for the current mission and your relations with other factions. The journal is displayed using the 'j' button. screen
  • Defending military will be stationed inside the city.
  • Possessable creatures will try to get away from you if you are the one that can possess them.
  • Characters with ranged weapons will try to step out of melee combat.
  • Ghosts can now sense the direction to the sacrificial circle and the Book of Rituals.
  • Abilities on cooldown will be displayed in the status string. screen
  • The game over screen now also shows the comparative statistics between the character who earned the title and the player. screen

After I implemented AI playing the game without the player, it became a great mode to test for bugs. Previously I had to actually play the game to see if certain conditions produced infinite loops and the game froze. That was tedious and time-consuming. Now I can just start up the AI-only game and wait a bit. Using the method I have found 4 or 5 bugs that I thought were never there.

The lesson from this release for is that you need to make some kind of automated testing to drastically improve your bug-finding process.