Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411512 Posts in 69376 Topics- by 58430 Members - Latest Member: Jesse Webb

April 26, 2024, 08:33:35 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsTacticrawl | 2018 progress report
Pages: 1 ... 4 5 [6] 7 8 9
Print
Author Topic: Tacticrawl | 2018 progress report  (Read 69904 times)
deab
Level 2
**



View Profile
« Reply #100 on: March 08, 2016, 10:36:41 AM »

Almost halfway for 7DRL so thought I'd drop a gif here..



Updates on Rogue Temple and on Twitter.
Logged
deab
Level 2
**



View Profile
« Reply #101 on: March 20, 2016, 10:23:58 AM »

Update #36
Split screen, blood and doors!

After taking a some time out for the 7DRL (click to play MagicianRL in your browser!) I'm back. I'll be bringing over the dungeon gen I created for the RL in the coming weeks, but to get back in to The Ever, I started with a couple of days on bug fixes and general clean up. Nothing worth reporting here, but the overall game feels much tighter and polished.

Action Camera - Split screen
A few weeks ago I added an 'action camera'. When an enemy attacks, and it's in view of your characters, the camera changes to show the attack. This just focus on the middle point between the attacked and victim. Since basic range combat is now in, this often meant a camera focusing on the floor..

Where there is more than 2 tiles between the participants, the action camera now shows a split screen view:



In this image the goblin attacks with a bow. I need to add a border down the middle improve readability, but it's working pretty well. I spent some time ensuring the best view angle is found, and blocking wall tiles are capped off.

I also overhauled the single view camera, and I'm sure there will be more fine tuning, but a big improvement.

Blood effects!

I've been wanted to improve the combat feedback for a while, and finally made a first pass. When anyone takes damage, a particle effect is shown, angled towards the direction of attack. The effect is made up of two colours, with the colours determined by the 'substance' a character is made from. Humans are flesh, so show reds; skeletons are bone, so bone chips; rats show fur colour and blood etc. I can have some fun with this  Grin

A simple effect but works well! I'll also be added reaction animations at some point. Here's a couple of examples:



Doors!

The short version: doors are now in. They can be opened by monsters or players, and block sight, light and pathing when closed:



I've rebuilt the existing 'abilities' system and wanted a new prop to try it with. The abilities system is proving very flexible so far, and covers anything an actor can do with a prop. Examples include:

  • Pick up/drop
  • Melee attacks (bash, stab, slash)
  • Range attacks (bow in and working, wands to be added)
  • Open/close (doors, chests)
  • Interact (for example toggle a light/torch)
  • Pull/pull props (in under the old system last part to migrate over)
  • Consume (to be added, use to eat/drink)

An ability has a list of constraints, and can be tested against a actor / prop combination. If valid, either the player or AI can use the ability.

With a GOAP system and the AI state machine already in place, adding the ability for AI to open doors was very simple.

A massive week for The Ever!

Logged
deab
Level 2
**



View Profile
« Reply #102 on: March 23, 2016, 01:26:25 PM »

Doors

Quick update on doors.. may not sound very exciting, but they will have quite an impact on gameplay.

In a tile based world, doors are an exception as they exist between two tiles. The door has a parent tile which it opens in to, and that tile must be clear. You can spot which way a door opens by which side the hinges are. A closed door blocks line of sight.

I'll be adding a variety of doors, but generally doors will be destroyable (although it may take a few turns).

Gameplay

Note regarding the gifs below - there is a wall tile next to the door. Based on the camera angle, walls obscuring floor tiles are shrunk down. I'm also using a cheat view here where line of sight is disabled - normally you wouldn't be able to see beyond the door.

As mentioned above, a door requires its tile to be clear. Here I click beyond the door and let the AI get me past it. Note that my character steps back while opening the door:



That step back is of course a turn, so everyone(and thing) else also gets another turn.

Now if you were being pursued, a monster right behind you means there is no space to open the door, which could end badly:



You could of course block a door if you need time to recover. Doesn't come out well in a gif, but when a monster (or player) attempts to open a blocked door, the door rattles:



