Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

 
Advanced search

1345209 Posts in 61706 Topics- by 53283 Members - Latest Member: maxnielsen

August 19, 2018, 01:11:01 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsTenderfoot Tactics
Pages: [1]
Print
Author Topic: Tenderfoot Tactics  (Read 1342 times)
badru
Level 0
**



View Profile WWW
« on: April 29, 2018, 12:44:17 PM »



You're a newborn spirit inhabiting a small party of domesticated humans. Your presence imbues them with magics that allow them to act directly as natural forces, turning the chaos of the living battlefield to your advantage.

Raise your humans to become powerful woods witches, battlemages, liches, and stonespeakers. Lift a ridge of earth to block the approach of feral knights. Flick a spark into the woods of a neighboring island to smoke out the archers hiding there. Moisten the soil with a rain shower to foster new plant life and eventually hardy brush for your softer mages to use as cover.

Explore your new home in the archipelago and meet the happy residents. Resolve marital disputes between Crown and Tiara on the assignment of their rough but sweet devotee Gauntlet. Nurture Rutabaga's silent little sister Parsnip, who Avocado thinks is a dullard. Help Wiseard by fighting through forests thick with feral humans to investigate the mysterious spirits who speak in tongues and wear no faces, the ones Dad-King calls the Untamed.


--

Tenderfoot Tactics is a TRPG, largely inspired by Final Fantasy Tactics. Its guiding-light design focus is on complex, meaningful board state that you effect constantly but in ways that are difficult to predict and control. Character actions generally both influence and are influenced by a continuous simulation of water, soil moisture, plant life, and fire.

I plan to make it a single player campaign with an amorphous open-world structure, with quests delivered to the player through a narrative director.

I'm making it in Unity 2017.2, Blender, and a bit of Photoshop. Animations are currently from Mixamo and will probably be replaced.

Here's where I'm at with the major components of the game:



Combat is where I've spent the most time. Most everything here is working, but needs a lot more work to get where I want it. Right now I'm halfway through moving my systems from a 12x12 grid correlated to the movement grid to a 128x128 fine-grained simulation. I've prototyped out each tier of class in the RPG structure and feel good about the general arc, but need to fill in a lot of holes. I'm currently like 90% of the way to my next major milestone here, which will allow testers to start from a starting party and play through random encounters to level through the job tree.







Party Management is a functioning prototype that needs a lot of consideration from design/UI perspectives. It's in because it needs to be for me to rearrange parties and is just recently being given to testers.



The Overworld is a bare-bones concept basically, but has gotten some recent love where I've hammered out the core structure for quests and dialogue.

--

I'll post more in-depth stuff about systems when I get a moment later! Not sure whether to dig into the way things are first, or to just jump into what I'm working on now (water rendering, fire simulation).
« Last Edit: April 30, 2018, 12:35:03 PM by badru » Logged

badru
Level 0
**



View Profile WWW
« Reply #1 on: April 30, 2018, 12:54:04 PM »



Spent some time this weekend getting the water to a more watery place by modifying the color based on view reflection angles, and adding some watery panning normal maps (just sampled from world position) to the vertex positions.

Kind of a waste of time but I let myself do that on weekends Smiley

Started to dig into actually marching the reflection direction into the depth map to get the 'correct' color, which should be doable since I'm using the deferred renderer, but wasn't able to do it right off the bat. Decided it looked pretty good with faked colors and I shouldn't be wasting a bunch of hours on something so unimportant so I'm leaving that blob of code commented out for now but maybe I'll come back some future weekend.

The stuff that didn't end up working out was something like this:

Code:
float4 camViewDir = float4(normalize(i.worldPos - _WorldSpaceCameraPos).xyz, 0);
float4 reflectionDir = camViewDir - 2 * dot(camViewDir, i.normal) * i.normal;
reflectionDir = normalize(reflectionDir);

float4 bestPos = i.screenPos;

