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

Login with username, password and session length

 
Advanced search

1360492 Posts in 63345 Topics- by 55194 Members - Latest Member: nowe reginald

May 23, 2019, 10:14:21 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsYear In The Trees
Pages: 1 ... 7 8 [9]
Print
Author Topic: Year In The Trees  (Read 14361 times)
Luno
Level 1
*


now comes good sailing


View Profile WWW
« Reply #160 on: December 01, 2018, 12:14:44 PM »

Thanks hermit!

Uh, hmm, it certainly wasn't something that happened all at once...it's been an ongoing thing where every time I need a new effect I take a weekend and figure out how to write it myself, cementing and improving my understanding of how it all works and what can be done.

The first mention of "shader" in my commit history is actually from November of 2016! Of course, it won't take you 2 years, I work on shaders pretty sparsely.

Apparently, the first thing I tried to do was to emulate overlay and a few other photoshop blend modes...it looks like it took me about a week (and also note that I have a day job). I remember that I wanted these effects for my sprites because I was prototyping all the visual polish and post-effects in Photoshop and I was using overlay everywhere.

I found this article on Google and thought, "OK well I guess I have to learn these shader things then". At the time I couldn't find any other tutorials for this effect detailed enough for a complete beginner, so I was literally working off of Unity's docs, that article, and Nvidia's CG docs (these aren't great, Microsoft's HLSL reference is much better).

I wasn't even writing much code that week either, I definitely remember spending a lot of time reading articles and introductions trying to understand how the hell any of this worked.

I was truly starting from 0; I'd never really done any computer graphics or 3D before and I honestly didn't even know what shaders or even vertices/meshes were. Like I knew the term "mesh" from unity components, but I don't think I could have told you what it was... "like, something to do with 3D rendering I guess?" and I had been doing 2D stuff in Unity for about 7 months at that point!

I think you can definitely start getting useful results for your game in a weekend, especially with the right intros and guides. Like I had made 3 or 4 useful shaders for the game early on and I was still pretty confused and unclear about how a lot of it worked.
Logged

litHermit
Level 0
***



View Profile
« Reply #161 on: December 01, 2018, 01:36:44 PM »

That's a very thorough insight into your learning process, thanks! Smiley Very illuminating
Logged
xix
Level 5
*****


View Profile
« Reply #162 on: December 01, 2018, 01:52:14 PM »

Is there anything you wanted to know specifically?

It looks like you have different times of day for zones, but you're using the same tileset. That is super interesting to me.
Logged


Get the demo itch.io
Follow @lunarsignals on twitter
Luno
Level 1
*


now comes good sailing


View Profile WWW
« Reply #163 on: December 01, 2018, 09:33:27 PM »

It looks like you have different times of day for zones, but you're using the same tileset. That is super interesting to me.

Ah yeah, believe it or not that's 100% just blending a color over the entire scene with different math. All of the weather is that + particle systems too. Season changes are palette swaps (and enabling/disabling a few additional things like snow sprites for instance).
Logged

Mochnant
Level 0
***



View Profile
« Reply #164 on: December 07, 2018, 08:26:19 AM »

Lovely waterfall, @luno.  I don't know a lot about shaders and I found this devblog very insightful, thank you!
Logged
Luno
Level 1
*


now comes good sailing


View Profile WWW
« Reply #165 on: February 13, 2019, 04:25:18 PM »

Blergh, I really need to update this thing!

Just wanted to check in and say that I'm still here and the project is still cookin'.

I'm in one of those phases right now where almost everything I'm adding is not GIF-able. Mostly audio stuff (SFX, ambiance, implementation, audio "engine"), design work, and various related infrastructure.

I know I always say, "I really want to do a post on X" and then half the time I don't get around to it, but...I really want to do a post on the audio "engine" code that I wrote on top of Unity's audio and my experience with that. I decided not to use any middleware like fmod or wwise because Unity's system is flexible enough (although super bare bones) and I know exactly what I want and how to build it (a rare situation). At the very least I will post a little demo video showing some of the audio soon.

Stay tuned. Wizard
Logged

Mochnant
Level 0
***



View Profile
« Reply #166 on: March 18, 2019, 09:32:11 AM »

Any news on the game's progress, @Luno?
Logged
Luno
Level 1
*


now comes good sailing


View Profile WWW
« Reply #167 on: March 23, 2019, 05:06:44 PM »

Any news on the game's progress, @Luno?

Yes @Mochnant! I just got back from GDC. It was weird timing because I'm going through some personal struggles, but I had a really good time that made me super sad and super happy at the same time. An emotional roller coaster, if you will.

Anyways, here's a few updates crammed into one (also, gentle reminder that I've been posting about this stuff a lot more frequently on Twitter if you wanna' follow me @lunoland):



1. Buffs
First up, I added buffs into the game! The work for this was mostly UI, but also involved a fair bit of programming to build out the backend.

Since I've been working on this project for so long, the way that I write code has evolved a lot. In the beginning I was trying out a lot of design patterns and OOP stuff because of Unity and the fact that I hadn't done OOP in a long time (also, I read Game Programming Patterns around that time). Now I'm settling into a better way of writing C# that jives more with the procedural style I'm used to working in.

To give a flavor, there's a static class called Buffs that contains all of the buff-related logic and data types (which are just structs with no behavior). The necessary context is passed into these static functions, e.g. instead of mob.ApplyBuff(buffName) you'd write Buffs.Apply(mob, buffName)

You might be tempted to call this "dependency injection" or "functional", but really it's just the typical pre-OOP way of doing things. It's a subtle inversion, but there are some advantages (organizationally, conceptually, and even performance-wise) to preferring these static function libraries over your typical object hierarchies & virtual methods in many cases. I think I've discussed this in detail elsewhere, but I'm totally here for this growing trend to reject OOP. So basically everything you hear about "composition over inheritance" and "data oriented design" really just boils down to "hey maybe OOP was a mistake let's go back to the 80's" Cheesy


Making all these icons before knowing exactly which buffs I'll need isn't great but hey, I was having fun.
Sometimes you just gotta, er, ride the wave?




This GIF demonstrates the UI element of the buff-system.
I referenced a bunch of MMOs (thanks Guild Wars 2) for the design.



2. Armor
I also recently designed all the armor that will be available in the game. My goals for these modular character sprites were:

- Get as much variation as possible via mixing tops + bottoms and palette swapping (while also keeping things simple enough to animate)

- Allow for neutral, femme, and masculine looks from the same base sprites (for player expression and efficient NPC creation)

- Make players feel good because their character looks rad

- Define visually distinct roles by the equipment they will tend to use


Also, if you've been following along on twitter you may have noticed me having a crisis of identity about the character design around this time. This is because I was also moving all of my animation over to Aseprite (I still do environments in Photoshop) and felt this was the last chance to modify the character. In the end I kept the old design of course XD

I'm not sure if this game will ever have explicit classes re: scope, but I've been trying to think about how I can carve out different kinds of implicit roles and playstyles from the activities and items in the game instead. As a result, all of the armor designs come from that thinking and are meant to compliment the stat system (more on that below).


In addition to the player's basic clothing options, I designed 6 hair styles and 6 armor sets.
At a minimum, I know I can launch with at least 3 armor sets, which take ~1 hour per animation to add!




Since I changed my animation workflow, I revisited some older animations like the player's walk cycle.
It's now 6 frames up from 4, and a lot more interesting now.



3. Stats
You know what's funny? Working on an RPG for years and not having any stats in the game. Hilarious.

In the end, this was probably the most time I've spent on a pure "design" related task, and it was tough because there was no art and little code to show so it didn't feel as immediately valuable.

In my current design, I have 3 main "composite" stats that are very similar to DOTA/Warcraft 3 (strength, agility, and intelligence). I was strongly considering going with a 4 stat system (power, life, speed, energy) for a while but it didn't fit my design goals as well, which were:

- Be able to define different playstyle "profiles" (more on this below)

- Respect the player's intelligence (no arbitrarily large numbers...a bit controversial perhaps)

- Be simple and easy to understand

- Feel powerful and valuable





I was heavily influenced by this GDC talk on stats in Pillars of Eternity, which I think crystallized a lot of my beef with typical RPG stat systems.


I decided to have linear stat growth because it met a lot of my goals (ease of understanding, value, no large numbers). This means that a point of strength always gives the same bonuses, but there will still be some curves baked into the items (for example +5 of a stat on tier 1 armor, +9 on tier 2, and +11 on tier 3). I'd like to avoid players needing to find a formula on a wiki in order to optimize their character.


***WARNING, NOW ENTERING HIGHLY SPECULATIVE ZONE***
So mechanically-speaking, stats, damage types, and mitigation are all in the game now. What I'm going to talk about next is the high-level concept of how I want to use these stats in the game. I don't know how much of this is realistic so don't get too excited, but I wanted to talk about some of the things I've been thinking about at least.

So I've had these 3 "player profiles" in mind as I've been designing all these game systems. The profiles are defined by different kinds of activities you do in game. Each profile broadly corresponds with a different kind of person that has expressed interest in the game, and is mapped to a different core stat.

You could almost think of it as an RPG with 3 classes, but it's a bit fuzzier because you'll have to do a little bit of each. The harvest moon domestic-type activities like cooking and farming correspond to intelligence, combat to strength, and exploration/nature survival to agility. I'm (perhaps naively) trying to provide a different flavor for each profile.

I'm consistently embarrassed by this because of the ambitious scope, but I'm excited because there seems to be a lot of synergy too. We'll see what happens, but here's how I'm thinking of it now:

Strength: Health, damage with most melee weapons, block chance.
The tank-y weapons fighter stat. The biggest strength bonuses are found on plate armor which is mainly acquired through combat. You'll need a lot of ore, which is most often found in cave areas dense with enemies. You have to sit there and wail on the node with a pickaxe to get the ore, so unlike foraging you can't just run through and collect stuff: you'll want to clear the mobs first.

Agility: Speed, damage with bows and daggers, dodge chance.
This is sort of your rogue/ranger stat. Leather armor gives high bonuses to agility, and the ingredients to craft it come from hunting/foraging. Since you'll need a lot of pelts, you have to gather the favorite foods of various animals to feed them and spawn more. To make this distinct from the combat-focused strength build, I'm imagining that many animals flee quickly from you instead of fighting, so speed + range make you a more efficient hunter/forager, but more of a glass cannon in combat.

Intelligence: Energy, damage with magic, resist all.
This is the caster stat. Bonus intelligence comes from silk armor which can be acquired through farming/trading. Anyone can use magic, but it will drain your energy quickly. As a result, the pure caster playstyle needs to eat special meals that restore energy and provide survival buffs. This should cater more to the harvest moon fan.


All of the stats should be useful regardless of how you want to play.

In addition to the three pure armor types discussed here, I also designed some hybrid armor types which you can see in the previous section's GIFs. These armor types are bone (str + int), chain (agi + str), and cloth (int + agi). As you've already guessed, the materials/ingredients for these armors require a mixture of two activity types, and provide smaller bonuses to each stat. They're also the most likely to be cut Sad

I will try to make the intelligence/magic playstyle a bit easier for the less combat-focused folks (range + aoe, resistant to elemental damage so you can stand in the fire). Meanwhile, the agility nature survival build would be more appropriate for "core" players who like to be precise glass cannons. Strength builds should fall somewhere in between.

Each of these playstyles ultimately makes you more effective in combat, so combat is still the core activity (audience sighs). Despite that, I'm still very committed to having these additional activities that improve your character's viability beyond just killing monsters for loot/xp (though there's plenty of that if you want it, I know I do).

One final word on stats! I'm also planning a few types of items that provide damage which is not affected by a stat. These are mechanical devices like exploding potions, traps, and flintlock guns. These items provide high damage that falls off as your stats improve. My goal with these items is to make something appealing for the early game, speedrunners, or strength builds that need some kind of range damage.


4. Dodge roll
Alright well after that treatise about stats, there isn't much to say here other than I'm trying to put a dodge roll in the game and it's hard to animate!


Here's me trying to sketch out some key frames and wow the human body is fucked up.


Putting it all together. I did this animation on Train Jam and I've already tweaked it twice since this GIF


4. Upgradable cabin
This is an ongoing feature, but one of the remaining few steps to close some major loops in the game. I've done quite a bit of concept for what all the upgrades will be and how they might affect gameplay, but I'm not ready to share the details just yet. Suffice to say, the primary function of upgrading the cabin is to unlock new crafting stations and more storage. Here's a lil' sneak peak, though I've only just started working on the art.


Here's a sketch of the main cabin (though there are a few other upgradable buildings planned ^^)



Some WIP of what the final art might look like, which is the result of my 4 hour plane ride home from GDC (I'm slow AF).
« Last Edit: March 25, 2019, 12:25:38 PM by Luno » Logged

MegaTiny
Level 1
*


Wew lad


View Profile
« Reply #168 on: April 13, 2019, 12:12:26 PM »

Just posting to follow. What an awesome devlog, thanks for taking the time to write it! Game is looking  fab too.
Logged

Pages: 1 ... 7 8 [9]
Print
Jump to:  

Theme orange-lt created by panic