I've finally found time to nail down the things I wanted to achieve before rolling out the next Hidden Star build! You can find the new builds over on itch. Included are changes from May 2016 to now, which aren't enough to call the game done, but do bring it closer to something that's fun and interesting to play.
Notable changes include:
- Added event scheduling system
- Added audio handler
- Added music handler
- Added placeholder UI sounds
- Added placeholder music tracks
- Added trade submenu to comms screen
- Added buy trade screen
- Added sell trade screen
- Added salvage screen
- Fixed bug with polar cap 0 not being used
The biggest and most immediately obvious change is the addition of audio. As part of Hacktoberfest last year, apo worked on an event system and an audio system that could queue up music/sounds and play a random selection from a pre-defined set.
Refund (who is also creating music for Hidden Star - more on that in a bit) put together a set of about 250 generated sounds that explored possible avenues we might want to go down with the game's sound design. A lot of it is stuff that isn't applicable in the current build (like weapon-shield impact effects), but we found a good bunch to slot in as placeholder effects that we'll use to narrow down the generation parameters for the next round of sounds. Exciting!
To make adding in audio effects and music a bit easier, I added a config system that loads role/asset mappings from a TSV file, meaning that when Refund (or anybody else) wants to try a new piece of music or a new sound, they can drop it into the relevant path in the audio/ folder, update the TSV and the game will pick it up without being recompiled. Huzzah for fast turnarounds!
In the current build, there are sounds for:
- Starmap hover
- Starmap select
- GUI button hover
- GUI button select
- Combat shoot
- Combat hit
As mentioned earlier, Refund has come onboard to help with music. I have few words to express how blown away I am by the work he's been doing. There are a lot of dissonant and unexpected elements at work that still manage to feel like they fit together in an alien way. We've been talking about this idea that combat music should feel more dissonant and potentially less coherent, bringing a sense that when you're having peaceful interaction with an alien race, that they're putting effort into being relatable, which is a lovely notion.
Refund's approach to working is to put together a bunch of 1 - 2 minute "sketch" pieces for each race that quickly explore several tonal states, with the intention of using them to rapidly map out possibility space. The current plan is to do about 15 of these per race, then pick the bits out of that that feel like the right direction to pursue for the game and expand those out into individual tracks.
At this point, there's no percussion, will get added in as those initial tracks are expanded. From there, the tracks will be refined and tweaked to add interesting melodic variances and volume shifts before going through several final processing/rendering steps.
The current build includes 16 "sketch" tracks, which are spread across the starmap, comms, trade, and combat screens. These are placeholder tracks and aren't really going to reflect the kind of presence that music will have when we have final implementations, but I think it adds something valuable to the game as it stands at the moment, and it's a good opportunity for us to get a feel for how the music comes across when sitting against the game's visuals.
Nemoder and I have a big vision for how economy will work in Hidden Star. We're hoping implement a universe-wide supply/demand/production modeling system that also feeds into planetary growth. If a planet gets critical mass of certain materials and a steady enough supply of others, then it'll be able to grow, increasing the rate at which it demands and produces goods. We're a long, long, long, long way from even having an initial design for that, but it will need to sit on top of some other more simple systems, and I'm very happy to now have an initial implementation of one of those in place.
The new trade system allows players to accumulate and sell goods for profit (or loss!). Arbitrage is achieved by keeping track of local price variances and making use of faction disposition - a faction who likes the player will offer better prices when selling goods and cheaper prices when buying (a faction who really hates the player will refuse to trade at all - longer term, this is the state that players will encounter most often in the early game).
In addition to trades, selecting the "Scavenge Wreck" option after destroying an enemy ship will yield a small number of goods that can be collected via the trade interface (you're effectively trading for free). Combat impacts on faction disposition and so may not be the a favourable way to acquire cargo - something which will play a bigger role later on in development when we add in mid-transit encounters, bounty hunters, pirates and other forces that can pose a danger to players. When we add quest, repair and fuel systems in, losing access to a faction's facilities is likely to have greater significance too. For now though, missing out on the option to buy or sell cargo is the only thing at stake.
Initially I'd planned to implement a unified trading screen that could handle buying and selling via one UI. Cramming a minimum of information about buy prices, sell prices, player goods quantities, NPC goods quantities, available credits, available cargo storage space, and so on proved to be just a bit too much of a challenge for me, and I opted to separate them into separate modes that utilise the same general UI.
At the time the starmap is generated, each node is given a Trade_Entity, which consists of a set of limits for each cargo type and a set of inventory items for each cargo type. At the moment, this stuff is assigned randomly, but eventually, we'll be able to shape this depending on planetary factors that represent and influence resource availability.
The cargo types we've got in the game at the moment are solids, liquids, gasses, lifeforms, technologies, and "strange". The notion is that each of these have different storage requirements (eg: electromagnetic shielding for tech components, or themal regulation for lifeforms), and by customising their ship (when we add that feature), a player can choose to prioritise particular types in response to supply, demand and quest related incentives. The "strange" cargo type is for mysterious unknown artifacts/technologies that we're planning to make use of within the story, but which also can fetch a high price at places where they can be sold (which, right now is anywhere).
I didn't write any of the trade item names or descriptions with the intention of them being anything more than temp content while I worked on the trade system, but there's a bit of fun silliness about them that I think we'll try to keep.
Last year, I also put a little effort into a proof-of-concept generator aimed at creating voice scripts for the game's alien languages. The generator maps alien letters into non-human sounding phonemes, which are then combined and munged a bit.
We've done some recording tests with Linuxzen, who has laid down some temp Krull and Sneeb dialogue that sounds pretty promising. I'll be using feedback from him to tune the generator to create scripts that more closely match the work he's doing.
We're still undecided on how we're going to implement this stuff in the game, and right now, none of it is present, but I'm hoping to at least share some of our experiments soon! I think for any final implementation, we'd probably downsample and add in a little static to help it match Hidden Star's low-fi aesthetic.
Last, but not least, I've also added in two new planet stacks: an ice planet and a desert planet. As with the four other planets in the game, these break down into four horizontally tiling layers that can be mixed and matched with layers from other planet stacks to create a greater diversity of possible planets.
Nemoder also put together a HTML version of the planet renderer so that you can watch Hidden Star planets spin in your browser all day long. It's in the GitHub repo, but for convenience, I've also hosted it over here.
Where To From Here?
Hidden Star isn't my top priority right now, and Nemoder doesn't have a lot of availability either. I feel like I'd like to aim to do small updates every month or two that add in a little feature here or there while still making progress towards larger systems - one of the reasons that the initial trade implementation is in this update is because it gives us the base upon which to build an economy system, a ship upgrade system, a weapon upgrade system, and so on. It also means that as we pull these different factors into play, we'll have something in place that we can start to balance and tune.
Nemoder and I have also recently been talking about how to expose and encourage exploration. We've thrown around ideas including only showing known and adjacent nodes on the starmap, having unmapped routes accessible via whatever travel system we implement in the future, having purchaseable star maps, unlocking travel routes through quests, and having planetary resources to discover. At the moment, I'm not sure what kind of direction we'll go in here, but a mix of all of these sounds viable.
I'm super happy to get this build out. We've still got a long way left to go, but it feels good to be making progress :)