for( float pct = 0.0; pct <= 1.0; pct += 0.1 ){
    float4 testPos = i.screenPos + reflectionDir * pct * _ProjectionParams.z;
    float sceneDepth = Linear01Depth(tex2D(_CameraDepthTexture, testPos.xy / testPos.w).r);
    float rayDepth = Linear01Depth(testPos.z / testPos.w);
    if(rayDepth < sceneDepth) bestPos = testPos;
}

float4 reflectionColor = float4(tex2D(_BackgroundTexture, bestPos.xy / bestPos.w).rgb, 1);

Instead I'm doing this way lazier but more performant, controlled, and pretty-good-looking hack:

Code:
col.rgb += lerp(_horizonColor.rgb, _skyColor.rgb, saturate(pow(-reflectionDir.y, 2)));

-

I think I'll try to put my fire simulation in a compute shader next, and then maybe get to the meatier and way-more-important stuff of leveling-up characters
Logged

badru
Level 0
**



View Profile WWW
« Reply #2 on: May 06, 2018, 04:51:31 PM »

Redid the plant and fire sims in compute shaders, which was really gratifying because I'd written a sort of superstructure and some reusable components already, and it only took a few hours total.

The plants were immediately growing in more interesting and obvious patterns, and the fire has a much clearer route. Before things were all running per vertex or per quad, so roughly 12x12 on these map sizes, and it was lacking a lot of the nice fine-grained stuff I'm getting now, so I'm really happy with that. I ultimately want the systems to feel very rich and alive and the higher resolution seems like it's doing a lot for that.




Also have the core leveling stuff working, but need UI now :X
Logged

badru
Level 0
**



View Profile WWW
« Reply #3 on: June 20, 2018, 11:39:51 AM »

Hellooo!!

Lots of reworks of core systems over the last few weeks as I pull my various prototype scenes together into a cohesive entity that can more fluidly transition between the overworld and the combat scenes, and can overlay all my menus within either.

UI

The UI used to be composed of a random assortment of panels that were toggled on or off. Now it’s built as a persistent core that has various smaller components which can be told to become visible or to hide themselves, and to listen for input or not. These small components can now be restructured more easily, can be reused in different circumstances, and can decide on an individual basis how to show or hide themselves, and how to handle input when they’re focused.

I’m also starting to replace parts of the UI that used to be wholly text with icons. Currently the icons are just purchased assets. They’re probably just placeholders I’ll replace later. Do you hate them? I can’t decide whether I hate them or whether they’re hilarious and great. I think they do a lot for the game regardless.



Input

While rewriting the UI I decided I wanted to handle player input more holistically and in a more robust manner. I wrote a wrapper for my input plugin (Rewired) and rewrote all of my input interfacing to go through that wrapper.

The wrapper is structured as a bunch of static delegates that send out custom "ButtonState" or "AxisState" objects when input is received. I also wrote a second layer for the cursor which lets you register world colliders and UI rects and handles deciding which was clicked and which is hovered, firing off generic events as well as optionally calling registered delegates per-collider.

The input system should now easily handle mouse and keyboard as well as controller input, including small things like changing camera behavior and hiding the cursor when a controller is being used.

New Overhead Displays

I restructured the display over units’ heads to have more uses. They still show a unit’s turn order, but when a unit is currently taking its turn they’ll now act as a sort of highlighter to indicate the unit more clearly (rather than just displaying “0”). When a unit takes damage, they’ll animate out a small health bar (like before) but without numbers to reduce clutter. When the unit is hovered with a cursor or their grid space is hovered with a map selector, the overhead display now animates out to show additional information: specific health numbers, the unit’s name and job, and the icons of the unit’s known skills, which should help players make more informed decisions. I think I’ll also add an outline on the map indicating where that unit can move, since that’s currently a bit difficult to parse.



Job Trees and Progression

Units now gain experience at the end of combat, after which the player is returned to the party menu. As units level up they unlock more skill slots within their job as well as unlocking more specific and complex jobs.

The jobs and skills still need to be filled in, but this is the core of the progression loop and it’s more or less functioning, although not feeling wonderful just yet.

Right now a job is unlocked for a unit if it has X levels in a previous job, and if the unit is one of the correct "affinities" - so e.g. both fire and earth attuned units can become lavamancers but only fire attuned units can become warlocks.



Also!

The party menu has been moved into the overworld, so it should be fairly trivial to add in overworld exploration and questing in the near future (e.g. when I want to be able to release a demo).

A lot of the visuals have been unified around sky/horizon/light colors, so it should be manageable to add biomes, time, or seasonal cycles somewhere down the line.

The AI has been rewritten to bypass UI and input in a way that is less bug-prone, and looks cleaner for players (you don’t have to watch the AI choose what skills to use) as well as somewhat more mysterious, which I like. It uhh it used to fake controller input and use the menus as if it were a player, which I think was cute but kind of hacky and more work than it was worth.


Happy solstice!
☀️ badru

PS - if you want to help test hmu Smiley [email protected]
« Last Edit: June 20, 2018, 12:01:12 PM by badru » Logged

Tattomoosa
Level 0
**

Making The Decision Engine


View Profile WWW
« Reply #4 on: June 20, 2018, 06:50:37 PM »

Those effects look great, really surprised this hasn't gotten more attention.

I also quite like the stick figure look of the people. Are they placeholders or are you sticking with that style?

The fire effect seems a little cartoon-y for how realistic the terrain is, though.

Looks like the interactions and UI already have quite a bit of juice. Would really like to see a video of a battle start-to-finish if possible.
Logged

badru
Level 0
**



View Profile WWW
« Reply #5 on: June 21, 2018, 08:26:19 AM »

Those effects look great, really surprised this hasn't gotten more attention.

I also quite like the stick figure look of the people. Are they placeholders or are you sticking with that style?

The fire effect seems a little cartoon-y for how realistic the terrain is, though.

Looks like the interactions and UI already have quite a bit of juice. Would really like to see a video of a battle start-to-finish if possible.

Thanks!

I am actually not sure whether the stick people are placeholders or not! I'm sort of playing with the idea of replacing them with custom meshes per job/class. Right now there's an equipment system that's hidden from the player, and the stick people are good neutral models to put whatever clothes on. So I could either make triple-digit numbers of individual equipment meshes and let players dress their people up (which does sound cute), or make 28 character meshes (one per job) that hopefully could use the same animations retargeted mostly. Both sound like a lot of work. I think the visual clarity of a single monolithic 'look' for each job would do more service to the combat gameplay and maybe the visual design, but I also like the idea of dressing up your own people, and I definitely want the player to think of their team as a bunch of dolls they play with, so that matches the creative goals in some ways. I don't know! It's bad to not know probably but I'm just avoiding working on those systems until I have a stronger direction.

The fire is almost definitely going to be reworked to be more detailed / less symbolic. You'll see in the old gameplay video I'm going to link you below that more of the game used to be in that simplified geometric style. I struggled a lot with feeling like there was too much noise to read the gameplay-relevant signals from the visuals, and what I found was that hewing closer to realistic made it take less mental energy to decode, for instance, when the soil was wet or the grass was dry.

I'm actually doing that pass on the brush right now, moving from more symbolic to more naturalistic, and maybe I'll do a quick pass on the fire too...





Actually, here's from when it was even more fully geometric/symbolic, for better comparison:

« Last Edit: June 21, 2018, 10:53:13 AM by badru » Logged

badru
Level 0
**



View Profile WWW
« Reply #6 on: June 26, 2018, 10:43:14 AM »

Redid my "lighting" setup while fixing up my foliage in general.

I've got two gradients, one for fog color and one for sky color, and do a combination of lerps and multiplies of an object's local color against those two based on vertex world position. So for example as an object gets further from the player's position its shader lerps from ObjectColor --> FogColor(pos). And as a vertex gets further off the ground height, the light color it's multiplied against lerps from FogColor(pos) to OverheadSkyColor.



I tried using normals for lighting direction but decided it described the form of the objects too well and ended up distracting from the colors and silhouettes. You could see leaf quads clipping with each other and such. I think it's nicer to use something like world space for lighting, which guarantees that where two triangles intersect, their colors will be identical and so the geometry clipping will be less noticeable.

