Temple of The Roguelike Forums
Game Discussion => Early Dev => Topic started by: pat on February 02, 2019, 03:24:20 AM
-
(https://i.imgur.com/pW5xxsb.png)
The Red Prison is a roguelike adaption of the Basic Rules for the 5th Edition of D&D. It’s been in development for about five or so months and it’s quickly progressed to a fairly advanced playable prototype.
Download: http://patjw.itch.io/theredprison
Every week I upload compiled builds for Windows and should be playable for Linux through Wine.
The game features four classes (fighter, rogue, wizard and cleric) and four base races with subraces (human, mountain dwarf, hill dwarf, wood elf, high elf, lightfoot halfling and stout halfling). Currently most low level content is in the game along with an ever expanding bestiary. I’m in the process of working on mid-level content and high level features is an eventual goal.
(https://i.imgur.com/NbAq7Bj.gif)
The game features auto-explore, detailed character creation and party selection. All classes and races are complete enough to be playable. There is a real focus on party mechanics and you and your allies can be revived by others after being knocked unconscious if your team manage to win the battle before you die. You can meet and recruit other NPC’s in the dungeon and there are a few different types with different skill sets to explore, although magic-using allies are still a work in progress.
Another feature is a detailed lighting system combined with some races having darkvision and others going without. You will need to decide whether you use an offhand equipment slot for a torch or whether you explore in the dark or ask your allies to light their torches for you.
The game follows the rules as closely as possible so the Basic Rules double as a quasi-manual. All of the various statistics about weapons, armour, monsters and spells are faithfully created in-game from those rules. They’re included with the game but available here for download: http://dnd.wizards.com/articles/features/basicrules
Some features of 5e D&D don’t translate well to roguelikes, such as initiative, bonus actions, reactions and some other things but hopefully players will find that the game aims to be as accurate a conversion as possible.
I’ve only really posted about this game in the roguelikedev subreddit to date but I’m starting to realise that I need more playtesters to help me shape things with the benefit of fresh eyes and more importantly, I think the game is fun enough now to be worth distributing!
The general development goals from here are to keep adding the more complicated features (such as attacks of opportunity and grappling etc), along with more spells, more items, more monsters, more detailed party interactions and a much more sophisticated encounter system where monster distribution makes more sense than just random placement of enemies in a random dungeon.
If anyone is keen to give it a go and give me some feedback, I’d be very appreciative!
-
Sounds extremely promising.
-
Didn't the Incursion guy do a similar thing but was really careful not to reference D&D for legal reasons?
You might want to look into that.
-
I’ve looked into it in great detail, and I’m a lawyer myself. Incursion is a similar concept in relation to 3.5e but a much more complicated project. I’m not sure what licensing issues (if any) Julian came up against, but I’ve been careful to comply with the law with this game.
Everything in the game is part of the SRD (http://media.wizards.com/2016/downloads/DND/SRD-OGL_V5.1.pdf) and the Basic Rules are mostly a very stripped back version of that. Where something comes up which isn’t part of the SRD then I remove it. There’s only a few instances of that so far and the game follows the Open Game Licence, the text of which is distributed with the game.
-
Should be fine, 5e's orientation on SRD/OGL is more straightforward compared to the 3.x era---and even that era was still ample enough to give rise to Incursion, Knights of the Chalice and the soon to be sequel, Low Magic Age, etc without them chafing overly much on adaptation.
-
Well done and very ambitious project, heaps of content in D&D 5th Edition.
-
There's been plenty of progress over the last week and as always, I've uploaded the latest dev build for download at: https://patjw.itch.io/theredprison
* To resolve issues with content in the SRD under the OGL, the Stout race has been removed and has been replaced by the Stoutheart race based on the original work of Julian Mensch in the game Incursion based on OGL 3.5e d20 - Stouthearts are a hardy race of halflings although implemented but not finished in the final version published by Julian, they were enabled once the source was released.
* Wood elves and mountain dwarves have been removed and replaced by versions inspired by wood elves and mountain dwarves published under the OGL as part of the 3.5e D&D SRD.
* Added extra attack per turn to veteran.
* Created new NPCS: archmage (spells unfinished), assassin (assassinate ability unfinished), bandit captain, cult fanatic, gladiator, scout and spy.
* Fixed bug with missing challenge rating data for new NPC's.
* Implemented opportunity attacks. Now on every move, a check is done of adjacent creatures and compared to adjacent creatures after you have moved. If this results in a creature not being adjacent to the second tile, it is assumed that you have moved away and they get an opportunity attack on you. Amended the attack function to allow for this to enforce only a single attack on this reaction and to show the text (OA) when it takes place.
* Added 3 new vault templates for the map generator.
* Made poisonous monsters poison upon a successful attack.
* New monsters: lion, lizard, lizardfolk, mammoth, manticore, mastiff, medusa, merfolk, minotaur, mule, mummy, nothic, ochre jelly, octopus, ogre.
* Fixed bug with being able to give orders to and recruit unconscious NPC's. You could knock them out, then ask them to join you before reviving them, which has now been removed.
* Fixed bug with ordering allies to light and put out torch. Sloppy coding led to me assuming that all allies had the same torch status, while now it properly checks each one.
* Tweaked colours for lit and dark floors to make it easier for stealthy players to stay in the dark.
* Blindsight wasn't doing anything at all so now it actually works and it's practically much the same as darkvision for now. A lot more monsters will be able to see you in the dark.
* Any key press now interrupts autoexplore. Previously it just kept going until it ran into an enemy, ran out of areas to explore or experienced an error for some reason.
* Much like the only OGL martial archetype was champion for fighters, the only domain for clerics is life. So all cleric's are now life domain and get the preserve life channel divinity power at level 2 along with being able to turn undead (both of which are works in progress).
* Implemented new ability menu accessible by pressing 'a'. Updated help screen to reflect this.
* Changed talking to monsters by making it able to target any creature in sight. I don't see why you can't yell out at an NPC to ask them to join you or die rather than having to stand next to them. Same with giving orders - it should work at a distance and it now does and this is consistent with how group ordering works as well.
* Realised that there was a bug where you could ask ANY monster whatsoever to join your party and not just NPC's. Fixed by adding an NPC flag to all monsters to check against. Updated various messages to reflect this new possibility.
* Implemented second wind ability for fighters. Can heal 1d10 + character level hp, but need to rest before can use it again.
* Part of implementing abilities was this involved needing to deal with removing effects on creatures after a long rest was taken. This was done in a general sense by the creation of an instance of Condition which can have a wide range of effects and basically deals with all buffs, maluses and misc effects on creatures. I added a new flag for this 'remove_on_rest' and went through and removed all those conditions from all creatures on a long rest.
* Added action surge ability for fighters. Grants an extra turn on the next move but can't be used again until another rest has been taken.
* Tidied up bugs to do with action surge and it works properly now. It doesn't take a turn to activate and allows the player to effectively make a free move once at a time of their choosing - ie. two attacks or two moves or a combination of that or other actions.
* Implemented turn undead. Cleric can channel divinity to turn undead once per rest (twice after level 6, thrice after level 18). Created new AI type for scared creatures which means that they move away from the cleric on every turn if possible upon a failed wisdom saving throw. Undead are now scared for 20 turns upon successful turn undead - the rules as written say this expires when damage is inflicted, but I think it's more fun to be able to herd monsters into a corner and slaughter them while scared. Effects all creatures in sight with the 'undead' trait. Implemented temporary conditions to record the use of channel divinity because the number of uses per rest is also used for the purposes of the yet-to-be-implemented preserve life ability.
* Changed giant weasel colour because it was too similar to giant rat and shared the same character.
* Implemented preserve life. Also uses the same channel divinity system as turn undead. Allows the user to select as many targets in sight as they like (excluding undead and constructs, but not excluding enemies otherwise). It then goes through them removing duplicates, before healing them in order. Total healing power limited to 3 x user level and can only heal up to half of the max HP of the target creature.
* Made healing word not take a turn to use, although it is restricted to one use per turn. It is meant to be a bonus action in the rules as written but this concept doesn't exist neatly in game, but that workaround seems to be good enough.
* Fixed bug where incapacitated creatures would take opportunity attacks.
* Made it so that any source of healing is enough to wake up an unconscious creature and give them 1HP before applying the healing effect.
* Fixed bug with poison spray cantrip - somehow an error snuck in where it caused a crash.
* Changed colour of title screen to red to fit the name of the game.
* Fixed bugs with recently added game state variables not being initialised upon loading games. It caused a crash when games were loaded previously but should be working now.
* Fixed bug with autoexplore where target wasn't reset upon changing levels.
* Changed colour of bugbear because it looked like black bears.
* Fixed bug where protection applied to allies even when defender was unconscious.
* Changed 'guard location' order to allies to a more general 'move to location'. Amended the function which allows selection of an unexplored and out-of-sight target as a destination. It can be in walls and a blocked square and the allies will still try and get to it. They deliberately don't pathfind to the target because that'll ruin dungeon exploration a bit, but they'll try to dumb-path their way there, so it can be used to send allies into unexplored rooms and the like which is helpful if you're a non-combat build.
-
(https://i.imgur.com/dO49QfS.gif)
* Reversed display order of weapon name and to-hit bonus. It occurred to me that it was back to front.
* Reduced rest counter from 100 to 50.
* Started work on level 2 wizard spells - darkness, flaming sphere, hold person, invisibility, magic weapon, misty step, shatter, web.
* Started work on level 2 cleric spells - aid, lesser restoration, prayer of healing, silence, spiritual weapon, warding bond.
* Finished darkness spell. Allows caster to target a tile and darkness effect applied to that tile and every tile within 3 steps of that spot. Overrides all illumination effects and creates an artificial dark pool. Required changes to the Effect class to allow for invisible effects and dark effects and also changes to the light calculation routuine to look for these new dark objects.
* Added changes to the general effect system. Previously it was only used for the torches seen on walls. They weren't items in the usual sense but rather an abstract effect which had the illumination tag attached. Darkness was the first effect which wasn't permanent so that meant that different issues came up with durations, effects taking turns to count down duration and finally, removal of spent effects. All these issues sorted which opens the door to a pretty useful system for things like flames, clouds, gases, caltrops, oil on the ground etc.
* Added darkness spell to all characters with the preset Human Wizard start for testing purposes. Otherwise 2nd level spells don't appear in-game yet because spellbooks are on the to-do list.
* Finished flaming sphere spell. Like for darkness, current version has it added as a spell for the preset Human Wizard for testing purposes. Creates an immobile object on the map with the illumination property. Added a special case for the Effect class take_turn function which searches for all creatures adjacent. They make a saving throw against the caster's spell power (saved in the flaming sphere object as a special variable). On a successful save, they take 1d6 damage. On a failed save, they take 2d6 damage. Fire immune creatures are not affected.
-
(https://i.imgur.com/A4p56YP.gif)
(https://i.imgur.com/iQwHcMv.gifv)
Pretty solid development week with a lot of work being done on new spells - I finished the basic set of level 2 spells for wizards and clerics!
Hopefully this means that the gameplay for casters is a bit more nuanced now with a few more tools at your disposal. Spellbooks aren't in yet, so if you want to try out these spells use the premade Human Wizard template to start with them all.
This week that will change though because I've built the foundations for magic items, so hopefully by this time next week I'll have spellbooks done alongside a few other items.
* Fixed bug in companion AI. An error in the code made NPC's jump around rather than walking tile by tile when trying to heal. Should now be working properly.
* Finished hold person spell. On a failed wisdom save, replaces the AI with a held person AI for 20 turns or until they make a successful wisdom save. Available for all clerics and as for testing purposes on premade Human Wizards.
* Fixed bug where I forgot to make flaming sphere cause damage.
* Fixed bug where player can kill themselves with a spell area of effect, and double their XP as a result.
* Fixed bug in companion AI where still tried to path to player after they were dead.
* Finished invisibility spell. Applies a condition to caster or another creature within touching distance which lasts 100 turns and prevents all other creatures from seeing them. Creatures with the blindsight trait can still sense them. Gives advantage to an attacker who attacks whilst invisible against an unaware creature. Changed attack function to remove invisibility condition upon any attack. Changed spell function to remove condition upon casting as well. Doesn't take into account magical detection abilities but they don't exist in-game yet.
* Updated opportunity attack function to make invisible creatures not take these. It cancels invisibility automatically and that's probably not something that I want people to have unwittingly happen.
* Updated UI to show whether proficient or not in equipped armour and shields.
* Fixed bug where creatures were taking opportunity attacks against unseen actors.
* Updated display functions to take into account hidden and invisible monsters.
* Added the ability for items to have temporary conditions applied to them. Added a check for every turn to loop through all items on map and all items in all actor's inventories to make those conditions take a turn. A fair bit of extra complexity but necessary for temporary effects such as the magic weapon spell.
* Changed message system for expiring conditions to allow messages to be given to player for effects on items in player's inventory. It also works for items in sight on the ground.
* Updated UI to reflect changes to items with temporary conditions. Updated combat routines to deal with items with temporary conditions.
* Updated UI to show whether proficient or not with armour and shields equipped. This wasn't clear before because the only outcome was disadvantage when attacking, so now it's clear.
* Reworked torches and their illumination quality. It was previously a trait but that was a bad fit, and instead it's not a permanent condition like other enchantments and effects on items.
* Finished magic weapon spell. Lets player choose an item in inventory. Creates a new effect which adds +1 to hit bonus and +1 damage for 100 turns before expiring. Doesn't work on anything which isn't a weapon.
* Finished misty step spell. Allows caster to teleport to any square within 6 tiles.
* Finished shatter spell. Area of effect damage 3d8 to anyone with 2 squares of target tile. Successful constitution save halves the damage.
* Finished web spell. Creates a new effect on each square within 2 squares of target. Web effect checks each turn for an actor on its location. If so, they must make a dexterity save. On fail, they are now 'stuck'. Stuck is handled by attaching a new condition to that actor which makes them make a successful strength saving throw before they are able to move. The duration of this condition is the same as the original effect, so they should both expire at the same time otherwise. Added checks to all move functions to account for this.
* Added check for unconscious status to remove if hp ever goes above 0 for any reason. This will hopefully catch any odd instances where hp's are added somehow in a weird way.
* Finished aid spell. 2nd level cleric spell which lets you pick 3 creatures and boost their hp and max_hp by 5 for 8 hours. There seems to be some conjecture about what happens when the spell expires and you need those 5 hp to stay alive, so I've gone with the view that you get to keep the current hp but not the max_hp. This avoids any of those weird scenarios.
* Finished lesser restoration spell (for now). Touch effect to remove a range of harmful conditions. The only one that exists in game right now is being poisoned, so it just cures that. Will need to revisit for deafness, blindness, and paralysation.
* Finished prayer of healing. 2nd level cleric spell which heals up to 6 creatures in sight of 2d8 plus wisdom bonus of HP.
* Finished spiritual weapon. 2nd level cleric spell which creates a new object on the map of the caster's faction which fights alongside the caster. The rules as written call for a high level of control over the weapon, but that didn't seem like fun so I gave it autonomy. It's effectively a flying sword with 100 HP (making it practically indestructible for our purposes) and with a to-hit bonus and damage bonus of the caster's wisdom ability modifier.
* Created a new 'summoned' condition to apply to creatures which makes them disappear after a certain duration and made this apply to spiritual weapons. Can easily be extended to any kind of summoned creature imaginable.
* Adjusted pathfinding to make allies slightly prefer going through doors rather than switching places with allied creatures.
-
After receiving a fair few requests in a row for a graphical version, I decided to start fiddling around with the concept and it snowballed into some furious programming over the last few days.
I ended up ignoring my previous plans for the week and threw myself headfirst into implementing this new mode. After playing around with the libtcod graphical tile options, I decided that it was too limiting and brought bearlibterminal into the mix for the UI with libtcod for behind-the-scenes stuff.
This of course meant that I spent about two days completely rewriting the game's UI. At some points I regretted this immensely and it felt like I'd broken things irretrievably, but it eventually came together and I've grown to really like bearlibterminal. The next two days were spent doing the grunt work to get tiles into place and into the game.
Here's the current version:
(https://i.imgur.com/5yaJ5sj.png)
I'm not sure if I'm completely happy with the resolution of the main map, but I'll leave it for a while to see if it grows on me. It's definitely harder to parse than ascii, but that was always going to be an issue and I think the masses don't care about that as much as I do.
-
Tiles version finished and released: https://patjw.itch.io/theredprison
(https://i.imgur.com/giMEb7m.gif)
-
New version released with ascii being back as an option, both in 8x8 and 16x16, along with a bunch of other changes. Biggest development is that party members now cast spells in attack and to heal which actually makes it a choice between veterans, mages and priests as companions.
(https://i.imgur.com/j8qMFUW.gif)
* Reimplemented ascii mode as an option to toggle between with '`'.
* Changed key code for ascii to F1 because I was having some problems on different systems. Experimented with a few different view options but opted against changing things for now.
* Fixed typo in message for talking to non-talking creatures.
* Changed tile for veteran into something a bit more menacing.
* Changed ascii map view to 16x16 font for more readability and played around with a few different font options.
* Tidied up references to colours which existed in libtcod but not understood by BLT.
* Fixed functions with targetting and different display systems so everything should be working now and look relatively neat.
* Added extra small ascii display mode, because I saw that Incursion did this with 8x8 font. Changed the terminal 8x8 font being used to the Incursion 8x8 font, which was very similar anyway.
* Fixed bug with displaying walls in line of sight but not visible in ascii modes. They were being drawn in black and not a shade of grey.
* Wizards now start with a choice of 6 level 1 spells. Considering that there is only 7 options, there isn't all that much choice at this stage. Human Wizard templates gets them all apart from thunderwave.
* Wizards get two spells of a level which they can cast on levelup.
* Changed player starting XP to 0 - this seems good enough when you have a party to keep you alive and level 1 monsters are not very threatening.
* Updated acid splash to show area of effect. Updated number of wizard spells to show projectile path.
* Added new AI type for magic using companions. Made this AI be allocated at NPC generation and when converted during the game if they have the 'magic' proficiency. Allocated that proficiency to all potential NPC types so that spell slots are allocated accordingly. Added artifical levels to these NCP's so they'll have the appropriate spell slots.
* Added ability for companions to use shocking grasp or inflict wounds when in melee range. This triggers 30% of the time currently if the spells are available.
* Added ability for companions to use fire bolt and sacred flame when at range. This triggers 30% of the time if spells are available.
* Added ability for companions to use cure wounds if near an ally at 25% health or less during combat. Outside of combat, will look for an ally in that injured and state and walk to them and cast heal.
-
(https://i.imgur.com/6t01bFy.gif)
This week saw me do a bit of the background work needed for more items. Each weapon and armour type got its own unique tile along with a few other changes and bug-fixes. Items are still a work in progress and I hope to get a fair few more done in the next week along with magic weapons and armour. The systems for magic items is already builty but I've got a few issues to work out in terms of displaying them when compared to normal items.
* Added unique tiles for each armour and weapon type along with other miscellaneous items.
* Changed number of wizard starting spells to 3 level 1 spells along with 3 cantrips. Changed number of new wizard spells per level up to 1 per level.
* Fixed bug with magic missiles causing doubling up of targets because of AI being able to use the spell.
* Properly implemented benefit of constitution bonus for level up. Previously didn't recalculate this for all pre-existing character levels. Fixed this by tracking the unmodified base max HP from character creation and recalculating this from scratch on each level up by adding the HP bonus per level arising from constitution (and dwarvern toughness).
* Implemented potions of healing. Added custom graphical tile. Fixed some old bugs to do with items which can't be used as equipment which have lingered because this is the first non-equipment item to be implemented.
* Implemented vial of acid. Thrown one-use projectile which causes 2d6 damage.
-
The Red Prison is now open source! The code is horrible but it's yours...
(https://i.imgur.com/Dvf6hkq.gif)
* Fixed XP distribution. Now only happens on monster death, not KO. This should avoid scenarios where player can exploit KO'ing NPC's for free XP.
* Fixed bug where player would not be drawn as being red when dead and waiting for new game. Used a special variable in the unconscious condition to track which monster was the attacker for XP purposes if death follows. Changed around the order of a few things because with XP being awarded only at the last minute, some features of dead monsters needed to be tracked longer.
* Added more information for magic missile spell to make sure it's clear that you can select multiple targets.
* Started work on mob generation. Basically the plan is to pick a few iconic and fun monster types and make them generate in groups. One is picked as the leader and the rest have the companion AI much like player companions. Currently there is a 1-in-10 chance of generating a mob in a vault rather than the usual monster generation routine. Special factions created for mobs named after their monster name which means that they'll be friendly to each other but hostile to the rest of the dungeon. The idea is to progress from here to giving certain mob members templates to mix things up a bit - orcs might become shamans, kobolds might become mages, and gnolls might become thugs.
* Removed ability for mob companions to talk because it was annoying. Removed ability for mob companions to revive because it slowed down the AI checking. Moved around part of companion AI to try and fix bottleneck impacting on game speed.
* AI companion pathfinding was too inhibitive for bigger mobs, so introduced an AI constant of path_finding_chance. Player allies always use pathfinding but monsters only use it 20% of the time.
* Added orc mobs (made up of 3 to 5 regular orcs for now) and undead mobs (made up of 3 to 5 undead out of skeletons, ghouls and zombies).
* For some reason my AI changes have broken pathfinding and I can't figure out why so reverting to old versions from a couple of days ago.
* Fixed rare out of bounds bug in basic monster AI.
* Turned pathfinding altogher for monster mobs because of the bottleneck that it creates. This might result in a few monster being separated from the rest of the pack but that's not the end of the world.
* Added bandit mobs led by a bandit captain.
* Fixed bug with shield proficiency not being displayed properly.
* Made names of corpses appear red in the list of objects within sight for clarity.
* Created templates for orc and kobold mages and shamans. 10% chance of each monster as part of those mobs being given these templates. Spells and magic proficiency given to each one along with special magic user AI.
* Tweaked moving routines to try and make things cleaner.
-
Big changes for the week:
* Magic weapons and armour are in! There's a chance that every item in these categories generated in the dungeon will have an enchantment and then there are different varieties with different rarities ranging from +1 (uncommon) to +3 (very rare).
* Enemy mobs have new support with ranged fighters joining their ranks. Kobold slingers, orc chuckers and bandit archers now appear and can be very dangerous. This adds a whole new element of light management to the game, because they can't shoot you if they can't see you in the dark so consider extinguishing your torches as you sneak up on your enemies!
* New keyboard shortcuts to streamline play - walk into doors to open them instead of always pressing 'o'; 'F' to fire last projectile at last target (if they're still alive); 'M' cast last spell at last target, but warning, this might be a bit screwy because some spells don't easily fit into categories which will work with this but the game might let you try anyway.
(https://i.imgur.com/cleLnZV.gif)
Full change list:
* Amended targetting with +/- to give a choice between targeting hostile or friendly creatures first. Makes ranged combat and casting a lot faster.
* Fixed bug with casting bless and failing to select a proper target caused a crash.
* Fixed allocation of cleric spells. 2nd level spells are now all awarded at character level 3 when you get your first 2nd level spell slot. Will be maintained as higher level spells are implemented.
* Fixed allocation of wizard spells. On each level up, you can only select a new spell which is castable for your level. This stops the player picking uncastable level 2 spells from the start etc.
* Added quick fire command as 'F'. Player will attempt to make a ranged attack against the last target if that target is still active and not incapacitated.
* Added quick cast command as 'M'. Player will attempt to cast the last spell against the last target is that target is still active and not incapacitated.
* Amended all possible spells with a simple target to be passed so they work with quick casting. If a spell doesn't take a target in that way and a quick cast is attempted to use it, then it will hopefully just work like an ordinary spell.
* Fixed out of bounds bug in companion AI.
* Added basic functions for adding permanent conditions to items to enchant them. Implemented routines for adding these conditions to weapons and armour. Added name overrides to make sure that the base item name isn't changed but the enchantment is displayed on screen. Added name prefixes and suffixes as well.
* Implemented random chance of every armour and weapon found in the dungeon to be enchanted.
* Implemented distribution of higher enchanted items - 10% of any enchantment at all. From there: 5% chance of +3, 20% chance of +2, 75% chance of +1.
* Implemented monsters with range attacks. New AI type which will fight melee at close range or at distance will not approach but rather 50% of the time will make a ranged attack. Added new base stats for monsters which will be able to make ranged attacks. Started with kobold archers and they are implemented with a 10% chance of each kobold in a mob being an archer. Added flag to pass to attack routine to make sure it knows to look for ranged attack stats as opposed to normal stats in the stat block.
* Redid movement functions to hopefully iron out some kinks by resorting to excessive long if statements.
* Changed kobold archer to kobold slinger. Added orc chucker and bandit archer to the respective mobs.
* Fixed bug where incapacitated enemy in line of sight was preventing ally from reviving.
* Added open door on an attempt to move into a closed door rather than having to use the 'o'pen command.
-
This is looking very good!
-
Thanks! I've been working this week on more magic items, specifically flaming and frost weapons. Flaming weapons are particularly useful because it can let you open up another hand because they also replace a torch for lighting.
Here's a gif of me finding a pretty great frost spear +2 and trying it out before deciding to test out whether it would work if I threw it at my allies (spoiler: it did).
(https://i.imgur.com/T5yEh5c.gif)
* Added flaming effect for enchanted weapons. Also adds a separate illumination so the item functions as an always-lit torch whether in the player's inventory or on the ground.
* Made it so that illuminated items in inventory must be equipped to cast light.
* Added ability for conditions to apply extra damage when they are used to hit which is necessary to give effect to flaming (and other conditions). Created generic function to apply different damage types if target is still alive after primary damage is applied.
* Finished flaming weapons - illumination on being equipped and 2d6 extra fire damage on successful hit. Should work for ranged, thrown and melee weapons.
* Finished frost weapons - 1d6 extra cold damage on successful hit.
* Added extra check into condition effect processing to take into account immunities.
* Added colour over ride variable for items with special conditions so that they show up clearly on the GUI so that players don't miss them.
-
(https://i.imgur.com/QEZaCYj.gif)
Changes for this week include a number of UI tweaks to make things work smoother with some more user friendliness. I've also started work behind the scenes on a broader arc of advanced dungeon/quest generation. I've built the system for displaying conversations and the like for players as they run into NPC's of importance and I'm currently going through the process of how I want that aspect of the game to be fleshed out.
I think the leading approach at this stage might be to have a portion of the dungeon on a level inaccessible until the player speaks to a quest giver who tasks the player with killing a tough mob of monsters, recovering a treasure or another task along those lines. I want to make it so that choices have some complexity, ie. you might be able to decide to forego the treasure and turn on the quest giver, and that's the part I'm taking some care to plan.
-
Players now get a choice of 50 graphical avatars. You can select one on character generation or you can change at anytime throughout the game via F3.
(https://i.imgur.com/PflFvDl.png)
-
New version released with changes this week including:
* Implemented spell macros. Made a menu accessible through F2 which lists spells and allows the player to press a number and assign a spell accordingly. Made it so these are saved and loaded with the rest of save game data so that can be kept throughout the whole game.
* Changed 'F' and 'M' so that it checks for last target and if none, then closest hostile. Streamlines ranged and magic gameplay a lot!
* Made it so that only the player and allies can be knocked out. It was just annoying as it was without any benefit - there were no circumstances where you would realistically want to heal or revive a neutral or hostile and monsters would rarely be in a position to do it either.
* Fixed bug where equipping enchanted ammunition gave bonuses to melee combat. Made it so that quiver slot is the one exception for added enchantment bonuses for equipment.
* Fixed bug where function which returned whether an actor could see another actor through darkvision didn't take into account the effect of distance. It's now properly restricted to 4 squares.
* Fixed bug where a monster might see an enemy and could still do ranged attacks or magic attacks despite that enemy moving out of sight.
* Began work on custom avatar for players. Implemented basic menu for selecting player avatars and allocated the standard ones for premade character templates. Added 50 avatars and completed menu for selecting and added F3 as key binding for this in-game so player has complete control at all times to change.
* Changed avatar selector to a red box to make things clearer after user feedback.
* Allowed NPC's swap places with an unconscious ally (including the player) to continue fighting rather than waiting for their ally to die first in close quarters combat. This required fixing a host of small bugs in my ai code which weren't noticeable until now, shifting the has_swapped flag from the ai component to the main object component to recognise the fact that the player object doesn't have an ai and allowing for an exception for swapping places when the player is involved - the player must be incapacitated to be swapped. If that exception wasn't in place, then NPC's would swap with the player all the time which was annoying but now they'll only do it and override the player if the player goes down.
* Fixed bug in companion ai where a null value was passed after conversion when it shouldn't have been.
-
(https://i.imgur.com/m5OaVLn.gif)
* Added info screen to display player's traits and proficiencies by pressing '@'. It still needs to be crossreferenced to the game docs but at least players can see what weapons etc they can use at a glance.
* Added graphical tile to spiritual weapon.
* Added red heart icon to top right corner of ally's graphical tile.
* Updated area of effect animation for bearlibterminal. Allows for a transition between two colours with increasing and decreasing alpha values with 3 random characters to be displayed.
* Rewrote explosion effect animation for bearlibterminal.
* Rewrote ray effect animation for bearlibterminal.
* Implemented new bolt effect animation. Draws a line between caster and target and draws a projectile with a fading trail behind it.
* Implemented projecile effect animation. Draws a '*' along the path of the projectile so the player knows what's going on in combat with ranged attacks.
-
Because I’ve been updating so regularly, to make distribution easier, The Red Prison is coming to Steam: https://store.steampowered.com/app/1074040/The_Red_Prison/
-
New version up: https://patjw.itch.io/theredprison
(https://i.imgur.com/keq5GWz.gif)
Major changes are the inclusion of level 3 wizard spells fireball and lightning bolt, the introduction of a character level cap of 10 to reduce the scope of the game to something more feasible for now, and the reworking of composition of various graphical tiles so that objects can be stacked on screen as well as a few other better looking effects.
Full change log:
* Implemented fireball spell. 3rd level wizard spell with radius of 3 squares, dexterity check for all targets in that radius with 8d6 damage on failed save and halved for successful save.
* Updated spellcaster AI so that mage companions can use the fireball spells if they are far enough away to be safe and no allies will get caught in the blast.
* Fixed bug where enemy archers projectiles weren't being animated.
* Fixed bug where actors out of sight would overwrite door squares.
* Added a 1 in 3 chance of kobolds, orcs and bandits in mobs to have a lit torch.
* Increased chance of spellcasters using shocking grasp and inflict wounds in combat to 50% per turn.
* Fixed bug where AI spellcasters weren't properly using spell slots.
* Fixed issued in compiled version where second console window opened for no reason.
* Added level cap of 10 so that focus can be put on those class features under the cap.
* Implemented lightning bolt spell - 3rd level wizard spell with a ray sent from caster, dexterity check for all targets in the way with 8d6 damage on failed save and halved for successful save. Still not finished because it needs to keep going until it hits a wall and this currently doesn't happen.
* Added transparency to custom tiles. Changed actors to be printed on another level to background and to effects so that they can be visually merged properly for a better graphical effect. Made a whole host of changes behind the scenes to do with different layers - now background is layer 0, actors, items and effects are layer 1, special effects are layer 2, and menus are layer 3. Items now stack on ground (!!!).
* Fixed bug in character creation where menus for high elf cantrip selection didn't clear properly.
* Fixed bug where last spell caused a crash when you hadn't cast anything yet.
-
Could you add support for arrow key movement?
My keyboard doesn't have numpad and the VI keys are too hardcore. If you have 8-way movement then maybe shift/ctrl + arrows could be used for that.
-
Yeah sure, I’ll take a look at that and see what I can do.
-
User feedback told me the font was too small (although it's exactly the same as Incursion) so I've made an unholy combination of a bunch of different fonts through the game with the help of BearLibTerminal to fix the issue:
(https://i.imgur.com/OnzDuDm.png)
-
If the last 2 images show the text as it appears on the actual game, then its much easier to read.
Good change!
-
This week was spent entirely on playtesting, UI fixes and bugsquashing yet again. I had a few people playtesting for me and it was really helpful to try and find a few odd things that were going on, particurly with areas of the game that I don't often replay. I'm pretty happy to say that I haven't had a crash or other issue come up in the last few hours of playtesting and my playtesters are saying the same. I even implemented an autoplay mode on top of autoexplore which doesn't quite manage to play without issue yet but manages to automate a lot of the game which was helpful.
This is great timing because the game unlocks on Steam Early Access in about 22 hours from now: https://store.steampowered.com/app/1074040/The_Red_Prison/
It should be an interesting experience and I'm curious about how it's going to go because the game is still relatively immature but there's still a fair bit of content worth playing in my opinion. It'll always be free on all platforms and I've currently got about 50 wishlists for the game and I'll be trying to monitor things to make sure things don't horribly wrong once people are playing through Steam and I'll be keen to see what the stats end up looking like, which is something I have no idea about currently.
Moving forward from here, I think I'll keep trying to release unstable builds regularly on itch.io but perhaps hold back on the content which hasn't been tested from Steam so that version is always stable. I've started planning for the next arc of development which is the addition of more dungeon features, encounters and complex traps. And what I mean by complex traps is something like the player exploring an old church and stumbling onto a pressure plate which locks the door and releases a group of ghouls. I don't think I'll implement traditional traps which just cause damage but hopefully they'll all incorporate the environment like that and make for some fun!
Full change list:
* Implemented a rough autoplay for testing purposes. It's commented out in public builds but it combines autoexplore with invincibility and autofight.
* Fixed bug with error in tile setting for chimera.
* Fixed bug with accidental doubling up of fighting styles at level up to 10 for fighters.
* Fixed bug with shocking grasp causing crash.
* Fixed bug with displaying armour character in non-default font in bearlibterminal.
* Updated character creation so that you can restart at any time and continue creating a character.
* Fixed number of player avatars with overly transparent backgrounds.
* Added heavy armour proficiency to all clerics to reflect that they are all Life domain.
* Made sure that previous saved games are deleted upon player death.
* Fixed bug where converted bandit archers would not use ranged attacks as allies.
* Updated character creation so if you press escape on the first menu, you're back to the main menu.
-
I had some really frustrating issues with the Steam Early Access launch where I had done everything right and the game was scheduled for release over the weekend. It announced to everyone that had wishlisted it that it was out but the store page didn't have a download link... there was a workaround through the steamdb website but it was really annoying to be unable to do anything about it until business hours Pacific time.
Turns out the issue was completely on Steam's end and the game was in a "unique release state" for unknown reasons which have now been fixed. So after all that, it's free for download on Steam at: https://store.steampowered.com/app/1074040/The_Red_Prison/
-
New versions up on Steam and Itch.io with bug fixes and improvements to autoexplore amongst other things. Full changelog:
* Fixed bug which caused crash when pressed esc while targetting spiritual weapon.
* Fixed bug which caused crash when trying to set spell macros but not having any spells to choose from.
* Fixed problems with autoexplore dealing with doors - now the game just opens all doors when passing by them.
* Added additional stop to autoexplore whenever a new object is seen.
* Fixed bug which caused a crash when casting misty step and cancelling during casting.
* Made change to make sure that no bug would show up during casting and cancelling spiritual weapon.
* Amended healing prayer message to make it clear that up to 6 targets can be chosen.
* Amended aid and bless message to make it clear that up to 3 targets can be chosen.
-
I've been playing occasionally when you update. It's still pretty early but has been coming along.
The display can be too dark at times. The explored parts of the dungeon are very hard to make out.
It would be nice if you could set the avatars of party members and if they had names to help tell them apart.
If you are done exploring a level, it could help if the auto-explore would take you to the stairs, since it is easy to forget where they are.
I also found a bug when I was using the auto-explore. I was at a bend in the dungeon like so:
########
.?.....#
.......#
#####@.#
#X.#
#..#
The question mark was a kobold slinger who was just out of sight.
He knocked me out with a stone, and my guard behind me (The X) revived me.
The autoexplore kept me going so my guy kept getting knocked out in that spot by the kobold.
It is kind of hard to explain. Maybe you can set up something up like this yourself.
-
I’ll take a look at those things, thanks for the feedback. That autoexplore issue is a weird one and it must have something to do with a quirk of the line of sight algorithms in libtcod because autoexplore should stop if you can see an enemy but they should only be able to shoot if they can see you. I’ll add an exception to make it stop when the player takes damage which will resolve that issue but perhaps not the line of sight of issue.
I’ll also think about how to customise party members a bit better. Naming them would be trivial and perhaps I’ll put that in sooner rather than later - custom avatars is a bit more tricky but I could probably let them share the player options and give another option to just reset to default (because the player doesn’t have access to those avatars).
I can probably do something about the map darkness as well. Any suggestions like that are more than welcome, I find that I’ve taken on board most comments so far and put them into the game - you can lose sight of these things when you’ve been playing and replaying the same stuff over and over from the start.
-
I tried to return to proper development this week after a month or so of being side-tracked from straight foward development. I actually found it a little bit hard to get back into coding after doing different things for a while and there were a couple of hours where my codebase felt a bit alien to me. Lesson to learn from that is to never take a break!
Main things that happened this week are:
* I finally received the finished product after paying an artist to create an image to use as cover art (https://i.imgur.com/okTMeZ1.png)! I'm really happy with the result and I think it fits in well with the tradition from the original Rogue with cover art which doesn't resemble the game whatsoever!
* Custom names for player and for NPC's. During custom character creation you are still given a suggested name (and implied gender) but you can regrenerate this until you're happy or enter your own name. During the game, when giving orders to your allies, you can also choose to name them now as well.
* Reworking of the poison system. Before this I just lazily created a 'poisoned' condition which applied 1 hit point of damage per turn for a set number of turns. This didn't really reflect how poison works in the rules where there are a number of different poison types which instead apply damage instantly with various dice rolls to determine this, along with the chance of saving throw against variable difficulties with differing results if you succeed... there's a lot to deal with there from a programming point of view! But it's all implemented now and each monster with venom follows the rules as written in terms of how it's applied, how much damage it does, and whether you have a chance at a saving throw or not and what chance that is.
The poison rework actually has been a sorely needed buff for the rogue class because they start with a blowgun and poisoned needles. Needles only do 1 hit point of damage, but on top of that you add the dexterity bonus along with a possible sneak attack bonus and a further possible critical hit bonus AND now a further 1d4 poison damage. The end result is that rogues can dish out quite significant damage against poison vulnerable enemies right from the start of the game and it's even possible (although very hard) to play an effective solo rogue without a light source and specialise in hiding and sneak attacking from the shadows.
-
That's surely some quality cover art. 8)
-
It would be nice if I could get some passive commands I could give my allies, like how closely they follow me.
For example, when I start to walk around, or press the explore button, they tend to wander off.
While walking around, I might run into a kobold archer or something like that who KOs me, and since the guy is away, I die.
Or the other way around, he wanders off and dies, leaving me to go find his corpse.
Also it would be nice if you/allies could displace KOed party members.
Right now if you are fighting something in a cooridoor/door and get KOed, you're typically going to die.
If the ally can not path quickly to the enemy, he is stuck in place cursing at it ineffectually.
Not sure how dungeons and dragons handles this, but it seems unnatural.
Also noticed the allies don't seem to level with you, so are they set to expire at some point?
Though I also noticed some of the allies are monsters from the guidebook, so that's interesting.
Would there be a way in the future to level them, or even recruit other monsters from the dungeon?
-
More passive commands is definitely on the cards. Admittedly part of the game’s design is dealing with the frustration of your allies going off on jaunts of their own but there should be a degree of control over what the party strategy is.
There actually is meant to be the ability to swap places with unconscious allies. I think the AI is a bit buggy with that so I’ll look at it closer and now I think about it, the player lacks the ability to swap - I’ll add that in so that whenever an enemy is in sight and you can’t heal, you’ll swap instead.
Allies don’t get XP and level and I think I’ll keep it that way although I’m going to make it possible for you to upgrade allies with weapons and armour that you find in the dungeon. All of the allies are exactly from the rulebook in terms of their stats and abilities with a couple of minor additions, ie. giving guards the protection fighting style. Think of them more as paid hirelings rather than true allies which is why they don’t progress.
It’s already possible to recruit humanoid monsters in the dungeon and that works particularly well on bandit mobs.
-
It’s already possible to recruit humanoid monsters in the dungeon and that works particularly well on bandit mobs.
I didn't know that. Do you do it by talking to enemies?
Usually I get a "You fail to communicate with X" out of it.
-
Yeah that’s the message you get when you try and talk to a non-NPC. Try talking to every NPC with a yellow title or bandits when you see them.
-
New version released and here's the full change list:
* Resized native tile size from 16x16 to 24x24. Previously I had every tile at 16x16 for some forgotten reason during development and sized these up or down as needed as I used them. This process through the bearlibterminal library had the effect of smoothing out the images as they were upsized which always left me feeling that they looked a bit blurry. Now that effect is removed on a trial basis to see if it feels clearer.
* Fixed problem with combining various enchantment names by adding a name_tail variable for '+1' and the like to go along with name_prefix and name_suffix.
* Added new monsters: plesiosaurus, poisonous snake, polar bear, pony, pteranodon, quipper, rat, raven, reef shark, riding horse, saber-toothed tiger.
* Fixed bug with misnamed hawk as blood hawk.
* Added change so that when trying to cast spells or do ranged attacks, if the attack or spell doesn't eventuatuate because out of ammo or spells slots etc, no turn is taken.
* Added number of new dungeon vaults with emphasis on wide corridors to enhance party play.
* Added feature to autoexplore so it finishes on the downstairs.
-
Some pretty significant changes took place this week:
Made reach weapons work. This was something which didn't really occur to me as being a core part of the game but it's something that a few players have gone looking for almost immediately so it needed to get done.
They work via the ranged combat menus by pressing 'f' or 'F' with a limited range. You can select a target within range manually or just use 'F' to auto-target within range. It works alongside thrown weapons as well so that if you're at range, those commands will throw at the target and if you're closer then they will default to a ranged melee attack.
Reworked entire encounter and monster generation system. Single monsters are still generated depending on dungeon level and CR of the individual monster.
Mob generation was reworked from scratch with new classes for Encounters and Monsters within that encounter so that special types can be defined and mobs can be specified easily with combinations of monsters along with spell users and ranged fighters. It should prove to be easily extensible in terms of special features and new mobs.
Full change list (apart from the above):
* Updated menu options for ranged/reach attacks.
* Updated display to show when wielding a reach weapon.
* Redid the following mobs in the new system: bandits with captain; mix of low level undead; kobolds with mages, shamans and slingers; orcs with mages, shamans and chuckers.
* Created new mob types: lizardfolk with a large number of weak lizards; single ogre with goblin followers; solo ogre mage.
* Turned off seperate factions being generated for different mobs of monsters to experiment with no in-fighting.
* Added extra customisation of monster types in mobs. Now individual stats can be specified along with character level so that casting levels can be simulated. Applied upgraded stats to all spellcasters already implemented.
* Fixed bug where doors could appear on the outer boundary which let the player walk out of bounds.
* Doubled food ration spawn rate.
* Fixed issue where fighter's second wind ability took a turn when it should be a bonus action.
* Added two different starting kits for fighters. If strength is higher or equal to dexterity, you start with one of longsword, battleaxe and spear and ring mail. If dexterity is higher, you start with one of scimitar, shortsword or whip and leather armour.
-
It may be arbitrary and/or no longer a thing in 5e basic or otherwise and more about classic flavour than practicality, but not unlike how Zorbus got the Hoopak in recent times out of nowhere, does the reach gains as least theoretically mean hope is alive for dual-wielding spiked chains somewhere in the future as per the hilarious infamy of it back in Incursion? 8)
-
Haha, I don’t think the infamous spiked chains will be making an appearance in this game. I think they’re a homebrew thing only in 5e and while two-weapon fighting will be coming soon, I haven’t gotten into grappling and tripping as combat options yet. Using two whips at once might be as close I come to that one.
-
Close enough 8)
-
I've spent the entire time working on this project swearing black and blue that a small scope is integral to my plan because I want a finished game this time around. I've had people bugging me to add classes and races and I've been politely declining for months now... and all of a sudden I decided to forget all my plans and dive right on in with a bunch of new content.
New races
And the first stage of that has already been rolled out and it's six new races: half-elf, half-orc, tiefling, aasimar, kobold and bugbear. Half-elves, tieflings and aasimar are mostly defined by offering different starting attributes with a couple of race specific features for each (like sleep immunity for half-elves, fire resistance for tieflings, and the very useful healing hands for aasimar).
The monstrous additions are probably more interesting and probably much more unbalanced:
Kobolds have a high natural dexterity which makes them a natural fit for a rogue and their pack tactics trait synergises really effectively with sneak attack. When you and an ally are both next to a target, you get advantage on your attack from the pack tactics trait and the bonus damage from sneak attacks which becomes very powerful.
Half-orcs make for really powerful fighters. The savage attack trait means that when you roll a critical hit, you roll an extra die of damage so you hit extra hard, particularly when combined with the fighter's improved chances at critical hits at higher levels. The relentless endurance trait gives you an extra buffer before being knocked out. Knowing that you can drop to 0 HP once and automatically be given 1 HP to keep fighting means that you're extra resilient in the front of a party.
Bugbears have natural reach on all weapons and bonus reach using weapons already with that trait. What it means is that you can be a great weapon fighter and use a polearm to hit monsters 3 squares away. Or you can be a rogue with bonus stealth and use a finesse weapon and sneak attack from 2 squares away. They are excellent support fighters because you can always attack over the heads of your allies who can take the brunt of the damage for you.
All of these new races are included in the version currently available for download and while there's a few unfinished features, they're all stable and playable.
New class - the druid
I'm halfway through implementing the druid class as well! I've done the basics to do with proficiencies and traits. There's a few spells already written due to crossovers with the wizard and cleric spell schools, and most importantly, I'm about halfway through the wild shape ability. What that means is that at 2nd level, druids can wild shape into a range of animals. I've picked a selection and implemented those already, and I'm ironing out some of the attached issues that go with it, such as what happens when you 'die' in animal form.
The way I've done polymorphing is to simply create a new monster entirely, then store the player within that new object as a variable called 'true_self', and then substitute that new object into the player global. It's really quite simple and works pretty well, despite needing a few edge issues addressed like displaying stats properly and things like that.
I'm hopeful that a work-in-progress druid will be done by this time next week!
Two-weapon fighting
I also implemented two-weapon fighting - this was a pretty huge change through the code.
It involved changing all the inventory and equipment routines to deal with wielding a weapon in the off hand including a menu to allow the player the choice to do so and all the various checks necessary to make sure that two-handed, versatile and other non-light weapons were swapped in and out properly.
The stat bar had to be changed to show a second weapon being used when two-weapon combat was in effect, and this was a fairly complicated process in its own right.
And this let me work on implementing the two-weapon fighting style for figthers which had been commented out for the lifetime of this project so far! The flow-on effect was that this forced a number of changes to deal with calculating the damage bonus (or lack thereof) in the display code. I had to change the attack function so that it identified if an attack was being made as a bonus action with the off hand, which is every situation where two-weapon fighting is in effect and this is the final attack of the turn. This means that with extra attack, those attacks go first followed by the off hand last.
And finally, I had to implement new messages to make it clear when two-weapon fighting is in effect and which weapon you are hitting with.
Full change list:
* Fixed bug with ranged targetting when trying to select an area out of bounds.
* Dealt with closing game window in every possible input state with automatic saving included. Hopefully now should work across the board cleanly.
* Added starting kit for two-weapon fighters so they start with two mediocre light weapons.
* Fixed bug where inconsistent spelling of 'two handed' vs 'two-handed' resulted in fighter's with dueling fighting style getting that bonus for wielding two-handed weapons.
* Fixed bug where opportunity attack would be made with off hand.
* Fixed bug where bonus attack for two-weapons was being applied when throwing.
* Added restriction on sneak attacks so that extra damage is only applied once per round.
* Finished ironing out all weird bugs with two-weapon fighting and inventory management that come from a number of unexpected interactions.
* Added new naming rules for orcs, infernal, and kobolds.
* Implemented relentless endurance for half-orcs (and boars for some reason, although this was just sitting on my to-do list until now). Once per long rest, when HP reduced to 0, it becomes 1 instead.
* Implemented savage attacks trait for half-orcs. When a critical hit is scored, roll an extra damage die.
* Implemented extra reach for bugbears, they can now reach with all weapons and an extra square with reach weapons.
* Implemented healing hands ability for aasimar. Heals up to character level of damage on touch once per long rest. Useful for reviving allies during combat.
* Removed animation for casting light, I didn't like how it looked.
* Replaced veteran with knight as starting NPC option with one less point cost.
* Changed default starting party to one knight and one acolyte.
* Implemented resistance to various damage types. It doesn't apply to bludgeoning, piercing or slashing just yet but that'll be coming shortly.
* Implemented rough wild shape with selection of animals of different CR's depending on character level.
* Fixed bug where casting bless caused a crash due to an error in the stats display code.
-
Excellent gains---don't think of it as bloat, think of it as an Emergency Marbling Adjustment 8)
Don't know what else is out there on the maybe/maybe not spread on the lot, but Bugbears at the least are certainly a novel and neat addition to the mix.
-
(https://i.imgur.com/BzrDMbz.png)
After a few weeks delay, a new version is finally up for download. The delay was because I embarked on a bit of a complicated arc of development and the build was too unstable in various ways to release because of these big additions to the codebase.
I've been spending the last couple of weeks playtesting and ironing out bugs and hopefully (!!!) the version that I've released is as bug-free as I can hope for an playable!
Here is a rundown of the big changes:
* Druids - new character class has been added. The big feature of this class is the level 2 ability to use wildshape! There is also a powerful selection of spells available from both the cleric and wizard lists and there'll be more custom spells coming over the next few months.
* Dynamic quests - I've begun the work on making dynamic quests which appear randomly in the dungeon and assign you different and often competing goals. The first step of this rollout is on some dungeon levels, there is a chance that two rival NPC groups will spawn. They are often very, very tough although their makeup is random. Both will task you with killing the other. It is planned that you'll get a big reward for doing so, but that hasn't been implemented yet. It's a bit experimental still although it seems to be working well apart from a hard-to-reproduce weird behaviour where the quest dialogue doesn't work randomly. I'm looking into it though.
* Map generation - with the addition of quests came the need to rework the map generator to set out special areas where these quests would spawn. I also took the opportunity to add special entry and exit vaults for levels so that stairs would spawn in more logical places rather than just randomly in some narrow corridor. So the dungeon generation should seem a fair bit different and more complex with a lot more variety hopefully.
Full change list:
* Fixed bug where casting bless caused a crash due to an error in the stats display code.
* Changed the way that druids get spells so they are now like clerics and instantly know all spells at a level they can cast.
* Updated stats display to properly display the damage type being used when in wild shape.
* Started work on dynamic quest system. Implemented quest object and start of work on generating quest givers and target throughout maps.
* Changed AI to not attack neutrals automatically.
* Made it so that neutrals don't provoke opportunity attacks.
* Built upon dynamic quest system. Added new long message function so that there are popup dialogue boxes to convey the quest instructions. Added quests object into saving and loading games. Ensured that quest objects are removed from general pool of actors when loading and saving and tracked through the quest system instead. Ironed out bugs with finishing kill quests.
* Made it so that quests and their goals spawn on the same floor to prevent what would be an excessive amount of backtracking. Dummy quest currently has two NPCs asking for the death of the other.
* Enlarged map size to accomodate quests on the same map but with targets at opposite ends.
* Added proper_noun flag to deal with oddities arising from wild shape and the name display.
* Added check for player to have blindsight to deal with scenario where player wild shapes into a bat.
* Added checks to make sure that wild shaped creatures can't pick up or drop items as well as not being able to cast, fire or open and close doors.
* Changed autoexplore algorithm to deal with wild shapes being unable to open doors.
* Fixed bug where followers weren't switching loyalty to new wild shape object (and back again) after transformation.
* Implemented preserving intelligence, wisdom and charisma and XP gains across form changes.
* Fixed display issues with wild shape, now it hides the player's true name, race and role and just displays the monster shape with no gaps in spacing.
* Changed map generation to make the complete map 4x3 vaults which is probably a better size and helps with generating times.
* Added new UI option to confirm whether player is sure they want to do an action. Linked this to attacking neutrals.
* Added make_hostile function which recursively works through monster list to check to see what other allied monsters need to be made hostile when player attacks.
* Created basic MagicMonster and RangedMonster AI's to use for non-companion creatures because that hadn't been implemented yet.
* Created new vault type for quests designed so that a tough NPC and followers can spawn there.
* Tidied up quests by removing references to different levels so that all quests occur within a single level.
* Changed sidebar display colours so that allies are green, quests are purple, neutrals are white and hostile are red.
* Added mobs of allies for quest NPC's. Made it so that allies of NPC's can't be convinced to follow player.
* Reworked dungeon generation algorithm so the game distinguishes between normal, stair and quest vaults and implemented all three with basic options.
* Reduced number of quest NPC allies to 1-3 rather than 2-5. It was too cluttered.
* Added a bunch of new stair and quest vaults.
* Added two new dialogue options for each stage of each quest.
* Added more complexity to the way in which names are printed to take into account whether there are proper nouns as names or not and whether a 'the' should be used or not.
* Reworked all messages to take advantage of new naming system.
* Reworked spell messages so that they aren't shown when a caster is out of sight of the player.
* Simplified AI when it comes to healing and reviving because it seems a bit buggy.
* Reduced ally chat by about half because it was happening too much.
* Hopefully fixed a bug causing hangs to do with quest NPC's AI.
* Fixed bug where crash would occur when more than 26 items picked up.
* Hopefully fixed bug where sometimes quest NPC's wouldn't talk.
* Made sure that arrow keys worked as input across the board rather than just some of the time.
* Updated display to show max HP for enemies and neutrals but not current HP.
-
Sounds like another fine leap forward~ 8)
-
After a bit of a break from development, I've been back into the swing of things and have just released a new version.
The main features of this version are picking up a bunch of small big fixes and changes that I've been making slowly over the last few weeks (while notionally not working on the game) and a big development push into expanding the categories and variety of magic items available in the game.
These now include:
* wands of web, fireballs, lightning bolt and magic missiles;
* dwarven plate armour;
* dragon scale armour of all kinds;
* elven chain mail;
* mithral armour of all kinds
* oil of sharpness;
* rings of poison resistance, invisibility and protection;
* potion of giant strength (with different strengths for hill, frost, stone, fire, cloud and storm giants);
* potion of heroism;
* scimitar of speed.
There are two categories of magic items with common and rare having different chances of being placed in the dungeon. I still haven't finalised how items get distributed because there is new stuff being added all the time so you might find that magic items might prove too powerful and common in the current build and that'll be addressed in due course. Until then, it's probably a good chance to try things out!
One thing that I'm actively monitoring is the strength of wands - the rules say that you get 7 charges and they can recharge after a long rest. In game, this means that you might get, for instance, 7 fireballs each and every rest and this seems a bit too powerful to me. I'm thinking that I'll potentially turn off item recharging, maybe on a case by case basis because it's a poor fit for the game but I'm still undecided.
Next things on my list are to add more druid spells, add more magic items, expand on map generation, and maybe look at implementing barbarians and monks...
All feedback, bug reports or suggestions are more than welcome.
-
Here's a gif demonstrating the new magic items with the spawn rate turned up to 100% so I have a whole bunch of toys to try out. An unfortunate NPC party found themselves the test subjects:
(https://i.imgur.com/lZSvGko.gif)
-
New version with minimap:
(https://i.imgur.com/ZDsiMMo.gif)
-
(https://i.imgur.com/P4ygtgW.gif)
One of the things that RPG's and especially roguelikes seem to do badly is traps. It seems pretty boring to just inflict a certain amount of damage by way of dart trap, arrow trap, spear trap, etc. There's a few deviations from the boring path with rolling boulder traps in nethack, gas traps in brogue and things like that, but I wanted to go in a completely different direction.
So I implemented more of an environmental trap system where when the player steps on a pressure plate, certain doors shut and other doors open changing the shape of the dungeon. The hope is that this will create some tactically interesting situations where the player needs to reassess the path they need to take in an unfamiliar situation and perhaps with allies being unexpectedly stranded outside of the room. I don't want to make these things automatically lethal so they're all fairly benign at this stage but I'm going to add in some dangerous ones next I think. The plan is that they'll be clearly signposted though, ie. the player will see an artifact on a pedestal in a really obvious vault with warning runes on the door. In that scenario the player shouldn't be surprised that when they pick the artifact up, walls open to reveal a group of skeleton warriors or something like that.
Anyway, by doing all this, I created a heap of edge cases where the player might end up trapped forever in a part of the dungeon and I'm trying to avoid this by reworking the situations where these traps can take effect. And the way I'm testing it is by turning off monster generation and running my autoplay feature for as long as possible to hopefully identify any weird situations like that. So the above gif is what my work screensaver for the day looks like.
-
(https://i.imgur.com/MVjn6rd.jpg)
New version has been released with the biggest changes being the introduction of all-new vaults with interactive features. Currently they are limited to pressure plates which open and shut secret doors, but it has the capacity to be expanded to all sorts of effects.
This is the way that I've decided to implement traps - rather than just a simple trap which causes damage without much other interaction, these traps cause the dungeon to shift around the player. Sometimes this will expose the player to unexpected danger, sometimes the player will find themselves having to survive without their allies for a while, or sometimes it'll just make exploration a bit more interesting.
The next biggest change was the implementation of a form of the cunning action trait for rogues. Thanks to some clever user feedback, the idea is to allow rogues to always withdraw from combat with provoking opportunity attacks through the use of this trait. What this means is that rogues don't have to be as careful when it comes to getting into melee range and it synergises really well with sneak attack. Now rogues can explore and scout without fear because they know that they'll be able to drop back without incurring too much damage to their allies where they can really dish out some damage!
Another important change for ease of use is the implementation of another premade character type - the tiefling druid. This will allow for quick starts for druids and will speed up play for those who just want to dive straight into the game.
Apart from that, here's the full change list:
* Changed the way that the game checked to see if player could see monsters doing certain actions resulting in messages. Hopefully will tidy up some issues to do with this.
* Added fog cloud as a level 1 druid spell.
* Began reworking field of vision calculations to take into account the necessity for some Effects to block sight.
* Added new pre-made character to help with testing - Tiefling Druid.
* Finished updating field of view calculations to take into account effects which block sight.
* Added new tiles for various magic effects.
* Added a non-diggable trait to tiles in special vaults so that set pieces can't be interrupted during mag gen.
* Fixed bug with using oil of sharpness on blunt weapon causing crash.
* Finished implementing special vaults with trigger squares causing walls to appear and disappear.
* Implemented possibility for multiple special vaults per floor.
* Put in a whole bunch of new special vaults including ones that mirror normal vaults to cause some surprises.
* Fixed a bug with healer pathfinding AI which caused a rare crash.
* Fixed aasimar racial charisma bonus to +2.
* Fixed potential bug with dying while in wild shape.
* Fixed potential bug with messy monster deaths.
* Implemented an always-on cunning action trait for rogues which allows them the unique class ability to withdraw from combat without drawing opportunity attacks.
* Reduced spawn rate of rare magic items.
-
Any plans for the endgame yet? Will there be a win-condition?
-
I actually do have some basic plans sketched out although I'm still thinking it through before implementing it.
At this stage I'm thinking that a final confrontation on dungeon level 20 with an adult red dragon would be a suitable challenge to work towards. I'm turning that idea over in my mind as to exactly how it's going to work and what other things I could include to make that challenge interesting whilst still achievable for a level 7 - 9 character with a few henchmen in tow.
I want to be a bit careful before implementing that because I don't want it to be too easy initially so that players feel like they've completed the game and move on while it's still evolving. And even once I'm done with that, I'm also open to the idea of creating an overworld with more dungeons and a longer term goal.
I know that this is something that you've put a lot of thought into with Zorbus and that's been interesting for me to watch develop.
-
(https://i.imgur.com/RJo1gzQ.jpg)
New version has just been released which allows for the player's allies to be controlled in terms of what weapons and armour they use.
This should let character builds who can't use heavy weapons and armour, for instance, to kit out their followers with these things so that they don't go to waste.
You can use this feature by 't'alking to your follower and choosing the inventory management option. This will give you the choice to give the follower items to equip or carry along with making them give them back or drop them on the ground. Hopefully it's fairly self-explanatory.
The 'l'ook command has also been expanded on so that you can use that to see creatures (which practically at this time is limited to player followers only) and what items they are carrying and have equipped. I might expand this system to giving a visual cue to the player as to when a monster has a special item equipped so that it's more obvious, but this will become more relevant once I introduce monsters using items, not just the player's allies.
Along with this, there's quite a few bug fixes in this release as well.
-
(https://i.imgur.com/ZN98X7V.png)
I've just released a new version and there's some really quite significant changes:
* Warlocks - a fair few players have requested this class be added to the game and the current build has them in there as an experimental option. You can quick-start as an aasimar warlock to try it out quickly. It required quite a bit of work behind the scenes to deal with the different way that warlock's spell slots worked - rather than having spell slots per level like wizards and clerics, they only have a single pool of spell slots to cast all spells from.
There's still quite a bit of work to do - there aren't any eldritch invocations in the game yet but there'll be a few options being implemented very shortly and there's plenty of room for more spells. I also need to properly implement low level spells being used with higher spell slots. It wasn't a big priority previously but it's an important aspect of the way which warlocks use magic so I'll be taking a look at that as well.
One of the big decisions to make was how to handle the warlock's pact boon. The Pact of Chains and the familiar that it grants felt like a bad fit for a game where fighting is most of the actions that you'll take. I'm still not sure how or if that'll work. Pact of the Blade is a possibility but I haven't implemented it yet, so all warlocks at this stage take the Pact of the Tome.
Any feedback or bug reports for the new warlock class would be greatly appreciated - there was a fair bit of work done on them which changed some long standing features of the game so there may very well be something unstable created as a result.
* A proper endgame along with balancing dungeon generation - previously the dungeon was of an infinite depth with ever-increasing difficulty the further you went down. That was always just a placeholder though and the intention was always to make a final level with a final encounter. So I decided to cap the dungeon generation at level 20 and implement that final boss, although that encounter will develop more as time goes on. The final boss on level 20 is an adult red dragon with a CR of 17. Considering that the level cap for players is 10, even with a few henchmen, you'll need a lot of luck to stand a chance.
Because I picked an end to the dungeon's depth, it made sense to rejig the way that monster generation worked so that players saw a lot more variety as they went deeper. That's been done, but the side effect of that is that the dungeon is now a hell of a lot more dangerous. You'll start seeing tougher monsters immediately and level 1 is no longer a risk-free zone. Hopefully it makes for a much more tense and challenging experience right from the get go.
Full change list:
* Implemented arcane recovery for wizards. Created a custom menu to deal with this and allocating spell levels up to half character level divided by two but rounded up.
* Added dungeon depth cap. Fixed issues with autoexplore and a lack of a downstairs when at max dungeon depth.
* Added end game encounter with an adult red dragon.
* Increased the possible CR of spawning monsters to make the dungeon a whole lot more dangerous.
* Fixed bug where druids were not using wisdom as their casting stat.
* Added different displays for warlocks and wizard spell slots. Removed spell slot displays for non-casters.
* Added in a whole bunch of special cases to deal with the unique way that warlock spell slots work.
* Implemented hellish rebuke as a level 1 warlock spell. It works as a reaction in the rules as written but that's a bit hard to translate so I made it a condition which lasts until the player rests and triggers automatically on taking damage against whoever that attacker is.
* Implemented eldritch blast. Cantrip which can target multiple enemies as levels go up.
* Implemented pact of the tome for level 3 warlocks. Reworked spell menu so that spells were always in ascending order of level due to the quirks that this new process created.
* Added chill touch as a wizard and warlock cantrip.
* Implemented infernal legacy abilities for tieflings - can cast hellish rebuke as an ability at level 3 and darkness as an ability at level 5.
-
Nice to see the endgame forming up.
You should probably announce new releases also at Roguebasin. I seem to get most of the traffic through that site.
Have you thought of some kind of morgue files? Might be good for balancing and bug hunting. I don't know anything about Steam API but I've read that is has some stuff for creating leaderboards and probably something to get other player metrics as well.
-
You're right that roguebasin generates the most traffic but I generally try and save that for the milestone releases. I'm releasing every week or two and I think it'll clog up the news feed if I do it for every single time.
Yep, that's in my plans. It's been on the backburner while the game is still finding its feet in terms of the overall gameplay loop and what a run looks like, but with an endgame now implemented it's probably a logical time to take a look at it. I haven't delved into the capabilities of Steam like that but I'll definitely be taking a look. It'll be a completely new area for me to explore which is a bit daunting but necessary.
-
New version released: warlocks and other spell casters can now use higher level spell slots for extra spell power!
Here's a gif of warlock gameplay, linked only because it's fairly large: https://i.imgur.com/tYgMONY.gif
The user interface is still up for discussion but the way it works currently is that for non-warlock spellcasters when selecting a spell, you can also press a number between 0 and 9 as an override for the default spell slot level. If you have the corresponding spell slot available and it's higher than the default spell slot level, then you'll cast that spell at the higher level and potentially have it cause considerable more impact. Warlocks use the higher level spell slot by default so they don't have the same option in the menu.
Overall, it's a buff for spellcasters and allows for a fair bit more flexibility as well as letting spellcasters make full use of all of their spellslots rather than being stuck with unused higher level slots but needing to cast a low level spell like in previous versions.
Next step from here is to rewrite the speed system so that different races and monsters can have different move speeds along with allowing for different time for different actions to be performed. The idea will be that movement will become cheaper and attacking and casting, along with moving steathily, will become more expensive timewise and this will shift the game balance away from archers and spellcasters spamming cantrips at range and put melee fighters onto a level playing field.
-
Aiming to endeavor joining Solasta in the freshly minted SRD v5.1 designation that they managed to wrangle for themselves partway through their successful Kickstarter as the spot just under Baldur's Gate III in terms of having much of the spread to draw from or generally just sticking to general OGL as it does?
-
I've got to admit, I don't really understand what the Solasta licence means for them given that the SRD is fair game for anyway, but if Wizards of the Coast would like to officially endorse my product then I'm ready to talk business haha
-
I think it just grants more of the cutting edge v5.1 than the more "basic" OGL on top of giving a bit of an approving, knowing nod even if not outright endorsement---it still isn't an official WotC joint jaunt like BG III where they can interact with pretty much anything iconic, but it creates a higher tier essentially. May also factor in to Solasta being a very much public facing commercial project, as opposed to an incidental one that is predominantly a homebrew affair. The whole DM Guild thing wasn't a thing back when the original OGL kicked up, and they skipped the lot of it entirely for 4e, so it is out there. WotC outright just bought a game development studio that was working on yet another 5e game, so perhaps the tiers will become more meaningful as this forthcoming era seems to constitute them getting serious about their gamespace for the first time since the Capcom and such era back in the 90's/
-
Things have been a bit slower for me in terms of putting out new releases. That's been because of a combination of real life commitments which needed to take priority over game dev work but also because there was some big ticket items which would need a fair bit of time to complete and to properly test.
(https://i.imgur.com/SJbRu2Q.png)
The current new version is one of those big changes and the game now includes variable movement speeds for all creatures. While that might seem like a relatively small change, it required a lot of behind-the-scenes work to implement a kind of energy system for all entities and to translate that to work with each creature's speed.
The big reason for the change was the intent to rebalance the game more in favour of melee combat and against ranged combat and spellcasters who spam offensive cantrips. I've always worked on the theory that each on-screen tile represented ten feet in terms of distance. That worked quite well in most respects until you think about the normal PC movement speed being 30 feet per turn. Without that aspect of the rules being implemented, spellcasters and ranged combatants effectively got 3 times as many turns to attack while melee fighters slowly approached them. That's all changed now.
It's still a bit experimental because you'll see that when you're actively engaged in combat that other creatures can kinda jump towards you as they move multiple squares at once. That's deliberate and that's part of what I'm monitoring in terms of whether it's actually fun or not. From my own playtesting it feels pretty good, but I'm very open to ideas if someone thinks that movement speeds should be tweaked in any way.
Full change list:
* Fixed bug with opportunity attacks where a creature has died somehow (I think????)
* Implemented constants for time to take actions and movement. Add cooldown variable to all objects to record this. Added method to record this value whenever actions are movements are made.
* Finished implementing variable movement speed system - movement now takes 1/3 as long as other actions as base costs and these can be altered to reflect different speeds for each creature for each types of acts.
* Changed order of attribute display just to suit my cosmetic preference.
* Implemented movement delay of 50% times base value for hidden actors.
* Implemented movement delay of 50% times base for wearing heavy armour without requisite strength (apart from for dwarves).
* Updated movement speeds for all monsters.
* Implemented numpy instead of standard python lists to deal with a number of arrays for map storage to improve speed problems introduced by new speed system... and then removed it because my poor programming actually meant that it was slower!
* Did some tidying up of graphics routines to remove redundancies to improve speed.
* Added custom time costs for resting, opening and closing doors and talking.
* Fixed bug with heavy armour and movement speeds not calculating properly.
* Updated action surge to work with new speed system which is actually a lot simpler than the previous system.
* Removed an anomaly with the sidebar display when the player is affected by only invisible conditions and there shouldn't be any visible sign of this.
-
I've just uploaded an experimental version of the game filled with some HUGE changes. I never planned on making the game anything more than a simple dungeon crawl but the idea of creating an overworld and a number of different places to visit and explore crept into my thinking and I've spent the last few weeks working pretty heavily on it.
Here's what the new overworld looks like:
(https://i.imgur.com/3CaX3zX.png)
Normally I would remove the old version from itch.io and upload all new versions to Steam straightaway but I haven't had the chance to test this as much as I would like although it feels pretty stable to me. So at the moment I've got two different version for download (http://patjw.itch.io/theredprison) - one of them is the stable(ish) single dungeon crawl and the other is the experimental version with the full overworld and other features enabled.
You can expect to find 9 dungeons to explore, each with a different theme, enemy types, dangerous bosses with powerful artifacts to be discovered. There are also 5 friendly settlements around the map, some containing unique NPCs to interact with. A lot of this is just a skeleton to be filled out with future updates but it should give you a good feel for how the game is progressing and the direction I'm heading in.
A word of warning though, some of the dungeons might be quite deadly - especially as you go deeper and deeper and I'll definitely rebalance them as time goes on. I intend on directing the player to the easier dungeons through various quests so that they don't accidentally stumble into the hardest dungeon on the map. For now, my advice is to start with the Warrens, and then look for the Bandit Keep and the Ancient Shrine. And if you want to explore the old dungeon layout, it still exists at the far south-west of the map.
If anyone tries this out and wants to give me some feedback (good or bad), I'd be really appreciative!
-
I at least encourage this wild escalation---go where the momentum manifests to keep things lively and inspired for you! 8)
-
Well you've got my attention. I love wilderness sections.
I'll give it a play sometime over the holidays.
Also, I remember back when the game was in the dungeon, there was this monster called a "Commoner" you could find.
It seemed like it should have been an NPC but wasn't. But that was a while ago.
-
Great! Make sure to let me know what you think!
Commoners are definitely NPCs which I use to populate the towns a lot but can also show up in the dungeons when I don't specify what monsters to generate on which levels.
-
And of course I made some mistakes in that experimental version with item generation being completely out of kilter for testing purposes along with an incorrect graphical tile for villages. Fixed now with a new version uploaded.
-
I played it some these last few days. There have been improvements since last time. Though some issues still exist.
I also didn't get very far this time, even with debug equipment littered everywhere. So that's pretty embarrassing.
The wilderness and towns are still too early to say much about, but I didn't experience any bugs up there either.
The aesthetics of the dungeon seem better than before. Though the targeting is a problem for me.
The "highlighted" tile is usually hard to see, and it goes off screen when trying to target distant enemies.
An outline of the tile you are targeting would be nice. Here are a few bugs I found:
1.When you fill up your inventory with enough items, the list will cut into the messages, leaving a line running through it.
2.On sanctum level 3 I experienced some lag, but don't know why. A little while later I was knocked out by air elementals.
An error occurred a little while after that. Generally errors are common when my guy is unconscious. Here is the log:
Traceback (most recent call last):
File "theredprison.py", line 13894, in <module>
File "theredprison.py", line 13201, in main_menu
File "theredprison.py", line 13149, in play_game
File "theredprison.py", line 3050, in take_turn
File "theredprison.py", line 7379, in monster_ko_to_death
File "theredprison.py", line 2791, in drop
File "theredprison.py", line 2930, in dequip
AttributeError: 'NoneType' object has no attribute 'traits'
Traceback (most recent call last):
File "theredprison.py", line 13894, in <module>
File "theredprison.py", line 13194, in main_menu
File "theredprison.py", line 13149, in play_game
File "theredprison.py", line 3050, in take_turn
File "theredprison.py", line 7379, in monster_ko_to_death
File "theredprison.py", line 2791, in drop
File "theredprison.py", line 2930, in dequip
AttributeError: 'NoneType' object has no attribute 'traits'
3.The bug where you die and your body blocks the way still exists. I even managed to get a picture of it.
Though I have also noticed that your party members will attempt to displace bodies, and it's less common than before.
(https://i.imgur.com/xiKpICB.png)
-
Thanks heaps for the feedback. I agree about the highlighted square being hard to see sometimes, it became a lot worse when I changed some of the graphical tiles and it needs a fix.
The inventory is going to undergo a bit of a rework with merging piles of the same item type removing a heap of clutter and you're right that there's a graphical bug at that one point in the screen.
I suspect that lag is due to me pushing the limits of python with inefficient AI programming. I've had similar issues and I think I need to streamline some aspects of that part of the game to improve performance.
You'll also be pleased to know that I'm working on making unconscious or sleeping creatures not block corridors anymore. I'm just going to make it so that you can walk over the top of them because I experience the same issues. It can sometimes feel unfair if your allies can't get to you or cheap that you can hide behind an unconscious ally, so it seems to me that it should just be removed altogether and incapacitated creatures should essentially become part of the background.
And that error message you posted is a new one for me... I'll look into that as well.
This kind of feedback is absolutely invaluable so I just wanted to make sure you know how appreciative I am for you providing it, thanks so much.
-
No problem. I'm looking forward to see how the game turns out.
Is the bodies blocking paths thing something that would happen in a real game of DND?
It doesn't seem very realistic to me, but if that's how it's supposed to be, I can't really complain.
I think the error log might have to do with the PC dropping items?
I noticed the error popup right when I went from being unconscious to dead.
This might be it, as the log references monster_ko_to_death. A lot of my party members died around the same time too.
It's unlikely to have been from other monsters being killed since we were totally outclassed by the air elementals.
-
Whether a body blocks someone in a real game of D&D is one of those things that would come down to the individual DM I'd say. I don't think many DMs would say that a small or medium sized body would block a hallway, but perhaps it's a different story for an ogre or dragon corpse.
That error is almost certainly to do with items in your allies inventory when they die. I don't think I use that same function when the player dies so I'll hopefully be able to recreate it fairly simply.
-
I figured out that error - I'm fairly sure it crops up when an NPC dies with an item in their inventory which adds a trait to the user and that's a bit of a rarity which is why I hadn't factored the possibility of a dead carrier into my item dropping code. I've fixed it and that fix will be included in the next version that I upload relatively soon.
-
New version released on both Steam and itch with a number of dungeons and towns to explore and a couple of quests to undertake. The world is still a work-in-progress but there is the beginnings of a broader story and series of quests which I'll be working on expanding as time goes on.
Full change list:
* Implemented static whole map starting level. Implemented special case light map for above ground. Amended save and load routines to deal with scenarios where there aren't any up and down stairs. Implemented a new vault type, which covers the whole map to be The Red Outpost.
* Continued work on fixed level generator. Continued work on The Red Outpost. Added flipping of set map on x and y axis.
* Implemented trees and shrubs into level generator.
* Implemented unique NPC generation from map files.
* Implemented flavour text for unique NPCs and necessary routines around that.
* Wrote Saint Othmar's custom flavour text.
* Updated save system to handle different dungeon branches.
* Continued work on new level generation, multiple branches and overworld content.
* Updated trees to be always visible once discovered so they act as quasi-map walls.
* Updated commands so that options on the overworld are very restricted.
* Removed most of the code to do with procedural quests because they're temporarily a bad fit for the game's structure.
* Finished special item and monster generation code using data from dungeon branches.
* Fixed weird and long-standing bug to do with placement of monsters.
* Reworked encounter generation routines and finished compulsory special encounter generation in a random vault in the dungeon.
* Implemented new tile sets for walls in normal dungeons, towns and the red prison.
* Got rid of the scorpion tail's from crab tiles.
* Implemented basic version of North Warren with unique NPCs: Odette, Sunny, Susie.
* Implemented basic version of Mirefield Keep with unique NPC: Lord Wesley.
* Finished implementing skeletons of remaining towns.
* Implemented unique monster distribution for Badbog, Catacombs, Rage Hill, Haunt and Sanctum.
* Fixed bug with hidden attackers.
* Fixed bug with item distribution.
* Changed village tile to something a bit more consistent.
* Reduced player XP gain by half.
* Added Saint Barnabas, Saint Hedwig and Cardinal Florian.
* Added flavour text for every generic NPC.
* Hopefully fixed a bug with dungeon generation which created unintentional hordes of enemies.
* Added random monster generation to special item vaults.
* Added kobold mobs spawning to warrens:2; added kobold horde as a guaranteed mob on warrens:3.
* Added Nubnag, a powerful kobold boss with the savage, relentless and extra attack traits.
* Varied the monster generation routines so there is always a chance of a random monster turning up on any dungeon level.
* Made all potions stackable to save inventory room.
* Fixed bug with NPCs dropping some items on death.
* Slightly reduced food generation rate.
* Added ranged attack stats for skeletons.
* Created necromancer horde with skeleton archers and zombie brutes.
* Added Saint Cormag the necromancer as a boss for the ancient shrine.
* Added flavour text for Nubnag.
* Designated certain encounters as special so that they don't randomly spawn.
* Added dictionary for actor positions to try and optimise the AI functions somewhat. Should cut down on a lot of looping through lists looking for actors in certain spots.
* Fixed bug with targeting system and lookup table.
* Added visual indicator of when a unique NPC is seen.
* Implemented basic journal to record all player actions.
* Implemented basic quests and reward system.
* Added gold and made it spawn as a common item in amounts between 5 and 20 pieces.
* Implemented new quest system with ability to create multiple quests per quest giver with different priorities, rewards and prerequisites.
* Fixed bug with items spawning in walls around the exterior of the map.
* Added quest given by Cardinal Florian to kill Saint Cormag.
* Finished work on quests so that they work properly and quest givers can have multiple quests to give with different prerequisites and competing priorities as well as properly giving rewards.
* Reduced how often the screen is updated to hopefully give a big boost to speed.
-
I would presume to imagine this sprawl will also re-calibrate your ongoing race/class/etc reckonings as now there's more to flavour beyond the purest of contained dungeon crawl to avail?
-
I haven't actually thought more about race or classes at all while I undergo this development arc. I've sort of made the decision that that side of the game is complete enough for the moment and it's a completely different focus now. I'll eventually come back around and reconsider those aspects of the game and see how I'm placed once I've got an idea about how the overall game structure is looking.
-
I have not read the whole thread, so this might have been covered already, but:
Using rules from a RPG in your game should not be a problem, since rules are not patentable on most jurisdictions. The expression of the rules (ie wording, tables) is copyrighteable, but that does not apply to a videogame unless you put fragments of the RPG manual in your documentation or game.
However, trademarks are an issue. Tradekarking is different than copyrighting. Many iconic DnD monsters are registered trademarks and you cannot use their names. I think Beholders and Mind Flayers are, for example. You might get away by having them in your game (risky!) if you don't call them that, but you can't have a moster named Beholder in your game.
Finally, Dungeons and Dragons is a trademark, so you cannot say that your game is a DnD derivative, or include DnD in the title or promotional material. There are many workaraounds (Rogelike based on the most popular OGL of all times!) but you have to be careful.
-
I appreciate the concern but I'm reasonably confident that I comply with the Wizards of the Coast licence. I'm a lawyer by day and I can tell you that it's almost incomprehensible to me, let alone a lay person, but I've been as careful as possible to do everything correctly. There's actually a lot of content that you can use legitimately but you're right that there's some specific stuff which is definitely off limits, such as beholders, drow, yuan-ti, etc.
I'm also not allowed to use D&D trademarks or to suggest that my game is an official product, but I don't necessarily agree that the current licence prevents me from referring to the title and content of the document which sets out the open content which can be legally used. Maybe that wasn't always the case with previous versions of the licence, but I've done my honest best to comply with the licence that currently exists and I'll keep doing that until I receive some kind of legal correspondence telling me otherwise.
The game is far from popular in a broad sense but I suspect that it's been publicised enough that some employees at WOTC might have seen it and I hope that I'm past the point where I need to be worried about some kind of legal disaster. If I'm wrong about that then the game dies a quick death...
-
I still give it fair odds you could garner a Solasta style upgrade to Semi-Endorsed, yet not Licensed at that if it came down to it as things only get more polished and improved~ 8)
-
As far as the IP stuff is concerned, it's worth noting that the developer of DoomRL (https://drl.chaosforge.org/) received a Cease and Desist from ID software, once he and his team began work on the (for profit) spiritual sequel, Jupiter Hell (https://jupiterhell.com/).
Personally, I don't see the problem with tributary stuff that's offered for free - seems like free publicity for the original, to me - so hopefully you don't have any similar issues.
-
getter, something like that would be great but I'm not holding my breath. I think best case scenario is that they take a view along the lines of what Sereg says - officially being ignored but unofficially tolerated because I'm actually doing something to help them at my own expense.
-
JH situation has an additional key wrinkle of that coming after ID got gobbled up by Zenimax, even beyond the OGL situation being distinct in practice from ye olde doom and such modding scene and source ports into standalone total conversions and whatnot.
Red Prison should surely be Good, with only Better yet to come by all indications~ 8) Bound to garner some direct fellow travelers as well honestly given the ongoing revival of D&D in games proper and all sorts of games in the works across various studios and hobbyist fare alike---it is just a lively era for it, at last, again, in a way that stands a fair chance of dwarfing the golden era of so many years ago now unless something goes weird.
-
Hey, pat: great job. Congratulations and thank you very very much for sharing your work. Go ahead with the project! Giving is receiving. Now: if came the day when wizards of the Toast can patent (and patents) Goblins, to me at least, the answer is clear: fuck them wizards of the Toast!
-
Hey guys, firstly, can I apologise for the really long delay between new versions with the game. I was distracted by other projects and only just made it back to working on this game.
There's actually a heap of behind-the-scenes changes, which I'll outline briefly, along with some important in-game additions, which I might actually start with because it's far more interesting.
Additions to the game are merchants and guildmasters. In friendly settlements throughout the Red Prison world, you can find merchants who are stocked with various goods, ammunition and sometimes magic items for you to buy. Prices are affected by your charisma. Players start with some gold now as well, which is also affected by your charisma. There's even a unique merchant placed somewhere within the game (ok... he's in Cindemere), who has an inventory of powerful magic items to buy (or steal - more about that below).
You can also sell items to merchants as well, for a far lower price than you'd pay to buy the same item, but the option is there. It's also affected by charisa.
It's still in a state of flux, but currently, there's no reason why you can't kill and loot a merchant for their whole stock. And of course, merchants aren't particularly tough opponents. So I added bodyguards to make sure that it was a risky enterprise. If you feel confident of defeating the bodyguard, then the merchant is all yours. This might change in later versions if it's too easy to exploit, but that's how the game works currently.
There is only one guildmaster at the moment, with more to come in the future. The plan is to create a roster of unique NPCs to potentially hire and to place them throughout the game. But for now, there is Ingefred the guildmaster in North Warren. She has a collection of hirelings who you can pay to join your party to flesh out your team and cover up and weaknesses. Again, these prices are affected by charisma.
And now behind the scenes: a fair while ago I changed the game's code over from an old version of Python (2.7, I think), to the latest version of Python 3. This actually required a fair bit of rewriting, which was annoying, but it all seems fairly stable. That created other problems though and my workflow of compiling and publishing was ruined because I couldn't get the game to play nicely with my previous setup.
So I switched my compiling over to a project called Nuitka. It seems to be working really well (after a bunch more headaches with compatibility). The benefit to this is that Nuitka apparently brings about some pretty significant improvements in performance, so I actually think that players might notice the game running a lot better than previous versions!
All in all, things are moving forward well and I plan at sticking at it for a while yet and putting out regular updates. Any feedback is more than welcome!