Maps already feel more interesting and dynamic with doors. I'll be adding lockable doors you can only open from inside, and of course keys.

Enemy AI-wise - not everything will be able to operate a door (rats for example) so you can lure such enemies in to a room and leave them there. I'll also be adding enemies who will close doors behind them as they go about their business (in The Ever the whole map runs continually, not just around your characters). You never know who or what you will find when opening a door!

« Last Edit: March 23, 2016, 01:46:44 PM by deab » Logged
deab
Level 2
**



View Profile
« Reply #103 on: April 03, 2016, 07:26:01 AM »

Lots of progress since the last update but pretty much all behind the scenes stuff.

Memory
Mostly I've worked on bringing the 'props' system into line with the 'pawns' (characters).

All characters retain a memory of what they see and where.

Every turn, memory is updated based on currently visible tiles. If a memory of a prop of pawn cannot be seen (the last known location is visible, but they are not there) they are marked as 'location unknown', and in the case of the player, no longer shown on the tile.

Memory has two uses:
  • The players view of the world is rendered based on the current memory. Any tiles outside the current field of view are shown in grey, including any props and pawns seen there. These may have of course changed/moved since last seen.
  • Secondly the AI uses memory when choosing what to do. For example, if an enemy is pursing the player, they will use the last known location, rather than cheat and use the current location. This will give you the chance to get away if there are walls/doors to hide behind.

For gameplay this should offer some nice options - I intend the AI to move around and use the map regardless of the player, so you may leave an area in one state, but you won't know if its changed until you return. Same goes for the enemy!

For debug use, I can cycle the view between factions, or show everything. Has been a lot of work bringing the Props up to date, but means I can move forward with more advanced AI.

Here's the debug view of the player faction (shared between all player characters) and a rat (only other character on this small test map).



New Character (WIP)
I've also been working on a new player character, a dwarf warrior (or cleric, haven't decided yet).



I'm keen to get on to character classes, and the different abilities they will have, but I need some new models. For the player characters I've been a bit stuck on whether I should go for switch-able armour, but I think I need to leave this out of scope for now. This is why my current characters are only partly armoured, and a little plain.
Logged
deab
Level 2
**



View Profile
« Reply #104 on: April 06, 2016, 06:02:13 AM »

Update #37
Prototype Plans

Continued with behind the scenes work this week, along with new character models, but I'm also firming up plans for a public prototype for release this Summer. Here's the scope:

Combat
The player will have a team of 4 characters, and I plan for battles to be challenging. My initial thought is to balance a single monster as roughly equal to 2 player characters in a straight up, no abilities fight. Monsters will generally be found in groups, but the player should have options to 'pull' monsters from a group and attempt to control an encounter.

Monster AI
Monsters and inhabitants of the dungeon to have a couple of different AI types. All monsters in the dungeon run their AI regardless of the player proximity, so the goal here is that you never know when an enemy may stumble across YOU.

Monster 'hate'
Currently monsters attack the first enemy seen, and nothing will change their target. Implementing a 'hate list' will mean that player actions can influence a monsters target, both directly and indirectly. This won't always be the players goal - a Cleric constantly healing may draw attention on to themselves.

This mechanic can be used to the players advantage, pulling monsters around for positioning using careful management.

Social Monster
Some monsters / enemies should call for help when attacked, or when fleeing.

Player Classes / Characters
4 player characters to be included - barbarian Warrior, human Ranger, gnome Wizard and dwarf Cleric.

Each class will have 1 or 2 abilities unique to its class - for example Warrior taunt, Cleric heal. Character races determine their base stats.

Split Party
I'm keen to explore gameplay situations where splitting the party in two is either required, or provids an additional approach. This is also a tough test for the user interface/experience, as turns are character based, not team based. Not sure yet how to fit this in, but its on the list.

Mana / Resting
Some class abilities will require mana, which can be recovered by resting, possibly staring at a spell book. This would be per character, so you could leave a cast resting/mediating while scouting with a different character.

Props / Items
Plan to include as many items dotted around the map as possible that can be interacted with. Torches, movable crates/barrels, doors, weapons etc. Keys, switches and interactive traps are probably out of scope for now, but all are planned.

Dungeons
At least 1 hand crafted dungeon to play through, and possibly a basic procedural dungeon.

Logged
deab
Level 2
**



View Profile
« Reply #105 on: April 08, 2016, 07:46:47 AM »

First 3 characters done. Left to right, dwarf warrior, human ranger and gnome wizard. Would love some feedback on these!

Logged
deab
Level 2
**



View Profile
« Reply #106 on: April 14, 2016, 03:04:22 AM »

Occurred to me that shooting a door (from the correct side) should open it..



Could be useful for distracting monsters. Still missing a bow firing animation.
Logged
deab
Level 2
**



View Profile
« Reply #107 on: April 14, 2016, 06:48:10 AM »

Lots of progress last week or so, mostly under the hood stuff and clean up after recent feature additions. Lots of bugs fixed and recent system additions cleaned up. Here's a high level overview:

  • Memory (hopefully) fully integrated.
  • Race added as object and database table.
  • Basic strength tests added, also modifies damage when attacking.
  • Complexity added for props - rats can no longer open doors.
  • New Gnome caster asset added.
  • Props can now be destroyed
  • Turn order simplified, no longer used initiative.
  • Ability / action overhaul, clean up. ActionBundle if single target, no 'use' Prop, just a target.
  • AI Explore state added - player can now path across unseen parts of the map.
  • Doors now open if take damage from correct side.
  • UI clean up, improved 'auto pause' code; Escape to game menu when lose focus.
Logged
deab
Level 2
**



View Profile
« Reply #108 on: April 27, 2016, 05:17:21 AM »

Update #38
'Hate' System

Monsters in The Ever will provide a challenge, and you really don't want your more squishy characters attracting their attention. If you wizard charges in and nukes the heck out a skeleton, that skeleton is going to respond. Careful management of your teams abilities will be crucial.

Behind the scenes, the AI is now using a 'hate' system to keep track of other characters. Essentially an AI character will apportion 'hate' to a player character initially on sight (if an enemy based on faction). If the player attacks, more hate will be recorded.

If damage is taken from an unseen attacker (all characters obey the same line of sight rules as the player) the hate is assigned as 'unknown' at the source co-ordinates.

Every turn the character checks for the most hated, and targets them.  If the most hated entry is an unknown attacker, the character will attempt to investigate the source.

As healing and other abilities are added, the hate system will be updated to include these. Tools will also be added to give the player more options - for example, warriors will be able to 'taunt' enemies to attempt to attract their attention, and some classes with have means to directly adjust a characters hate list.

Players can of course attempt to exploit this system and ping-pong an enemy between their characters, avoiding damage. I'm keen to allow a skilled player to take advantage of systems within the game, but don't go assuming this would work with smarter enemies..


AI Choose Attack

The AI can now choose the most damaging option when attacking based on equipped items and the target. For example, a goblin holding a bow could:
  • Show the bow
  • Bash the target with the bow (if in range)
  • Bash with his free hand (or equipped item)

The AI takes in to account the resists of the target - so for example shooting the bow with a piercing arrow at a skeleton won't be very effective, maybe better to bash.


'Destroy' State

The AI can now be set to destroy a target. Using the new 'choose attack' code, the AI will continue to attack the target until dead/destroyed. The player can set this as an order for a character if they don't want to micromanage.


AI Refactor

Previously the AI ran as a series of top level states (PATROL, ENGAGE, HUNT, FLEE etc.), and lower level states called from these (MOVE,ACTION). The current top level state would be responsible for changing to another top level as appropriate.

As more features are added this was growing ever more complex, so I've now refactored with a new MASTER state that runs every turn. The master state controls which of the old top level states should run. I haven't yet added any more complex behaviour, but the code is now much simpler, with one place making all the decisions.


Debugging Tools

Before beginning on the hate system, I spent a couple of days improving my debug options. I added a new, flexible window system that allows me to easily view various data types:



Here's a larger Gfycat demo.

To reduce Unity project compiles, I added a in game console with a number of options (show various detailed logs, number of player characters, freeze AI etc.). These options persist between runs. Previously these were hard coded in and required a project compile.

I've also added more context cheat options in game - set a characters hps, open/close doors etc. It was well worth the adding these tools, I'm already wondering how I managed without them.
Logged
deab
Level 2
**



View Profile
« Reply #109 on: April 30, 2016, 11:30:54 PM »

A bit light on images last post so here's this weeks #screenshotsaturday:

Logged
deab
Level 2
**



View Profile
« Reply #110 on: May 09, 2016, 06:02:49 AM »

When I set up the my animation workflow / code, I used a purely code based new Unity api (Playables). This worked well, as I was able to automate the set up for each model based on the Blender animations. However, there were issues with Humanoid models, and my last bug report has now been confirmed as 'requires rewrite, added to roadmap'. I can't wait for that, so I've spent the week replacing everything using the traditional Unity Animator system and Override controllers.

Very happy with the results. I've managed to come up with a better system that offers all the automation I achieved before, but now with the use of Humanoid models (humanoid models allow easy x axis mirroring of animations) and a lot less of my own code.

To celebrate, I've redone the Evil Eye model - now with working eyelids.

Logged
TooKindStudio
Level 0
***



View Profile WWW
« Reply #111 on: May 09, 2016, 07:09:04 AM »

I love the door mechanics! This will give the gameplay some very interesting moments.
Logged

deab
Level 2
**



View Profile
« Reply #112 on: May 09, 2016, 11:39:10 AM »

I love the door mechanics! This will give the gameplay some very interesting moments.

Glad you like it! Hopefully lots of these little interactions/systems will lead to all sorts of possibilities.
Logged
deab
Level 2
**



View Profile
« Reply #113 on: May 11, 2016, 09:09:33 AM »


I gave the Evil Eye horns so it could melee attack.



Then I remembered that to attack, the monster needs a prop to attack with (which defines the damage type and amount), and these are tied to equipment hooks (hands, or mouth for the rat). So I little sidetracked, I add a new hook type of 'horn'. These equippable slots have hidden props that are used as a default - a horn in this case, hands for humanoid, and teeth for the rat.

Which now means the Eye could equip items to each horn Smiley So I gave it a random chance to spawn with a skull on one horn, just for fun.

Which means existing systems kick in: as the skull has a blunt damage type, this eye has a choice of a piercing attack (using the other horn), or a blunt attack. And the AI can evaluate a target to decide on the most effective attack. Of course the skull isn't a great weapon, but you get the idea.

Imagine Eyes with a low chance to spawn with a visible ring or crown that increased damage. Handy for the Eye, but drops on death for the player.



(AI is frozen in that gif)
Logged
Gamedragon
Guest
« Reply #114 on: May 13, 2016, 02:09:30 PM »

This is looking really great. I'm actually quite liking your art! It has the sort of style that I enjoy looking at, and your devlog posts are pretty interesting.
Logged
deab
Level 2
**



View Profile
« Reply #115 on: May 15, 2016, 10:53:40 AM »

This is looking really great. I'm actually quite liking your art! It has the sort of style that I enjoy looking at, and your devlog posts are pretty interesting.

Thanks for your comments!
Logged
deab
Level 2
**



View Profile
« Reply #116 on: May 15, 2016, 12:04:57 PM »

Update #39
A Game Emerging

It's been a huge week of progress. With the animation work done (for now - improved rigs planned) I've moved on to something more gameplay related - classes and spells!

Classes currently only dictate the spells available to a character. Initial classes are cleric (heal), wizard (2 direct damage spells, one fire one blunt damage), ranger and warrior (no spells yet).

Code-wise I'm using a 'prop' for each spell (as used for swords etc.) This means all my existing editing tools are used, plus all the logic for what can be used by whom, on which target, and when is already written. Spell props are internal only and don't exist in the game world. This means I needed very little code to add the spells, and both players and AI soon had access. I'll be building on this to add more advances spells, but a great start.

Healing spells are tied in to the hate system. Healing causes 'hate' for the cleric to any monster that witnesses the heal. Going over the top with heals will cause you cleric to be attacked, so careful use is required. Unless you want to distract the monster towards the cleric..

New Animations
Adding spells required a new animation type ('casting') so quickly added this as a state and came up with some casting animations. While I was at it also added 'react' animations played when a character takes damage. Simple as they are, really adds to the experience!

To you, to me.. hit reaction animations:



And here's the Eyes casting:



Particles effects are on the list, both for casting and spell hits.

UI Updates
A fair bit of UI clean up rounded out the week, including the animation speed options. I've had a player speed setting for a while - when you are familiar with the game you, or just want to move across a cleared map, you can speed up the animations.  No XCOM waiting around for an animation to play you've seen 100 times.. The fast option now removes the 'move' animation completely, so plays like a traditional ASCII roguelike.

Here's a gif showing this mode (I set everyone to 'friends' to avoid combat for the recording).



Change Log

Here's this weeks main changes:

  • All animations controllers greatly simplified.
  • Failed attacks now cause hate.
  • PAUSE display improved, including ‘...pausing…’ when waiting on AI animations.
  • Keys - SPACE to pause, RETURN use ability or wait if not selected.
  • Anim speeds overhaul, max speed movement is instant, all action anims affected
  • Player settings now saved, action camera toggle option added.
  • Classes added, currently just specifies spells.
  • Initial spell implementation added, Heal and damage spells.
  • CAST and REACT anims added.
  • Healing now causes Hate
  • Action icon overhaul to support spells.
Logged
deab
Level 2
**



View Profile
« Reply #117 on: May 16, 2016, 07:26:45 AM »

Gameplay Moments

A couple of nice little moments from various play testing this week.

Moment #1
I spotted a goblin and skeleton fighting for the first time. By default, these two factions ignore each other. Here's what happened:

Small test map with a goblin and skeleton, and only a single player character. The goblin had range attack (bow), the skeleton just a sword so gave chase.

I went through a door, closing it behind me and stood on the tile, blocking the door.

Using my debug 'show all' mode, I was watching what happened next (I just kept skipping my turn). Both monsters approached the door to attempt to follow. The skeleton reached the door first, but couldn't open it as I was blocking on the other side. The skeleton then started attacking the door.

The goblin, unable to get to the door, attacked the skeleton as that was blocking him.

This continued for a few rounds. Eventually the goblin had generated enough hate from the skeleton to become its most hated, so the skelly turned and began attacking the goblin. These two then continues to fight until one dies (forget which).

Was great to see this, as I hadn't explicitly written AI for this, but the result of a couple of different systems interacting. This is something the player will be able to exploit if they can set it up.

Moment #2

A larger test map with 3 player characters who were split up at the start, with the cleric off in a room with an Evil Eye, and the ranger and wizard on the other side of the map.

The cleric killed the eye, then healed up. The other two characters were making their way over to join the cleric. When the cleric opened the room's door, he was spotted by an another eye and a skeleton. As these would be too much for the cleric, I closed the door and stood behind it to wait for the others to arrive.

The others arrived just as the door was destroyed, and were able to lure the skeleton away with ranged attacks, then join with the cleric.

It hadn't really occurred to me that doors could often serve as a way to buy time until help arrives. I'm already planning to add the ability to lock a door from inside, plus you can already use crates to block a door. Lots of options, which was my hope with all these different systems, and its great to see them coming together.
Logged
deab
Level 2
**



View Profile
« Reply #118 on: May 22, 2016, 10:19:10 AM »

Update #40
New UI, massive heads!

Another big week of progress! The highlight is a new streamlined UI.

Character Overlay
Often when testing, I've issued an order to the wrong character (you can selected a character other than the current turn, and set an order that will be followed when their turn comes around).

To counter this, the currently selected character is now shown overlaid on the bottom left corner of the screen. If an ability is selected along with a target, they are shown on the bottom right.

As the overlays use cameras in the game world, they are fully animated and include whatever items are equipped. The only change is the lighting, which has to be tweaked for the different viewpoint, and shown at full brightness. Here's an example:



Very pleased with this - really helps with reading the screen. I don't think I've issued any incorrect orders following the change.

An additional benefit is that screenshots/videos should be more appealing with the large characters.


Ability / Target Selection
10 ability slots are shown at the bottom of the screen. These show usable equipment (mace and shield in the above shot) and any available spells (Heal). You can select abilites by clicking or number keys 1-0.

Once an ability is selected, the target row fades any characters that are either out of the current characters field of view, or aren't likely to be intended targets. For example, damaging abilities fade player characters, while a Heal spell fades enemies. (You can bypass this by right clicking a character for a full selection of abilities).

Click a character icon to target, or use TAB to cycle through them.

Once the target is selected, hit RETURN to perform the action, or use the button that appears. The button shows a text description of the action (in the example, 'Bash with steel mace').

Here's a full size shot, click to view:



Playtest Session
With the new UI I asked my wife for a testing session. This is the first time she's played, so I mostly observed with very little pointers (there's no tutorial or tool tips as yet, so I just highlighted the UI areas and their meaning).

The only real sticking point was trying to attack/cast on a enemy that the current character wasn't facing, so this is something I'll be sure to highlight in the tutorial and tool tips.

Change Log
Here's the main changes from this weeks work:

  • Context menu cleaned up Orders, now submenu
  • HOLD order added for players, skips turns, ignores everything.
  • 'not visible' message added to Context
  • Current character and selected target shown as cut outs in corners of screen.
  • New UI - fixed 10 slot ability / prop display, turn order now shown above and used for target selection. Action buttons shown above turn icons.
  • New tooltip window top left, disabled old Tactical display.
  • ‘Last action’ window removed, R key still works.
  • Removed in world character + prop names.
  • Push/Pull improved, non blocking Props can be moved without Pawn moving if tile occupied.
  • Ability don't attempt reaction if beneficial
  • PawnUI order icon can now be clicked to return to manual control, shows a X on mouseover.
  • New debug options in context menu - ‘add hate’, and ‘pause AI’.
  • DESTROY state end if target is a door and now open.
Logged
deab
Level 2
**



View Profile
« Reply #119 on: June 08, 2016, 08:26:58 AM »

Update #41
Spells & Message Log

My day job will be busy for a couple of weeks, so here's an update before I forget what I've been up to.

Action Log
Long on my todo list, I've finally added a message log to the game. Originally I had a lot of floating text in game, but its too easy to miss, and with your characters spread out, often off screen. The message log is also useful if the player disables combat animation (you can play at traditional ascii rogue-like speed if you wish).




Swap Position
Added a 'swap position' command when you have two adjacent characters. This allows a character to move out of turn order, but as both characters end up facing the direction of travel, I can live with that. I don't think its really open to abuse, and its very convenient.

Spell Effects
Two new spells have been added.

The Ranger can now 'bind sight' to another character, revealing that characters vision to the player for a number of turns. Eventually there will be a chance for the target to resist, which will anger the target.



Wizard has been granted a 'root' spell. Target is unable to move, but can turn, until the spell fades. Monsters really don't like this, so it will upset them! I've started on a 'visual' system to provide effects for spells, but needs more work. Root isn't limited to characters - you can root any interactive object.

Enemy monsters will share the same class system as players, so you may be on the receiving end! I'll need to balance this so it isn't too common / annoying.

Both of these are 'maintained' spells. You can only cast on a single target - casting on a second target, or if the caster dies, the existing effect is cancelled. Haven't yet settled on a mana/casting system, so this is subject to change for the root spell.

Tooltips
A tooltip system has been added. Needs a polish, but is a another step towards a public release.

As usual lots of other small improvements since the last update.
Logged
Pages: 1 ... 4 5 [6] 7 8 9
Print
Jump to:  

Theme orange-lt created by panic