I've also fixed up my instancer (all my foliage is built on top of Unity's DrawMeshInstanced(), which hooks into GPU instancing of meshes and lets me put way more foliage on screen than I could afford with full game objects).

Next up - writing a Region Settings Manager, which will let me serialize out different lighting and foliage for different regions / biomes, and eventually let me transition between regions based on the player's location in the overworld map.
Logged

badru
Level 0
**



View Profile WWW
« Reply #7 on: June 26, 2018, 10:51:01 AM »

Oh I just thought to note that this game is set in a real place and I'm using reference to get specific colors and general shapes.



I'm using a combination of cheap assets and quick blender trash for my meshes depending on need. It's for speed right now as I get the systems in place but I'll probably stick with them as much as I feel comfortable, because the project itself is of such a large scope that I think it's valuable to cut corners wherever I can.
Logged

badru
Level 0
**



View Profile WWW
« Reply #8 on: June 30, 2018, 11:46:58 AM »

Did some futzing to build out a RegionManager singleton papa and wrote a ScriptableObject definition of what a Region is so I can serialize them out.

I'm associating each Region object with an ID from 0-255. My map is a single channel heightmap grabbed from real world data using https://terrain.party/, so I'm painting in region IDs in the green channel. My idea is to, when I want to add or adjust a region boundary, open the map in Photoshop, paint the region I want in, make it into a layermask and dump the right green number into it. Hopefully it's a manageable way to edit a map that doesn't bite me in the butt later! Could always make a real map editor application myself but I'd rather not make tools if I can just adapt other tools to my uses.



And I made a very simple second region, using a photo ref from a nearby location at a different time of day



Right now making and editing regions isn't super streamlined, so I may need to come back to that later before really building out content. Or maybe I'll just suffer through a little difficulty. Depends how many regions I want.

Unlike maybe every other game I've made, I'm planning on associating a time of day with a spatial location, rather than letting a day-night cycle pass. I'm interested in being able to control time of day and weather to help communicate a specific feeling with a location in service to the drama and the fiction.
Logged

DireLogomachist
Level 4
****



View Profile
« Reply #9 on: June 30, 2018, 09:07:17 PM »

Very cool! Always love a neat tactics game.
Logged


Living and dying by Hanlon's Razor
badru
Level 0
**



View Profile WWW
« Reply #10 on: July 14, 2018, 09:54:37 AM »

Update time!

Did a bunch of work on the combat ground generation. It was always based on theoretically high resolution noise, but because of dumb tech debt that noise was then res'd down significantly low to vertex heights. I've done the thing I've been doing with everything else in the combat system and moved it to a texture, currently 256x256. I get a lot nicer finer details with this system, and the way it interacts with flowing water is real nice. Still working out some light bugs with spells that modify the terrain but most of the way there!



Also visible above is a new turn order monitor UI element that shows you the full order in one place. You can hover over names to highlight the relevant unit, and hovering units now shows their move distance too - players have been saying that it takes a while to start internalizing the need for caution and spatial awareness, so I'm hoping this'll help with that.

Also doing some work to bulk out the early jobs.

Scouts now have a handful of utility skills - Song (near aoe heal), Grenade (near aoe damage), Garrote (high damage from behind melee). My goal with Scouts is to have a relatively weak but incredibly versatile job as the very starting one - someone that could go in any direction.



Knights now have a couple moves that alter turn order - Praise promotes units in the turn order and heals them, and Insult demotes units in the turn order and does a small bit of damage. The focus with Knights is to have them be a supporting and blocking job. On your knight you should be thinking about dangerous enemy units and how to foil them. Hopefully this leans that direction. Players have also noted that it took a while to get familiar with the turn order so I'm hoping having some early skills that mess with turn order will help players realize the need for tactics that take turn order into account.

Logged

Buckrider
Level 0
**



View Profile WWW
« Reply #11 on: July 14, 2018, 03:32:15 PM »

I spend endless hours playing squad combat games like X-com and your project looks very interesting. Keep it up, I like your updates.
Logged

Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic