Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411482 Posts in 69370 Topics- by 58426 Members - Latest Member: shelton786

April 23, 2024, 11:53:35 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsMarrowroot [Dark Undead Opossum Zelda] | Don't Make Mistakes
Pages: [1]
Print
Author Topic: Marrowroot [Dark Undead Opossum Zelda] | Don't Make Mistakes  (Read 2223 times)
Hermit Gamesmiths
Level 0
**



View Profile WWW
« on: April 25, 2022, 08:37:58 AM »



Gentleman Hello there!
We're a couple of devs in the middle of nowhere, working on Marrowroot, a fantasy story set in the world of Thistledown.
We've been working on this game since 2021 in the evenings and spare time - but we've been developing the world of Thistledown since 2018 or so.
We want to make several games set in this world.

The story

In a world riddled with dangerous magic, a half-dead opossum has to find the source of a toxic fungus that is threatening his family.
Digging into dark, forbidden houses and dodging a murderous fairy named Barker, he discovers the problem is deeper than he ever would have dreamed.


Mechanically

The loop is basically explore/fight/solve puzzles, find a new item that re-contextualizes the world, repeat.
Like 2D Zeldas, but I want to lean into deep items with a lot of interactions.


Some goals hopes

ZEL Link Day/Night cycle
The world changes significantly depending on the time of day.
Solve puzzles, exploit plant growth behavior, and learn how different enemies respond to moonlight.
ZEL Link Portable Garden
You can grow mushrooms on your back, and use them for stuff.
Avoid (or embrace) weeds, grow consumables, or cope with the negative ongoing effects of the most powerful plants.
ZEL Link Deep, interesting items
Solve puzzles and reshape the world using the items that you find.
Continually expand your toolset and find new ways to explore the world.
ZEL Link Dark fantasy, but not dull fantasy
Fantasy that is anchored in reality. Dark, but not a grey, dreary dark fantasy where everyone's been beaten up and their dog has died.
Mixture of darkness and light, joy and pain, ice cream and broken glass espresso.


Screenshots




