Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Guiding Spirit - paleolithic god game

A topic by DarkoJelica created Jan 06, 2020 Views: 783 Replies: 2
Viewing posts 1 to 3
(1 edit) (+1)

Hi y'all! I've been solo developing Guiding Spirit since March 2019. Most of this time was spent setting up the infrastructure, as I'm building the game from scratch using SDL2 with C++. In late November I've finally gotten through most of the boring technical stuff and started working on actual game features, so I think it's time to start sharing my progress and hopefully drum up some interest from potential players. The game is still far from completion, as I'm only at milestone 10 out of planned 23 (subject to change), but I am planning to start closed testing at milestone 12 to get some player feedback on what's fun and what's not so I can make this game the best it can be. I'm projecting this testing to start in February this year, and completion of the game is guesstimated to be in late 2020 or early 2021. The final game will be a commercial product (price TBA).

What is Guiding Spirit?

Guiding Spirit is a top-down 2D singleplayer god game. The player is cast in the role of the supernatural guardian of a small tribe of paleolithic hunter-gatherers. The tribe has to obtain food, water, shelter and tools to survive in the game's harsh world. The game has an animistic theme, which means that all these resources are associated with various spirits which protect them. For example, there might be a spirit of a lake, or a spirit of a herd of antelopes. These spirits don't appreciate the tribe exploiting their resources, and will retaliate with diseases, animal attacks and inclement weather. The player's job is to keep the tribe safe from these spirits, which can be done by moving the tribe before the local spirits get too angry, appeasing the hostile spirits with sacrifices or manifesting an avatar of the tribe's spirit and engaging hostile spirits in magical combat. The last method allows the player to break the nature spirits for a while, which will not only keep them from attacking the tribe but will also unlock new spells for player to use and new technologies that can be granted to the tribe via visions. The downside is that without their guardian spirit the resources will dry up, so the tribe will have to move to a new location where they'll be accosted by new local spirits.

Since the player will be busy dealing with the spirits, the tribe itself is autonomous for the most part. Instead of giving direct orders to the people, the player will mostly just be giving them buffs via spells and unlocking crafting recipes by sending visions to individuals. The exception will be direct control over migration of the tribe on the overworld map and sending visions instructing the tribe to perform various rituals which can buff the tribe spirit, appease or debuff nature spirits, or alter the flow of the magical currents which dictate the power of both tribe and nature spirits' spells.

The game has two modes: local area and overworld. Local area is played in real time, and most of the game is spent in this mode. The tribe collects resources and crafts in this mode. Overworld is a quasi-realtime mode, much like Mount & Blade's overworld map where time only advances when you move. In this mode the tribe uses the resources gathered in local mode, and must switch to local mode when they run out of food or water. The game starts in a relatively hospitable area of the overworld, but as the tribe unlocks new technologies that let them survive in harsher environments the player must take them to more dangerous parts of the world to unlock higher tier technologies by defeating more powerful spirits. The victory condition of the game is unlocking neolithic (ie farming), which means the tribe can finally settle down in one place. The loss condition, of course, is extinction of the tribe.

Main menu:


Early camp:



Design Goals

- Deep mechanics: I've always been a fan of games with lots of depth, such as Dwarf Fortress. Relationships between your minions and the world around them allows interesting scenarios to arise and increases the immersion. To this end I've based the game around status effects which can interact with eachother and characters' stats, for example a tribesperson can get a broken bone from fighting a hyena, which limits their mobility and makes it necessary for other people to take care of them. A low empathy person might get a morale debuff from having to take care of an incapacitated tribemate, decreasing the mana they generate for you to use for casting spells.

- Replay value: Single player games are great because they let you play in a non-optimal way (ie roleplay). On the flipside, they can't generate novel scenarios from interaction with other players, so they can get stale quicker. To alleviate this problem, I intend to add plenty of content that's unlocked non-linearly. That is, there'll be an element of RNG in determining which spells and technologies you get when defeating a spirit, and the order in which you get to different spirits will depend on the procedurally generated world you're playing in. Additionally, there'll be multiple tribe spirits to choose from, each focusing on different types of magic.

- Mod support: Procedural generation can only take you so far, and ultimately the best way to extend replayability is modding. This is why I've avoided hardcoding everything I could, and placed as much as I could in external files. Graphics are stored in simple PNG files. Creatures, spirits, resources, spells, magic currents and even UI are all defined in plaintext XML files. Currently the XMLs are edited by hand, but I intend to implement tools for editing them so even players that aren't tech savvy can create mods.


Latest Developments

The last milestone was implementation of the local spirits. They spawn a focus object around which they spawn resources, and they gain anger when humans harvest these resources. When sufficiently angry an avatar is manifested which walks around and inflicts disease debuffs on humans.

Ancient stump, focus of a Wood Spirit:


Wood Spirit avatar:


I also had to do some UI work to make it obvious to player what's going on when the avatar is manifested, so I added indicators for spells being cast, and status effect indicators for showing current status of a creature (which status effects are shown is definable in XML).

Wood Spirit avatar casting fever on a pregnant woman:


And while I was working on UI, I also implemented auto-generated tooltips for clarifying what status effects and spells do.

Spell tooltip:


Status effect tooltip:


And since I was working on spells for the avatar to use, I also implemented magic currents. Specific currents can be edited in XML files, and for now I settled on having six different currents: Sun Magic, Moon Magic, Fertility Magic, Death Magic, Blood Magic and Soul Magic. The currents' baseline power can wax and wane on a time cycle, for example Sun Magic is weakest at the winter solstice and strongest at the summer solstice, and Moon Magic waxes and wanes on a 28 day cycle. The baseline power can be adjusted by bonus power, which is a result of in game events. For example Blood Magic increases in power when wounds are inflicted in combat and Fertility Magic increase in power when new resources are spawned or new creatures are born. The power of magic currents ranges from 0% to 100%, and it acts as a multiplier to power of spells that use that type of magic. For example the Watchful Gaze spell in the spell tooltip screenshot will create a Watchful Gaze object (removes fog of war in an area) with ~75% Revealed status, which means the created object will expire sooner than if the spell was cast at 100% power. In addition to magic currents, caster stats can also influence power of spells.

Indicators showing current power of magic currents:



Anyway, that's all for now, I'll keep you updated as I implement more features and content. Please don't hesitate to ask questions or give any sort of feedback. It's been a challenge working in isolation for the past nine months, so any interest would be a welcome motivation boost ;)

(+1)

Hi again! I've been busy working on GuidingSpirit, and I've reached the next milestone.

What's new?

The focus of the latest milestone was implementing combat between the player and the hostile spirits. There's been a fair deal of boring technical background stuff, but there's also been some visible changes to the game.

To start with, I've made it possible for the player to manifest and control the tribe spirit's avatar:


Spell selection toggles between global spells and avatar spells, depending on whether the avatar is currently manifested.

When the tribe avatar is manifested, the player can order it to cast spells on hostile spirit's avatar so it can be temporarily vanquished and the tribe's people can be kept safe from it's wrath. I've expanded the calculation of power of spells to use stats of caster and spell target. With this I've harnessed the magic system to create a strategic combat system. The obvious goal is to banish the hostile spirit using the Banishment spell, but the power of this spell is reduced by the Soul Magic stat of the target, so it's advisable to first cast Soul Curse to reduce the target's resistance. However, while the avatar is manifested the player is constantly losing mana, and mana can only be accumulated to a maximum determined by the size of the player's tribe, so outright banishing the enemy avatar might be impossible if the state of magic currents isn't favorable. In this case you might want to just debuff the hostile spirit's Blood Magic and Sun Magic, to limit the effectiveness of any Fever spells it might cast on your people. To present all this new info to the player, I've expanded spell tooltips quite a bit.


Of course, while you're fighting the hostile spirit, it's fighting back and trying to banish you. Banishment makes it impossible to manifest your avatar for a while, so sometimes it's smart to just diminish power of the hostile spirit's avatar a bit and demanifest so you can be ready to manifest the next time it attacks your people. However, you shouldn't just manifest willy-nilly, because each time you do you incur a base banishment period, so you have to make each of your manifestations count.


To better keep track of what the hostile spirits are doing, I've added an overview bar showing their current status.


But you are not alone in this fight! I've implemented rituals through which your people can influence the flow of magic currents, and even buff or debuff spirits. The rituals require sacrifice of items and take a while to get done, so you need to plan accordingly to have the magic currents in your favor when it's time to fight.


With so much stuff influencing the magic currents, I've decided to expand their tooltips so player can see what's determining their current power.


All in all, I think the game is well on it's way to having an interesting combat system that requires the players to think on their feet, while still presenting things in a fairly transparent manner so the learning curve doesn't hit too hard. Of course the actual combat content will still need quite a bit of development and balancing, but I feel the underlying mechanics are fairly solid.

Besides the main combat development there's been bits and pieces of unrelated content, mostly little stuff like adding minimap icons to objects that were missing them and adding tooltips to miscellaneous UI elements. To finish this development update I leave you with a new screenshot of the whole game window.



What's next?

The focus of the next update is on implementing unlocking of stuff as you play. This will include new spells and rituals, as well as various crafting recipes for the player's tribe to use.

I intend to start closed testing of the game when this next milestone is done, so I'll try to get a bit more content done while I'm working on this. I also need to do a little bit of optimization to prepare for this, because the game runs rather poorly right now. The main purpose of the testing will be to determine what's fun and what's not, to trim stuff that's too convoluted and expand stuff that's too basic before I release the game to the general public. If you are interested in testing please drop a mail to guidingspiritgame(at)gmail.com and I'll send you a link to the download when it's ready (ETA late February). Be warned that the test version will still be fairly bare-bones, missing major features like saving and loading games, and it will still be fairly unoptimized so you'll need a fairly beefy CPU to run it. And of course, testers will be required to answer a short questionnaire so I can get a gauge on how players feel about the game.


See you at the next milestone <3

(+1)

Hi again! Another month, another milestone. Development is progressing at a steady pace, and the game finally has the basic gameplay loop in place: pick campsite, fight hostile spirits, unlock new abilities by defeating them, move onto the next level with harder opponents.

What's new?

I started off with some optimizations, because the game was running at ~17FPS in debug mode. I streamlined game logic to the point where I got this framerate up to 30, and then I promptly splurged on putting more objects in a level to the point where the FPS dropped back to ~20. Profiling shows me that 60% of CPU usage is due to rendering, so further optimizations will require implementing batch rendering (probably will need to start using OpenGL instead of just pure SDL). However, in release build the game runs at 60FPS on my system (Ryzen 7 2700X), so this optimization will be left for later and for now focus will be on expanding and improving gameplay.

Next up I implemented unlocking of new abilities. Fighting a hostile spirit lets you lower it's presence  stat, and when it drops below a threshold you can break it and gain one new ability from the list of secrets that the defeated spirit holds. You get a choice between global spell, avatar spell, ritual or crafting recipe; one random option is available for each category. The downside to breaking a spirit is that the resources it spawns dry up, so you have to stay on the move to keep your tribe from starving.


I've then added some more content so there's things to actually test ability unlocking, including a whole new water spirit as an easier opponent compared to the wood spirit I already had. To keep track of what spirits are present I added spirit overview bar that lets you see at a glance state of all the spirits and select their focus object.


As you can see, I've also added personal names so you can tell apart different spirits of the same type, and since I was doing names I decided to give personal names to the tribe's humans as the first step in making them individuals. The names are currently drawn from a names file, but I'm considering implementing a random name generator.

Crafting recipes are currently tracked per human, and unlocking a new recipe doesn't give it to any individual, instead it just lets you teach it to your people at a cost of mana. The good news is that humans can also teach each other, when a human crafts something all other humans nearby will learn the recipe as long as they meet stat and skill requirements.


I've also kept working on misc UI improvements, such as adding toggles for icons on the minimap.


With combat and ability unlocks in place, the only missing piece of the core gameplay loop was tribe migration.  The overworld map is however scheduled for next milestone, so for now I just implemented switching to a new randomly generated level where you can pick your tribe's camp site. I also implemented difficulty scaling which means the hostile spirits' stats increase each time you change level, and you get less antelopes and more hyenas on the map. When switching the map you can bring along some of the items your tribe collected, limited by size of the tribe members' inventories and your mana. This is all very temporary, just to get the ball rolling with testing the gameplay loop, and will be replaced with an overworld travel mode where you can choose your next camp location in a persistent randomly generated world, and the migration range will be limited by how much food you're carrying and how fast your tribe is moving (hauling lots of stuff or having injured people will slow you down).


I've spent the last few days fixing minor bugs and tweaking the content, and I got the game into a playable state, though it is still very unpolished. I've done some basic balancing so it's fairly challenging, though I must admit that a big part of what makes it hard is the fact that your tribe are a bunch of idiots. Still, I think the actual spirit combat challenge is more down to interesting mechanics rather than unwieldiness, so I reckon I'm on the right track. So here's a fresh full screenshot to finish off this update:


What's next?

As I've mentioned, the next milestone on my development schedule is the overworld. I intend to have a large persistent world that's generated when you start a new game, and you can migrate between different local areas in this world. You start off in easy areas, and as you unlock new abilities you can migrate to harder areas where more difficult hostile spirits will get you access to higher tier unlocks. In the finished game this will be different types of spirits, but for now I'll just scale up difficulty of existing spirits to avoid getting bogged down with content creation and not getting any features done. Especially since I've yet to implement content editors for easier addition of content and modding. I'd like to also do some work on my map generator so I can have geographic features like mountains and rivers stretching over multiple local areas, but we'll see how that shakes out.

But first I'll need to do some work on AI and tribe management, because as I've mentioned right now they're a bunch of idiots, and as I've tested the game I felt there's a serious lack of control over the tribe. I don't plan to get into too much micromanagement, but it'd be nice to be able to prioritize tasks and restrict specific jobs to specific humans. I'll decide where to draw the line between manual control and automation based on playtester feedback.


Playtesting

Since I got the game to a basic playable state, it's time to start with some testing. The goal right now isn't so much to find bugs and polish content, as it is to adjust the game mechanics so the game is actually fun to play. Since this isn't the case yet I'm not really comfortable with releasing a public test version but would rather stick with a limited set of testers that won't be turned off by big changes in game mechanics. Once I've reached a semi-stable set of game mechanics I'll release a public test version and use feedback from that to polish the game into a release ready state.

If you'd like to help with playtesting, please mail guidingspiritgame(at)gmail.com or join the Discord channel


That's all for now, and I'll be back with another update when the next milestone is done (which may take a bit longer this time). See you then <3