Table of contents (I'll put links to dev posts here, for easy navigation.)

Date
Subject
Link
June 17, 2022   Don't Make Mistakes    https://forums.tigsource.com/index.php?topic=73293.msg1450878#msg1450878
May 31, 2022   Design lesson: Add a well-lit, clear path.    https://forums.tigsource.com/index.php?topic=73293.msg1450531#msg1450531
May 24, 2022   Lighting and polishments    https://forums.tigsource.com/index.php?topic=73293.msg1450420#msg1450420
May 17, 2022   Deathly Magic Spear   https://forums.tigsource.com/index.php?topic=73293.msg1450254#msg1450254
May 9, 2022   Layering tiles: transparency and splattertiles   https://forums.tigsource.com/index.php?topic=73293.msg1450118#msg1450118
May 2, 2022   Creating the art for a new unit   https://forums.tigsource.com/index.php?topic=73293.msg1449963#msg1449963
April 25, 2022   Introduction   You're reading it right now!

Links

What
Who it's for
Link
Discord   The Discordant   https://discord.gg/vmyHEmdF
Twitter   The Tweeps   https://twitter.com/HermitGamesmith
Website   The Old-School   https://www.hermitgamesmiths.com/
Launch Emails     They who just want to know when it launches https://www.hermitgamesmiths.com/stay-in-the-loop/
Steam Page   Hand Thumbs Up Right Wonderful people who wishlist things   https://store.steampowered.com/app/1570800/Thistledown_Marrowroot/


 Hand Shake LeftZEL LinkHand Shake Right Ask questions! I'll answer 'em!
« Last Edit: June 17, 2022, 05:45:07 PM by Hermit Gamesmiths » Logged
Alain
Level 10
*****



View Profile WWW
« Reply #1 on: April 26, 2022, 04:02:04 AM »

Welcome to the forum! "Dark Undead Opossum Zelda" sounds awesome and I like the visual style so far. Looking forward to read more!
Logged

Hermit Gamesmiths
Level 0
**



View Profile WWW
« Reply #2 on: April 26, 2022, 05:36:21 AM »

Welcome to the forum! "Dark Undead Opossum Zelda" sounds awesome and I like the visual style so far. Looking forward to read more!

Thank you, glad to be here!

By the way, Battlejuice Alchemist looks really sweet, I'm going to try and join your early access.
Logged
Alain
Level 10
*****



View Profile WWW
« Reply #3 on: April 26, 2022, 10:56:44 PM »

Welcome to the forum! "Dark Undead Opossum Zelda" sounds awesome and I like the visual style so far. Looking forward to read more!

Thank you, glad to be here!

By the way, Battlejuice Alchemist looks really sweet, I'm going to try and join your early access.

That's awesome, thank you. I'm looking forward to return the favor once you have a version of Marrowroot for the public. Can't wait to play!
Logged

Hermit Gamesmiths
Level 0
**



View Profile WWW
« Reply #4 on: May 02, 2022, 07:22:29 AM »

Creating the art for a new unit
I wanted to share my process for creating a new enemy, I've figured out a few tricks for making the hand-animating process faster and more consistent.

Sculpt a maquette in Nomad Sculpt
I borrowed the concept of a maquette from the art world, where a artist might make a small sculpture of a subject to aid them in perspective, realistic lighting of a subject, or to maintain consistency over many drawings of the same subject (in a long-running series, for example).


When I'm drawing an enemy from three different angles in a top-down game, it turns out to be much faster and more consistent to sculpt them first, take some screen shots at the proper angle, and then trace the screenshots.

I'm also not a pro sculptor, but you can pick up the basics of Nomad Sculpt in a couple of days, easy.


Animate in Procreate

I'll hand-animate animate the character in Procreate, tracing over the maquette screenshots.



I keep it pretty simple and low-framerate, focusing on key poses and using smear frames as much as I can, because I'm a lazy animator.


Export the frames in Photoshop

I'll take the exported document from Procreate, and chop it up into frames that are the same size using Photoshop. The important thing here is to keep the frame size consistent, so when I drop them into Spine the frames don't move around. I do this by cropping the document around the pose I want, and exporting the layers as separate files, not allowing Photoshop to trim transparency.

Put together animations in Spine

Sequencing of the frames into animations, in spine. If I've structured the export properly, this is quick and easy.


 
I'll also add small effects (the tongue stretching, for instance) using the animation tools in Spine.


Put the enemy into the game!
Wizard Magic happens to the Spine export (I'm just the artist, so it's indistinguishable from magic), and we have an enemy in-game!


It's a process with a few moving parts, but it's relatively fast and painless. With the maquette I spend much less time struggling with perspective and lighting, and everything exports into a couple tidy files at the end instead of dozens of images, spritesheets, etc.

There we go! I'll go into more detail about the animation process in the future, and if there's anything that I need to elaborate on, let me know.  Gentleman


Logged
Alain
Level 10
*****



View Profile WWW
« Reply #5 on: May 03, 2022, 12:39:03 AM »

Nice, it was fun to read about your art creation process. I would not have guessed it involved work in 3D!
Logged

Hermit Gamesmiths
Level 0
**



View Profile WWW
« Reply #6 on: May 03, 2022, 05:21:40 AM »

Nice, it was fun to read about your art creation process. I would not have guessed it involved work in 3D!

Yeah! Turns out it saves a lot of time when drawing things from multiple angles. Before I started creating 3D models, I'd have to re-draw a lot more.
Logged
Hermit Gamesmiths
Level 0
**



View Profile WWW
« Reply #7 on: May 09, 2022, 06:25:26 AM »

Layering tiles: transparency and splattertiles.

Today I thought I'd show you the layers of art I use to build up the rooms in Marrowroot.

Ruined Entryway:





Grand Foyer:





SPLATTERTILES

I use tiles with transparency to squeeze as much variation as possible out of the tilesheets that I have. I also use a lot of what Samuel Coster called SPLATTERTILES (https://www.gamedeveloper.com/art/splattertiles-how-to-tile-your-game-without-all-that-fuss-): special tiles that are bigger than the grid.

This way I don't have to create such exacting, complex tilesets: I can just make a few tiles that are bigger than the grid, with nice, loose, organic edges (the background should be transparent, of course):


...and then start placing them:



Takes some experimentation to get right, but looks good and saves a bunch of time!

Logged
Hermit Gamesmiths
Level 0
**



View Profile WWW
« Reply #8 on: May 17, 2022, 06:37:20 AM »


Dead mansion
Still working away on the mansion interior. It's a strange combination of lived-in and horribly decrepit: We've got mold and boiling kettles, eternally burning fireplaces and hanging vines. Why? Highlight if you want a spoiler: The dark mansions are made out of hill "fovos" (fairy) corpses, and the "lived-in" details are continually - if imperfectly - recreated in their dead minds.
We've been working on this world for years, if you have any questions about he world we're building, I've got tons of lore stuffed in my brain that I'd be glad to share.


Magic bone spear
Our opossum has a spear, fashioned from the bones of his father and grandfather. It's imbued with the death magic which causes the pura-pura (opossum tribe) to grow bone spur weapons and armor. It's constantly in flux, growing wicked barbs and exploding into a deadly forest of splintered bones. I've been animating it, and it's been really fun:

Value
I've also been tweaking almost every asset in he game to make sure that the value is consistent - it's a big improvement, and I'll be able to show it off soon.
Logged
Alain
Level 10
*****



View Profile WWW
« Reply #9 on: May 18, 2022, 12:04:45 AM »

That's quite an epic spear for a small opossum. I'm looking forward to see how you are polishing your visual assets!
Logged

Schrompf
Level 9
****

C++ professional, game dev sparetime


View Profile WWW
« Reply #10 on: May 20, 2022, 11:44:04 AM »

The visual style is great! And it's nice to see a Not-Procedural-Generated game for once. I really miss human-designed levels in most games.
Logged

Snake World, multiplayer worm eats stuff and grows DevLog
Hermit Gamesmiths
Level 0
**



View Profile WWW
« Reply #11 on: May 23, 2022, 05:11:54 AM »

I really miss human-designed levels in most games.

Me too! As much as there are a lot of really great procedurally generated games, there's something special about a world meticulously crafted by hand.
Logged
Hermit Gamesmiths
Level 0
**



View Profile WWW
« Reply #12 on: May 24, 2022, 08:05:53 AM »

Working on polishing the art style and the lighting.
There's some work on the art to go before I would really consider it final quality, but it's come a long way!
Here's some current screenshots of what I've been working on:




« Last Edit: May 24, 2022, 08:22:02 AM by Hermit Gamesmiths » Logged
Alain
Level 10
*****



View Profile WWW
« Reply #13 on: May 24, 2022, 10:08:22 PM »

Those screenshots look great, especially the last two. I also like the UI elements btw.
Logged

Hermit Gamesmiths
Level 0
**



View Profile WWW
« Reply #14 on: May 31, 2022, 07:13:08 PM »

Ok, as I construct the art for Marrowroot, I want to extract out lessons for future me, and for anyone making game art. The first lesson is Add a well-lit, clear path.

I learned this lesson by accident - I put together this room:



...and it looked way better than the other rooms that I had constructed, so I had to stop and figure out why.

Point 1: Highlight the purpose of the room.
This room's a puzzle room, I've placed the brightest light directly over the puzzle. This way it's clear what the player should be looking at, it's like a big target. If I shifted the light over somewhere else, like this:



Alluvva sudden we have a weird emphasis on the bed, like something's going to pop out of the covers. Fine if that's what we're doing, but not appropriate for a puzzle room.

Point 2: Have concentric areas of increasing darkness and complexity to help highlight the simple, clear path.
Here's a rough version of how the room's constructed:



each level of darkness indicates a (generally) darker value and more complex textures. (we're ignoring the puzzle in this example, because it's not part of the environment). This creates a clear, unobstructed path with clearly complex and impassible edges. This makes navigation of the environment cognitively cheap (instead of slightly stressful and confusing) and makes for a clear, appealing environment.
If make the leaves more erratic and random it becomes harder to "read" the room instantly, and it's less appealing:



If we remove them entirely, it's not immediately clear where we're supposed to walk, there's no friendly guiding hand through the room (except, maybe, the Unity movement handles):




Having a clear, bright path and complex, dark "non-path" areas is good design because it mimics the way that we find our way in unknown territory: we look for clear, unobstructed, well-lit paths. We see complexity, shadow, darkness, and we sense danger. If you want the player to be clear-headed and comfortable, this is how you do it. If you want the player to be tense and afraid, play with inverting this.
Logged
mobilelast
Level 2
**


View Profile WWW
« Reply #15 on: June 06, 2022, 11:12:35 PM »

I love the style. It’s like a darker version of “Don’t starve” or “We need to go deeper”. And it’s interesting to read the technical details behind the graphics.

I’m worried about the opossum, though. He seems seriously depressed.
Logged

Avaruustaistelupeli (ATP) - a space combat game
- Free download from itch.io or IndieDB
- Dev diary here
Hermit Gamesmiths
Level 0
**



View Profile WWW
« Reply #16 on: June 07, 2022, 11:19:54 AM »

I’m worried about the opossum, though. He seems seriously depressed.

You would be too if you were half-dead and mushrooms were growing on you. ): Poor Amos.
Logged
Hermit Gamesmiths
Level 0
**



View Profile WWW
« Reply #17 on: June 17, 2022, 05:41:48 PM »

Don't make mistakes

... Is a problem that we've run into quite a bit while using Unity.

Hi! I'm David, the programmer and co-creator of Marrowroot. I've been programming games and web-applications for a long time but I'm pretty new to Unity, and this is one of my first really big game projects. I'll be dropping into these devlogs from time to time with interesting tidbits about problems we've run into or bits of code I'm proud of.

"Don't make Mistakes™️" is how we've referred to various aspects of developing our game when we run into things that *look* right at first, but break later on. Things that are a little like traps: Using them intuitively causes problems and it’s not immediately clear when you do something wrong. Here are just a couple examples that we've run into:

  • Placing objects within the wrong room in Unity making it so when you move the room around things outside the room move with it.
  • Forgetting to change the room that doors connect to when moving rooms around.
  • Editing the wrong tilemap layer so that a hole looks like normal ground...

These are all problems where the immediate solution is just "don't make a mistake", "be careful", "don't forget to select the right thing, press this button, change this and whatever you do don't click *there*" Since we're such a small team, getting these things wrong can cost us precious time. We often run into bugs that could be avoided by making our tools smarter instead of relying on ourselves to get it right the first time.

To combat this, I'm trying to spend more time up front designing things to be a little bit smarter: either to configure themselves or to warn you when you set something incorrectly. Doors between rooms are a good example.

Warning: Code Ahead

Code:
    [ExecuteAlways]
    public class EditorRoomDetector : MonoBehaviour
    {
        public Room Room;
    
        static GUIStyle labelStyle = new();
    
        public void CheckRoom()
        {
            var targets = Physics2D.OverlapPointAll(transform.position);
            Room = targets.Select(t => t.GetComponent<Room>()).SkipWhile(t => t == null).FirstOrDefault();
        }
    
        public void Update()
        {
            if (transform.hasChanged)
            {
                CheckRoom();
            }
        }
    }
This is the EditorRoomDetector It's a simple example of writing code that runs within the Unity editor itself. Whenever an object with this script is moved in the editor, it scans for an overlapping Room. Then within the script for doors it checks that result and shows it in the Unity editor. The positions are kinda odd, but it lets you see what you're doing.

Code:
        protected void OnDrawGizmosSelected()
        {
            LabelStyle.fontSize = 20;
    
            RenderDoorLabel(LeftTopDoor.RoomDetector);
            RenderDoorLabel(RightBottomDoor.RoomDetector);
        }
    
        protected void RenderDoorLabel(EditorRoomDetector roomDetector)
        {
            LabelStyle.normal.textColor = roomDetector ? Color.white : Color.red;
            var text = roomDetector?.Room?.name ?? "No Room";
            var position = roomDetector.transform.position;
            LabelStyle.alignment = TextAnchor.UpperRight;
    #if UNITY_EDITOR
            Handles.Label(position, text, LabelStyle);
    #endif
        }






Another thing we did with doors is try to make the process of adding and tweaking them as smooth as possible. There are buttons in the editor that let you change the style of the door (using ScriptableObjects to define the different styles), flip it between being vertical or horizontal, or change the conditions to open each side of the door without having to drill down into different objects.





A lot of this can be accomplished perfectly well by writing custom editor scripts in Unity, and that's something I definitely want to get better at doing. But as a short cut, we're using "Odin Inspector", a paid extension for Unity that allows you to customize the editor within your scripts using simple(ish) annotations:

Code:
        [VerticalGroup("Door1", PaddingBottom = 20, PaddingTop = 20)]
        [BoxGroup("Door1/@OrientationNames()[0] + \" Door\"")]
        [InlineEditor(InlineEditorModes.GUIOnly, InlineEditorObjectFieldModes.Hidden)]
        public RoomDoor LeftTopDoor;
    
        [VerticalGroup("Door2", PaddingBottom = 20)]
        [BoxGroup("Door2/@OrientationNames()[1] + \" Door\"")]
        [InlineEditor(InlineEditorModes.GUIOnly, InlineEditorObjectFieldModes.Hidden)]
        public RoomDoor RightBottomDoor;
    
        protected string[] OrientationNames()
        {
            return IsVertical ? new string[] { "Top", "Bottom" } : new string[] { "Left", "Right" };
        }
    
        [Button("Flip")]
        public void SwitchOrientation()
        {
            OrientationNames();
            IsVertical = !IsVertical;
            if (IsVertical)
            {
                this.Container.localPosition = new Vector3(.5f, 0.5f, 0);
                this.transform.localRotation = Quaternion.identity;
            }
            else
            {
                this.Container.localPosition = new Vector3(.5f, 0, 0);
                this.transform.localRotation = Quaternion.Euler(0, 0, 90);
            }
        }

These annotations get pretty messy when you've got a lot of them, but Odin really does make it a lot easier to get started with customizing things in the editor. The big benefit is that making custom UI like this reduces the number of things you have to remember exactly how to do. By surfacing the changes you're most likely to make, you make building the game more intuitive and less likely that you'll make mistakes later on.

I've still got a lot to learn, and sometimes I err on the side of over-engineering things, but consistent effort in this area makes life much easier for future me (and Andrew).
Logged
Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic