Official development blog

Music for Cogmind?

For a while the whole music thing was something I was going to start dealing with in mid-2016, but last year Cogmind just kept increasing in scope as it felt like there was enough funding to justify adding more Fun Stuff while still on the route to finishing off the story. And my intent all along has been to wait until the main game is complete before tackling the issue of music, to be able to better gauge the full extent of what’s needed. With the upcoming Alpha 15 being story-complete, this can wait no longer!

Most roguelikes don’t even feature sound, much less music. Of course, “most roguelikes” are also non-commercial--nearly all the commercial roguelikes do have their own music. That said, these commercial roguelikes also have nowhere near the same soundscape that Cogmind already does, so there’s an argument to be made for not bothering with music in this situation…

I’m a huge fan of video game music, and have been since the 80′s. Yes, the 80′s, back when I’d record NES tracks on cassette tapes to play back later. VGM is almost all I listen to--every. single. day. :D To me music is a big part of the gaming experience as well, and I’ve always thought it accounts for much more of the experience than most people gave it credit for, though that public perception has certainly changed over the past 15 years. On both the development side and among players, nowadays game music is afforded a much greater importance than it once had, and is more widely appreciated. Yay!

So naturally I’d love to have music in Cogmind. That I’d one day be all grown up with my own game that could have its own professional OST? My 7-year-old mind would be blown :P. But in the end I’ll have to put aside my personal preferences and do whatever works best for Cogmind, for which there are a number of different options that don’t necessarily equate to a full-on “music music” OST.

Music vs. Sound Effects

Cogmind is rather unique in that it already includes a detailed soundscape providing lots of audio feedback for everything that’s going on, both interface-wise and surrounding actions. Different beeps and bloops for anything you do, material-based sounds for a variety of actions, unique sounds on talking to each major NPC, distance-based volume for explosive and other special machines, of course hundreds of weapon-related effects, and much more supported by an array of more sound samples than almost every indie game out there. If it happens, there’s a sound (or three :P) for it.

cogmind_sounds_data_170404

Zoomed out view of all Cogmind sound data to date, 821 of them (even more if including the additional samples layered in).

These sound effects do a pretty good job of creating the right atmosphere on their own, though there is still potential room for a separate continuous layer of music or ambient tracks to enhance that atmosphere and mesh it all together. The question is whether it’s necessary or desired, and what factors play into that decision.

Music is certainly tied closely with pacing, and in roguelikes pacing can vary greatly from player to player, or even from moment to moment in the same run. You might be making rapid decisions that could involve either combat or simply inventory management, or you could be in a pitched battle during which you suddenly choose to cautiously and intentionally make every little decision only after some thought. This makes dynamic music not quite as appropriate for turn-based games. Instead, sound effects work better as a way to match the player’s pacing (problems associated with animations and large battles aside, which I’ve tried to mostly head off with faster animations). In this way the sounds themselves are together a type of “dynamic music,” with the added benefit of each component offering its own feedback to the player.

While over the past couple years Cogmind has gotten along just fine like that, let’s examine some other possibilities.

Form

There are multiple potential approaches to music here, each with their own benefits and drawbacks.

Music Music

Music with strong melody (and a variety of instruments?) makes for good listening on its own, but would steal too much of the attention from the existing soundscape. This is also the kind that players (especially roguelike players) would tend to simply turn off anyway, and is the only category I believe should probably be out of the question for Cogmind.

Of course, like any of my claims in this post, an individual composer’s talent could very well prove me wrong under certain circumstances. Regardless of type, the best video game music eventually doesn’t even register while playing--despite being a part of the experience, as an integral part it is absorbed into the whole. Ideally players can focus on it and it sounds good, or not focus on it and it fades into the background. I’m guessing it’s harder to achieve this effect with less ambient forms of game music, so again it’s a question of skill.

Semi-ambient

One step away from music with a strong melody we have that which borders on ambient, but still uses a recognizable yet subtle melody. This more subdued type could be appropriate for Cogmind, having the advantage of using continuous music to “unify” everything in the existing soundscape without overtaking it, while also possessing its own identity.

Pure Ambient

For a while I’ve imagined that this will be Cogmind’s best option, though it’s also harder to find and judge who might be good at this, since it’s a very game-specific, atmosphere-specific approach. For someone to do this well, they would also ideally have personal experience with each respective area in Cogmind’s world, because a lot of that feeling comes from playing rather than from visuals (by contrast the latter would be the case in most other games). I guess I’d end up just trying to do my best via descriptions :P

Any music should definitely strongly reflect the area in which it’s heard, in line with Cogmind’s overarching design goal to maximize immersion, and pure ambient tracks would have the easiest time helping to achieve that goal.

As a test, for a while now Cogmind has already included two tracks that fall under this category, relatively monotonous looping drones used in

the cave areas

as well as Command.

Not the best examples, but they work okay. In all these months I haven’t received any feedback as to whether they actually add anything / enhance the experience.

When I think pure ambient I also think there could be other faint/distant sound effects playing in there, so better than the samples above, although it’s challenging to have a looping track in which such elements don’t stand out every time they come up! That might need to be dynamic--random effects layered on top of a continuous looping background.

Local Ambient

Very similar to the previous pure ambient option, this one may be able to achieve the same effect. It takes the “sound effects create the ambience” approach to an extreme, relying on numerous localized ambient sounds sourced from machines producing looping effects. However, in its pure form there is no unifying continuous track throughout a map.

cogmind_ambient_sound_propagation_samples

Visualizing the sounds emitted by select machines. I’ve written about the system behind this before.

The advantage here is that it’s something I can do myself, meaning it’s both cheaper and gives me more control over the feeling I want. (I don’t have the skill to do any of the other types above.) Finishing it would probably take at least a week, so technically it’s something I could try before going with any of the other options. As seen in the screenshots, only a handful of machines in Cogmind currently produce sound--like the ambient samples they were just a test.

Cogmind Dynamic Ambient Sounds

They’re dynamic! Ambient sound changing as a door is opened or wall destroyed.

In the end, machine-based ambience and any kind of music are going to be mutually exclusive, unless that “music” is extremely subdued, as with the cave/Command samples.

Outside roguelikes, there are some examples of games that have taken this route, and for similar reasons, too. For example, The Witness doesn’t include music. Nor does Duskers. Like Cogmind, both place a heavy emphasis on immersion, and have been praised for it (random example, one of many I’ve seen). Interestingly, since it came out I’ve heard more than one account of direct comparisons between Duskers and Cogmind.

Style

In a general sense there are two ways to go about music style, either something bold and experimental, or “safe”/”just there in the background.” Hard to choose between the two! Especially in a game like Cogmind which already has its own audio identity to an extent.

Movies and games are rather different mediums, but the same general principles apply across them--check out this video (the point is summarized from the linked 12:04). Lots of games go with safe music, which is otherwise not very interesting in itself. But more and more games have proven it doesn’t have to be that way. Of course, taking a pure ambient route misses out on the value of having music which is memorable and associated with the game, as well as a draw for anyone listening to trailers or gameplay videos for the first time. (That said, I’ve also noticed people dropping into streams and immediately being awed by Cogmind’s existing combination of animated terminal aesthetics and its accompanying sound effects, so I guess that much already comes across…)

As for specific style, I don’t think there’s any argument that Cogmind music (assuming there is any) should be electronic/tech-ish in nature. No pianos or acoustic guitars here. One common reaction might be “chiptune!,” but to be honest as much as I like that style myself I don’t think it fits the theme of immersion and realism which we already see with the mostly realistic sound effects. Chiptune has more of a gamey, less atmospheric feel to it. Cogmind probably needs something more gritty and sci-fi than that.

We can make further inferences about what Cogmind players expect and enjoy by checking out what they’re already listening to (see addendum at the end of this post).

Money

Music is expensive. Well, okay, it can be very expensive, or even not too bad, depending on the composer, style, and volume of work required. Cost is the biggest reason I’d even hesitate to at least try out a soundtrack.

Music is obviously not necessary for Cogmind, but how much would it add to the experience? And is that cost worth it? The answer will vary greatly by individual player and whatever style and format are chosen. Taking it as a trade-off, a professional composer to do a full OST for Cogmind would come at the cost of at least several months or more of time I could afford to spend adding extra content. That’s because I’m willing to work very cheaply on my own game, but the pros are not :P

I’m not looking to buy the full rights to the music, meaning a composer could certainly sell a Cogmind OST, and Cogmind is not exactly an unknown game (I can see it being fairly popular once it’s out there), so maybe that counts for something? A lower rate perhaps? :) For a composer that only makes sense at the more musical end of the OST spectrum, but that’s also the type of music which is more expensive in the first place. (Ambient work is generally cheaper per minute.)

Assets

How much music do we really need, anyway? I can’t show a full world map here because spoilers, but I can say that at an absolute minimum there would need to be 6 different tracks. But that’s woefully inadequate in a world with nearly 40 maps divided into about 30 types.

The problem is that as soon as one or two of the more specific map subtypes get their own music, it would seem odd that others don’t have their own as well. A more realistic minimum would be 10 tracks, which still merges a number of areas with unique meaning, gameplay, and/or atmosphere. As I’ve divided it up, a more ideal number hovers around 16.

The total cost will also depend on the precise length of each track, which itself could vary widely depending on style, composer, and what turns out to work the best. I’d say a minimum is probably 2-3 minutes per track, putting the minimum combined length at 12~18 min (low end, unlikely), 20~30 min (realistic middle ground), or 32~48 min (better estimate). Preferably they’d be longer, but then some of those in quicker areas would naturally also be shorter to mostly compensate.

Then of course there’s the consideration that new maps added in the future will likely require their own music, and that any additional asset requirements placed on new content slow the addition of said content while also reducing the total amount which can be added further down the line. This is one of the unavoidable annoyances of taking roguelikes commercial and adding higher production values overall :P

Composers

There are countless qualified pros out there. I spent a good bit of time researching potential candidates a couple years back, and over the past two years of alpha others have contacted me directly expressing interest in doing the OST. I’ve never specifically contacted any of the composers I researched, but all of those on the short list below have gotten in contact with me at one point or another. I’ll introduce each below, but know that I have not all that recently spoken with them about the possibility of doing an OST, so they may not even be available these days, or simply too expensive.

(Of course, as my luck would have it, all these composers live in expensive countries, which makes it harder for me to come up with the rates necessary xD. I’ve seen some pretty good composers in cheaper countries who work for lower rates, but no one yet that I think would be a good fit.)

Alex Yoder

Alex did Cogmind’s Alpha Trailer music, which has received a lot of praise (no surprise there--it’s wonderful!).

A trailer music’s format is different from what one hears in a game, but Alex has done work on games before, including the well-known Crawl. His style involves some pretty interesting sounds. It’d be neat to see what he could come up with for Cogmind. You can hear more of his sci-fi-ish stuff here, here, and here.

Ben Prunty

As composer for the famous FTL, Ben probably needs little introduction. It’s hard to say what he’d come up with for Cogmind since he’s got a wide variety of styles, but he did mention being interested in doing the OST if given freedom to experiment.

On top of the skill factor, Ben also brings up the potential value of having a recognizable name attached to the OST, and by extension the game. That fame can be a drawing point itself, something that isn’t as easy to quantify and factor into cost vs. benefit.

Neon Insect

A composer-plus-Cogmind-player, Neon Insect sent me a track inspired by the game. You can listen to it here. It doubles as a good example of what I was calling “semi-ambient” above.

This particular track isn’t amazing, but then it was just a quick fun thing he did one day a couple months back, not a final version. I played through a whole run with this going in the background and it did a nice job.

I have more composers on my list--these are just the first few that stood out so far. If you yourself think you’ve got a style that could work, or would like to recommend some other composer, I’m happy to listen to suggestions and submissions :D

Addendum: What are Cogminds listening to?

People have so much of their own music these days, or access to it via the net, that it’s been easy for players to insert whatever they feel is appropriate while playing. It still seems better to provide something official if possible, which can then be muted if desired. But if we can know that a large number of players will just turn off the music, then it’s kind of a waste, eh? :P (That money can be put towards feature dev!) At the moment it doesn’t really feel like anything is truly missing without music, as it would with other games, though the fact that many players are usually playing to their own music implies that there’s space for something there.

Looking back at what Cogmind players have reported listening to over the years…

The Deus Ex: Human Revolution OST is popular, which together with the OC Remix adaptation is what I’ve played to the most. The System Shock 2 OST is also popular. Other OST recommendations from players: Frozen Synapse, Hackmud, A New Dawn (MW2 covers).

What do you listen to while playing? What direction would you like to see Cogmind take in terms of music, given your experiences and the considerations I’ve run through in this post? Discuss here or over on the forums. (Also more discussion has been happening on r/Cogmind)

Posted in Design | Tagged , , , | 15 Responses

Dissecting a Cogmind Changelog

Cogmind has had 15 major releases in the past 21 months, and the changelogs for especially the latest four have each been massive walls of text. While it’s fresh in my mind, and before we move on to a different system of smaller, quicker patch-style releases, I thought it would be interesting to share an inside look at how even an impressive changelog isn’t all that representative of the work involved, or even the true content of a given release.

I’ve talked about the bigger picture with regard to release cycles before, but here I’ll be going into a lot more detail focusing on a single changelog itself, specifically that of Alpha 14, the most recent update.

cogmind_changelog_alpha14_composition

Alpha 14′s changelog as a scaled down image just to give a general idea of its length and composition.

I always split the changelog into three sections, NEW, MOD, and FIX, something I’ve done for about six years now, since the early X@COM releases. I got the idea from one of the libtcod devs back then, and liked its simplicity and the fact that it conveniently relies on only three major categories to cover every possibility, distinguishing explicitly what’s new vs. what’s changed, which I think is more important than categorizing by other characteristics such as “UI-related,” “gameplay-related” etc.

The largest single section tends to be new features (here 42%), followed by changes (37%), and a smaller number of fixes (21%), a distribution more or less common across all releases.

Cogmind gets put through a good amount of both manual and automated testing, so there aren’t usually many bugs to deal with, generally just a couple larger things with each release, and a handful of minor rare issues with no significant effect. Most are either UI-related or emergent issues that naturally sneak into such a large code base. By contrast, there is a fair amount of tweaking both to mechanics balance and QoL. Then of course new features should make up the bulk of a release, as that’s what everyone looks forward to the most!

This same ratio will likely continue for the entirety of Cogmind development, including post-1.0, because I’ve been operating from a “complete game” foundation since Alpha 1, so there won’t be much of an incomplete game vs. complete game shift going on (hypothetical public changelogs of Cogmind’s two years of pre-alpha versions, on the other hand, which correspond to what a lot of other games consider “alpha,” would easily be 95% “NEW” line items).

As for the changelog presentation itself, you’ll notice that I color some items. These are the important ones, basically what I think anyone who only wants to skim part of the list should prioritize--the features, changes, and fixes players would most likely want to know about.

Within each category, their order is honestly pretty random, though if there are a few related entries they’ll be grouped together, and I always stick the handful of biggest NEW features at the top. The fact that there’s a new map, the numbers of any new robots and/or items and major features (e.g. difficulty modes) need to be the most visible. (In this particular case melee multi-wielding also deserved to be at the top, but both it and difficulty settings have multiple associated entries, so one had to win out, and the former is a much bigger deal, after all.)

For the purposes of this post, I’ve rearranged the changelog in the order I actually implemented everything. They’re also colored by category, so we can examine how that aspect relates to the process (green = NEW, yellow = MOD, red = FIX).

cogmind_changelog_alpha14_ordered_colored

Alpha 14 changelog, ordered and color-coded. (click for full size)

At the top there you can see a few fixes, generally made shortly after an update when a handful of new issues are discovered by the initial surge of players. These aren’t for a patch (in which case they wouldn’t even appear here!), but come at a time when I’m mostly just interacting with players--and playing myself! So I’m less busy and it’s convenient to take care of these right away.

Otherwise, most of the fixes don’t come until a phase after all the major features are complete. Before that point I’ll just collect them in a list, although if it’s not immediately clear what caused a reported bug, or I don’t think I have enough information to solve it (I usually do), I’ll tackle it right away in case whoever found it might be able to help by providing additional relevant information. (Another exception would be very simple bugs reported when I happen to not be too busy, in which case I’ll just take care of it immediately.)

Why prefer to do tasks in groups? Efficiency. It’s quicker to handle tasks of a similar nature together, both in terms of tools needed and mental state, and I don’t like to waste time :). On smaller projects wasted time doesn’t really have a chance to add up, but losing a little time here and there on a project spanning years can in the end add up to weeks and months!

Note the “issue resolution” section is named such as it includes MODs, not fixes per se, but usually balance tweaks or other changes often in response to player feedback, sometimes direct and explicit, and at others just based on my observations of player experiences.

At the end is a flurry of smaller features, feature requests, QoL and the like. AKA the “OMG I must release ASAP--WTF it’s been a month since last alpha!” period. It’s nice to have some semblance of milestone deadlines, even on an epic project with no real oversight :P

Now let’s take a look at how the changelog grew over time. Surprise!

cogmind_changelog_alpha14_progress

Ordered Alpha 14 changelog, subdivided by development week. (click for full size)

Alpha 13 went out on January 17th, but I didn’t actually start on Alpha 14 until the 26th. It’s pretty normal to spend at least a week of time doing followup work from the previous alpha--compiling stats, watching how players interact with the new features, maybe writing a blog post or two, and certainly taking care of all the personal chores I no doubt neglected in the run up to a release :P. So technically this alpha was completed over a period of four weeks (half of which were spent out of country).

Look at that… two-thirds of the changelog was done in the final week?! One week!

Despite appearances, it was most certainly not two-thirds of the work. There are three major factors to consider here:

  • Some of these individual entries have a lot of work behind them, not represented here. (This compared to some that took mere minutes.) Especially during the first couple weeks I’ll work on bigger features, which as described before is because the required time for these can be more difficult to gauge, and therefore they have priority over the many tiny features that can be rapidly packed in one after another at the end. In particular you can see “NEW: Branch map ‘Deep Caves’” sitting there by its lonesome in week 2, next to a handful of other related entries. That was a ton of work--a whole new map that includes new mechanics, new robots, new events, new parts… but none of the details are broken down there. I don’t want to ruin the chance for players to make new discoveries, so while the public changelog for Alpha 14 is 126 lines, the internal version contains 207, part of that attributed to spoilers. (Of course the other part is simply elements that don’t concern the player.)
  • Some weeks I am actually busy with other non-changelog-related parts of development, like writing updates or articles, or for example during Week 3 when I had to take about a day and half out to work on and push the Greenlight submission. That particular week, as a result of all the other writing I was doing there was only a day and a half to work with the source code, much of which was allocated to the semi-major feature “High Security.”
  • Some weeks I simply devote more time to development. This is also more likely closer and closer to release, where I really hope to fit in a certain chunk of features (the “final cut” list is always made at the beginning of the fourth week, and I usually get through about 75% of it). I always aim for about 45 hours per week, though in this case Week 4 was somewhat extreme, as I ended up putting in 70 hours. So that had something to do with the lopsided changelog, too :P

Interestingly, despite the underrepresentation of major features I do believe that overall the final length of the changelog does kind of balance out with the amount of work that went into it.

I hope you enjoyed that--I certainly found it enlightening. I mean, I more or less knew this stuff, but it’s nice to punch in the numbers and and turn it all into pretty diagrams to visualize it :D

Posted in Internal | Tagged , , , | Leave a comment

Adjustable Difficulty

Roguelikes are notoriously difficult. In this way they’re really no different from games of old, across numerous genres, which many players were far from guaranteed of completing. It’s only today that roguelikes have become more uniquely associated with difficulty because the market around them has changed so much!

There will always be an additional layer of inherent challenge to a game with content that changes from play to play, but while traditional roguelikes and their players continue to embrace that challenge, the wider games market has shifted along with player expectations. In short, as gaming has exploded to include a much larger group of consumers, consumers with different needs and capabilities, developers have sought to take those circumstances into account. (There is even a portion of players that believe they deserve access to every part of a game, as content they paid for!) Therefore these days it’s common practice for games to include multiple difficulty levels, with pressure to embrace such options as just another form of accessibility. This is especially true with respect to commercial games, which are reliant on sales to survive--more accessible games simply means more sales!

Being free, and niche, roguelikes have always been somewhat insulated from this trend--very few offer difficulty settings, not to mention the nature of their design and common mechanics (e.g. permadeath) make following that trend somewhat less meaningful. In some ways the point of a roguelike is to offer as many challenges as possible, and as long as it is theoretically possible to overcome those challenges then no one’s to complain, right?

That said, it’s probably not a coincidence that two widely popular roguelikes also offer multiple difficulties.

Tales of Maj’Eyal has five separate difficulty settings, one below normal and three above. From the creator, DarkGod:

“Difficulties were first added like six years ago or so. As for why, well first because I can! I made the engine robust enough that I can do them very easily. And most importantly because not all players have the same skill. I for once barely manage to win on normal with my preferred class while others find normal to be braindead. My goal has always been to give fun to as many people as possible and that follows along. Also to note that my difficulty levels are not simple number bumps (there are those too obviously), each level introduces new harder mechanics (like random bosses, being constantly hunted, …). To be fair I do not understand why devs do NOT put difficulty levels in their games heh ;)”

DoomRL also has five separate settings, distributed in the same way. From the creator, Kornel Kisielewicz:

“It raises the replayability of the game, allowing you to go more difficult once you feel that the game is getting to easy. Initially it was added just as a tribute to Doom, but it turned out to be a great feature, so I gave it a lot more thought later on.”

Interestingly, both developers emphasize settings as a way to increase the challenge level, an approach also reflected by the available options, wherein the default is towards the lower end of the scale.

ADOM also added more gameplay settings in recent years, some of which have an effect on difficulty.

Whether or not to implement difficulty levels, and the best approach to take, comes down to a question of who we’re balancing the game for, and what do we hope those players can experience? As a hardcore fan of roguelikes, I’ve always enjoyed that winning is not inevitable for everyone, even given years of play and practice. The thrill and excitement at each new degree of personal achievement has always felt like an integral part of the roguelike experience, and if “content” is attainable without a high level of skill then that experience is watered down.

Outside the roguelike realm I’ve noticed a trend of games stating up front that they are very challenging and aimed at the hardcore audience, which at least puts players in the right mindset from the beginning, asking themselves “hm, it’s meant to be hard--can I take this challenge?” before even starting. This trend became most apparent following the success of Dark Souls, interesting because the same mindset used to be simply assumed back when gaming was more niche: If you weren’t good enough, you may very well not see the whole game. That is certainly one option, to just make it clear that “the game is tough, good luck!” I would argue that if areas of the game most players can generally reach are still fun (and they should be!) and fully satisfying (that one’s a bit harder…) that’s the most important part, but times have changed. And expectations with them.

I’ve softened my own position on the matter as well, especially in the 21 months since releasing the first Cogmind alpha and listening to feedback from the community. I can now more clearly see the benefits of adding difficulty settings to a roguelike. But first, a little look at the drawbacks!

Drawbacks?

If there weren’t any negatives to allowing adjustable difficulty, lots more roguelikes would have them, right? :)

For brevity’s sake I’ll use a list:

  • Trivializing some aspects of the game by using an easier setting potentially results in a less rewarding long-term experience (mentioned before). While it’s possible to take on higher settings later, the player has already lost half of the reward: the initial discovery aspects associated with that achievement (e.g. what comes after).
  • Using easier difficulty modes may teach bad habits, or at least not teach good ones. Players using easier settings as a crutch are less frequently forced to improvise effective solutions to challenges. This is fine for those players who don’t want to improve, but might hinder others looking to learn the skills necessary to tackle at least the default mode.
  • Even though roguelikes are single-player games, multiple difficulty modes somewhat fragment the community. “You reached where?!” and “You did what?!” etc. no longer have quite the same meaning once there are easier difficulties at which the same content is available. Essentially not everyone is playing the same game anymore, and progress is no longer quite so instantly comparable. To me this is one of the bigger drawbacks, though it can at least be mitigated with a sufficiently large community in which there are plenty of players at each tier.

I don’t believe that any of these are conscious reasons behind the relative lack of difficulty settings in roguelikes, though. When it comes to development effort, game design and balance are delicate things, and making changes to systems to accommodate difficulty levels can have negative consequences for the overall experience. It’s not just about difficulty, as the whole “feel” can change as a result. Adjusting certain aspects of a mechanic could have a cascade of unbalancing effects on others, especially in roguelike worlds featuring grand scope and numerous interconnected systems. Not that this can’t be overcome, it just takes longer to get right. And dev time spent accommodating different player needs is unfortunately very much not in the roguelike tradition. (Further compounding the issue is the fact that roguelikes often continue to evolve and are never quite complete--changes and new features have to take into account the potential effects across multiple difficulty settings, and creating a roguelike already requires so much work to begin with! If anything, at least the fuzziness of the RNG can help soften some of the impact of working across multiple difficulties.)

Anyway, while I didn’t go into details there are pretty strong arguments against most of what I’ve written above with regard to drawbacks, so… yeah :)

But Benefits!

The benefits of difficulty settings are more straightforward:

  • It’s nice to be able to cater to different types of players (especially as a single-player game where we don’t have to concern ourselves with multiplayer balance issues). We do it with UI options, so why not with difficulty?
  • Some players learn better in a low-pressure environment, at least when it comes to basics.

Straight from Cogmind’s new manual section on Difficulty:

“By default Cogmind has been carefully balanced to provide a fun yet challenging roguelike experience that can be reliably overcome given sufficient experience and skill. That said, some players simply don’t have the time or inclination to strive for mastery, thus alternative modes are available that tweak multiple aspects of the game to make survival somewhat easier.”

video_game_difficulty_trevor_noah

About that difficulty…

Hence the number on reason difficulty settings are important: People have less time in general these days as the pace of life has picked up, and there are so many more games than there used to be. On average, players used to acquire new games less frequently, and play the same ones longer, which also meant it was more likely to reach those difficult areas as skill improved over time. (The average gamer was also a lot younger with more free time :P)

The Baseline

Notice that most of what I’ve discussed so far is in terms of easier difficulties. This is due to how I’m approaching the whole idea of these settings.

I believe that the default mode itself should be quite challenging, even for experienced players. In that sense Cogmind is different from other roguelikes such as DCSS or ADOM, where once players are familiar enough with the mechanics, content, and strategies, beyond the early game a new run is often just a case of going through the motions to win. Instead, difficulty should ramp up towards the end, not down. (This in itself is a topic I want to cover in more detail in a future article.)

And regarding the distribution of player skill--or rather visualized as which sections of the game different players are likely capable of reaching, I feel a bell curve is appropriate:

cogmind_player_skill_distribution_curve

Cogmind player skill distribution: This is an idealized curve, though the actual curve based on reported score data actually looks more or less like this.

Thus assuming the normal difficulty, probably half of players will likely struggle to best the mid-game. While that’s the end result, the true target of (most) well-designed roguelikes should be focused on being winnable nearly 100% of the time by an experienced and skilled player. Remember this does not equate with everyone actually being able to win--some people have gone decades playing, and enjoying, the same roguelike without ever actually winning!

Still, I’ve decided that we need these settings so let’s get into the details of what that actually means.

“Easier Modes”

Cogmind has three difficulty settings: the default, an easier mode, and an even easier mode. I prefer to call them “easier” modes as opposed to “easy” because they are purely relative to the default difficulty, and may very well still be difficult for certain players! (I admit this is somewhat pedantic given everyone’s clear understanding of video game difficulties :P)

cogmind_easier_mode_option

Setting Cogmind’s difficulty in the options menu.

The mode can be changed via the options menu, and does not take effect until the next run. I.e. switching to another difficulty mid-run is not allowed. This is for score sheet consistency, so it’s possible to clearly define a run as belonging to one mode or another. Because obviously we’ll want to keep runs separate on the new leaderboards:

cogmind_difficulty_modes_leaderboard

Leaderboards 2.0 testing, divided by difficulty setting.

Players appear only on the board of the mode for which they most recently submitted a run (older runs are of course remembered for those who switch back and forth). It will be pretty interesting to see what kind of distribution we end up with starting with the next release!

As for the meaning of these modes, adjustments go beyond simple changes in number values, because numbers alone wouldn’t be enough to make the game easier while retaining some semblance of balance and fun.

Easier Mode: The purpose of this mode is to retain most of the challenge and content of the default, still requiring a fair amount of experience and persistence to win, though not quite as demanding as the default mode. It is more for those who would still want to improve and hope to tackle the default mode later.

  • 20% base resistance to all damage types
  • +5% base accuracy (both ranged and melee)
  • Effect of allies on alert level halved
  • Disabling machines has less of an impact on alert level
  • Traveling to a new area/map lowers alert level more than usual

As you can see, much of this is aimed at reducing the influence of alert level, which presents one of the larger long-term dangers to players who are frequently in combat. And the free damage reduction will somewhat slow the rate of item attrition, the other major factor contributing to Cogmind’s downfall.

Easiest Mode: This mode is quite easy, generally too easy, though yes it’s still possible to lose, and especially certain areas of the world are going to be pretty dangerous! That said, it will be easier to avoid them with minimal experience since the destination of every exit is automatically known in advance. It basically suits those looking for pure entertainment or those without much free time.

  • 35% base resistance to all damage types
  • +5% base accuracy (both ranged and melee)
  • Effect of allies on alert level cut to one-third
  • Disabling machines has a much lower impact on alert level
  • Traveling to a new area/map lowers alert level much more than usual
  • Lower chance of random hostile encounters (most notably in mines/caves)
  • Hostile branch encounters (e.g. in caves/mines) cannot appear directly in spawn area
  • -1 to all patrol squad sizes (stacks with garrison effect)
  • -1 to number of garrisons per floor (cannot reduce to 0, however)
  • Exit destinations automatically revealed on sight
  • Evolve 1 extra slot on exiting scrapyard
  • Scrapyard contains random useful utilities
  • Items nearby your spawn in main complex maps replaced by random items more likely to be useful given your current state

All effects are subject to change, but as is there are too many variables and I’m not the target for these features (unlike the default mode!), so to determine how effective they are I’ll have to rely on outside feedback from those who actually need and/or want these modes.

I’ve added a tutorial message that shows after the player’s 5th death (if they are still using the default mode), to let them know there are easier modes if that’s their thing.

For those already using other modes, I’ve added a number of indicators to help both themselves and other players distinguish the setting. First of all, score sheets are now clearly topped with a different header for each mode:

cogmind_difficulty_mode_score_sheet_headers

Score sheet headers by difficulty.

And to help players posting and looking at screenshots discern which mode is being used (it would get really annoying to have to say/ask every time!), the two primary views we’ll see images of now also have highlight color changes to reflect the mode.

cogmind_difficulty_modes_color_gameover

Game over screen, now in three variations.

 

cogmind_difficulty_modes_color_HUD_parts_dividers

HUD parts list, with a very subtle divider color change (to avoid having a significant impact on the aesthetics).

Hard Mode?

Interestingly, often times when I’ve brought up the idea of difficulty levels someone will ask if there will be harder modes. The fact that this is asked with regularity, despite many players barely being able to survive through the first half of the game, again reflects how valuable varying difficulty levels can be!

For the reason mentioned before--default roguelike mode should be hard--I don’t currently plan to add an explicitly across-the-board harder mode. Instead I’ve taken other approaches to the idea of even more challenging options for experts.

Structurally speaking, the world already has more difficult optional routes and challenges built into it. Some of these are not even known to non-expert players, but are possibilities gradually discovered over time while uncovering more of the lore and NPC encounters. Some involve plot events, and others involve visiting certain areas in a certain order, taking advantage of the non-linear structure of the world to create a multitude of options. Even close to the surface, there are “extended end game” options for the brave or well-equipped.

On another level, strategy-wise winning with different builds also provides its own challenges (akin to winning other roguelikes with a different race or class), some of which are much more difficult than others.

Also falling under the “hard mode” end of the difficulty spectrum, as of the next release Cogmind includes a new framework for “Challenge Modes.” In a sense, these are essentially what are called “conducts” in roguelike tradition, playing the base game albeit while applying some additional rule or rules. Here, however, they are formalized rather than player-enforced.

These rules are more interesting than outright making the game more difficult by changing numbers around, because all the latter suggests is that the player is aiming for highly efficient/optimized play (plus maybe some luck), whereas challenge modes actually fundamentally change the way the game is played! Much more interesting :)

So far I’ve implemented two such modes, mainly as a test, with many more to come, I’m sure. The first is named “Unstable Evolution,” where you no longer have control over which slots you evolve--they are selected at random.

cogmind_challenge_unstable_log_msg_slots

Random slots chosen due to UNSTABLE status shown in the log.

 

cogmind_challenge_unstable_sample_evolution

Examples of random slot evolution from beginning to end.

The first there actually looks to be a fairly normal composition, although of course the order could be odd--not evolving what you need when you need it, forcing you to adapt; the second is kinda crazy due to that large number of power slots! This mode should lead to some interesting runs, and enable more types of replayability. (Note that selection is weighted towards what players most often want--e.g. not a ton of power slots, so it’s not necessarily that terrible, but you could get unlucky and have to deal with it… Adapt or die, such is evolution!)

The other new mode is named “Scavenger,” wherein there are no part stockpiles and any solo randomly available items are damaged--everything else must be taken from other robots, or stolen from haulers! (Fabrication would be another option, but that has its own limits.)

cogmind_challenge_scavenger_example_map

A sample of the kind of junk one would find lying around the Factory in Scavenger mode.

You earn points for each challenge applied, and can pick more than one (unless one or more are for some reason incompatible with each other).

cogmind_challenge_list_score_sheet

Active Challenge Modes listed in a section of the final score sheet.

 

cogmind_challenge_easy_mode_score_history

Score History with a new column for difficulty and any active Challenge Modes appended to the end.

With only two modes, for now they are activated directly in the config file, but a new submenu will be added to the in-game options menu once there are enough of them to establish how that submenu will function. There is a forum thread where anyone can drop Challenge Mode suggestions/ideas that I can draw from later.

“Achievements” (as in Steam achievements, but I would want to implement them for non-Steam players as well) will also be a thing, and are similar in nature to difficulty modes, providing alternative goals that might be challenging or just fun. There’s a forum thread to drop those, too :D

Posted in Design | Tagged , , | 10 Responses

Pricing a Roguelike

Price, funding, revenue, development costs… these are not terms traditionally associated with roguelikes. The situation has changed significantly over the past several years, though. Not only are there many more roguelikes these days, but some of them (*gasp*) even cost real money!

Having made the leap from years of hobbydev to years of commercial roguelikedev, I have some thoughts and experiences to share on the somewhat contentious idea of raising money for a roguelike, and pricing strategies in general. Although I write in terms of roguelikes, most of the same principles can be applied to other genres as well.

In short, Cogmind’s approach to pricing has worked out perfectly, initially meeting my expectations, and then before long exceeded them. Repeatedly.

Why Pay for a Roguelike?

Before I get into examples, the short answer is that money makes more things possible. Who doesn’t want even more higher quality games from their favorite genre?

As for specifically what money can do for roguelikes, not too long ago on the Cataclysm: Dark Days Ahead forum a relevant thread popped up.

cdda_forums_ui_improvements_discussion

Excerpts from a discussion on C:DDA UI development.

You see this a lot in roguelike development, where accessibility and UI features are an afterthought. That’s not to say they aren’t important, nor would many developers make such a claim, but it is widely considered a less enjoyable part of creating a roguelike. Roguelikes are all about adding new mechanics and content--heck, rapid feature development is one of ASCII’s strong suits to begin with! UI work requires yet more time (on top of all the other things RL dev entails) in a very different area of expertise.

Kevin (C:DDA developer) at the end there makes the point well: Hobby projects are more about what the dev wants to do. I can say from experience that after having switched from hobby to commercial development, the focus shifts towards a lot of what the dev should/must do. Sure there’s still the fun stuff--the new mechanics, new map generators, finding new and exciting ways to killchallenge players… but I also spend plenty of time doing things I don’t necessarily feel like doing.

You know, like most any other job that pays :P

A developer charging money for a game has an obligation to serve the player wherever possible, and that means devoting proper attention and resources to usability. Note that this in no way implies sacrificing creative control, it just means treating the project as a proper business--taking feedback, interacting with players (who double as customers), and providing customer service. As such, accessibility features have a much higher priority for me, which a lot of players appreciate.

Players get so much more than that, though. Increased production value and quality make up the bulk of obvious benefits from paid roguelikes. Being able to invest extra time or money means:

  • Extensive professional tilesets of a consistent quality and style. ADOM currently has over 6,000 tiles; ToME4 has a mind-boggling total north of 20,000; Caves of Qud has upwards of 5,000; Cogmind has 1,165 (plus over a hundred custom font bitmaps, a thousand pieces of ASCII art, and many hundreds of procedural animations). And because they’re all in development, these totals are still increasing as time goes by! (It’s early yet for DoomRL successor Jupiter Hell, but with all those 3D assets it’s in a league of its own and certainly not happening without funding! (already acquired through KS))
  • Sound effects aren’t something that a lot of roguelikes do--that’s mostly roguelite territory, but Cogmind has made it a big part of the experience with over a thousand samples and counting (far more than any other roguelike and most other indie games).
  • Music. Some roguelikes do this, too! (Still to write: my own article on that topic. Posted!)

Certainly plenty of perfectly good roguelikes have none of these things, but many of the more widely popular ones do, not to mention the potentially long stretches with no fixes for bugs reported in non-commercial roguelikes.

Optional elements aside, considering the time-intensive nature of roguelike development, simply having more time to dedicate to new features is a big thing. A revenue stream enables continuous development, much more desirable than the sporadic updates endemic to hobbyist gamedev (for which the ARRP was a somewhat successful attempt to remedy, but still can’t compare to directly funding the process!).

Development on Ultima Ratio Regum, an amazing free roguelike project started in 2011 but only about half done by now, was unexpectedly halted for some months shortly before a planned release last year. Mark is now back at it again, but a number of other roguelikes have died or faded out over the years before reaching completion. Pure hobby projects tend to progress more slowly, and therefore stand a greater and greater chance of dying as time goes on. It’s just a fact of life, in which any number of causes can spell the end of (or at least interrupt) development, be it family, studies, work, a change of interests, or “a bigger better idea!!1″ :). From that perspective, means to accelerate progress are a good thing (and of course for their part players won’t complain about access to more timely updates!).

Honestly it’s a huge amount of pressure to keep up that near-nonstop progress, but the ability to (relatively speaking) quickly and efficiently put together a world that others can enjoy is worth it.

cogmind_development_hours_cumulative

Cogmind cumulative development hours, 2013.6-2017.1.

As an experiment, let’s look at the hours I’ve put into Cogmind as of this writing (6,623) in a different light: What if this were a hobby project done in my spare time? Excluding basic needs and all other responsibilities, based on years of data I generally have about 50 hours to spare each week for work (all of which currently goes towards Cogmind). Assuming I use up 40 of that for a different job and develop purely as a hobby instead, and also making the big assumption that doing this other job wouldn’t leave me even more exhausted and desiring extra time to relax and get away from brain-draining activities (it would), that leaves 10 hours per week… 6,623 h / 10 h/wk = 662.3 weeks, or 12.7 years!

So rather than Cogmind being what it is today in January 2017, having started as a hobby back at the original date of June 2013 it would not reach its current state until July 2025. Sure we could chop off a year or two because, yes, I might spend vacation time working as well (though we’d also have to cut out the occasional weeks where I’d be too busy with other life stuff)--anyway, it’s a generalization, but no matter how you look at it that’s still terribly slow.

Then of course there’s the fact that it’s not done yet :P. I can say for sure that including post-1.0 work it’ll easily top 8,000 hours (beyond that I don’t really know).

In the end, most roguelikes and features are technically possible without any funding whatsoever, but it’s going to take a lot longer (which, again, increases the chance of failure), or a lot of manpower (DCSS is a good, if rare, example there).

Why $30? Balancing Price with Other Factors

Although as I write this alpha access is available for $25, in 2015 Cogmind was introduced at $30, the price at which it remained for the entire first year of public alpha. As you would expect, reactions to this number ran the entire spectrum from “for an alpha?!?!?” to “totally happy to pay that!”

I based the specific number on a couple data points, first and foremost what I’d noticed from video game Kickstarter campaigns, that early access as a “perk” often came with tiers upwards of $30. Even outside KS, I found games like RimWorld, similarly a highly-replayable game under long-term alpha development at a good pace by a very active dev, which priced its alpha access at $30.

Overall it felt like a plausible range was somewhere around $20-$30. I would definitely not claim this approach is good for maximizing revenue potential, or even maximizing players while still bringing in “sufficient” revenue, but that wasn’t the goal!

graph-elastic-demand

Graph demonstrating the concept of elastic demand (source). Video game demand is pretty darned elastic!

It’s fairly obvious that a lower price point might very well outsell the current sales model in terms of total revenue, but to me there are more important factors than money to consider in the short term. The point of alpha funding is to keep development humming along until 1.0, before which too many players actually becomes a problem!

While not necessarily true of all devs, I believe in the importance of being active in the community, responding to everyone with a concern, question, or some other need of support, while also putting effort into making resources, extensive progress updates, and other information available outside the game. This requires a significant time investment, the effects of which are even more pronounced as a lone developer where talking to players means I’m not making real progress on the game itself.

Lower prices naturally attract more players, which given this community-oriented model will inevitably slow development as more and more time is spent on community management. But I love having the opportunity to maintain closer relations with a smaller player base, even adding custom options at the request of a single player, while still having plenty of time to work on the next release. So in this regard a higher price is beneficial for both development and the ongoing alpha player experience.

Game development is also incredibly risky, so it’s nice to use any knowns to mitigate elements of risk wherever possible. This, too, played a role in the original pricing decisions, which you can see below from my general thought process:

  • I do know that I have an established fan base who would be willing to pay more for a quality roguelike with quality continuous development and support.
  • I don’t know whether lowering the price to something more common across the entire indie market (like <=$10) would be able to attract enough players to even make up the difference. But I do know that even if it could, having 2-3 times as many players would be a larger burden on the process and unnecessarily slow development. The resulting “high noise-to-signal ratio” also makes it harder to focus on the best design decisions.
  • Niche games, especially those with something truly unique to offer, can afford to charge more, and in many cases must charge more in order to be at all sustainable. Long-term sustainability is quite important to me, since this isn’t a one-off thing and I hope to not only develop it further beyond 1.0, but also work on other games as well. It’s (hopefully) a permanent job.

In that light, a $30 price point seemed the much safer route.

From a purely economic standpoint, where time is not a limiting factor (i.e. development and support can and will continue for quite a while), setting a higher price is also just smart business. Eldiran over on /r/gamedev (where especially when starting out I read a lot of first-hand industry info that was very helpful) put it very well in response to a question about how discounts damage indie sales:

Different players value your game differently. Hardcore fans want to buy it as soon as possible at full price. Some genre fans might be willing to grab it once it hits 10-20% off. People who are only mildly interested might wait for a 50% sale. And so on.

If you set up a 50% sale early on, all of those groups will buy it for 50%. That means you lost all the extra money you could have gotten from the 10% group, the 30% group, etc.

There are lots of other considerations. Consider what it looks like as a buyer to see a game go 50% or 75% off shortly after release. That would look like the developer isn’t confident in the quality of their game. Maybe they’re just trying make a quick buck with manipulative sales, and the game sucks?

That said, there are situations where getting a big playerbase as fast as possible is more important, such as for multiplayer-only games. Then it might be worth it to do sales early and often.

The comment is in reference to sales, but the same principles apply to pre-release pricing as well.

It’s not purely a numbers game, though--the price is still very much associated with potential value. Subjectively speaking, I consider Cogmind worth that price if I were a player looking at such a game, and clearly many others agree. Everyone else can make that call for themselves based on the large amounts of information available, while a higher price serves a useful secondary purpose here: prevent impulse buys. Impulse buys, which are where a lot of developers can expect to bring in more players via low prices and steep discounts, are also where a lot of the noise-to-signal problems mentioned earlier come from. It leads to too many distracting, non-constructive comments from players who probably haven’t spent very long with the game in the first place. (Not to say first impressions aren’t important, too, but they shouldn’t make up the bulk of the discussion.)

Side note: A great tool for games with a higher alpha price is a one-time mailing list for those who wish to be notified when the game comes down to its regular price. Over 1,000 people have signed up for that already. This is essentially akin to the Steam wishlist, albeit without the Steam part :P

A pricing discussion wouldn’t be complete without a look at the common argument for a lower price before full release: Players may very well be playing an unfinished, buggy version that’s not necessarily all that much fun, where a higher price equates to paying a premium to help find and report bugs! (That sounds like work…) I completely agree with that argument, though I would also argue that developers need to try to release early versions that are not so buggy, and fun from the start. Then it suddenly becomes more of a privilege to join the alpha process, where those players are not only having fun, but can also influence the future direction of the game via their feedback.

This is how I handled Cogmind--sure there have been bugs, but a relatively tiny number, nor is it usually anything serious (most serious bugs are discovered via automated testing prior to updates, and those which aren’t are patched immediately, generally within an hour of reporting). Fixing bugs is always a top priority, and even the original 7DRL is fun so that aspect is covered, hence the overall player consensus that “it doesn’t feel like an alpha,” which is exactly the kind of sentiment that is important to lay the foundation for by building a quality pre-alpha in the first place.

Yet another advantage of a higher alpha price is a factor many non-developers may not realize: while in early access and not on Steam I can devote a lot more of the revenue to actual development, whereas on Steam a majority of the funds would go to Valve (30% fee) and the US government (taxes…), and they’re certainly not going to help make Cogmind better! :P So each individual person supporting my work at this stage has been far more valuable to the project than even a handful of supporters on Steam could be, and the results are amplified with a higher price, all while keeping the player base to a manageable size. (Clarification: Steam is definitely a valuable channel in the long term, as it provides access to a much larger pool of players--so many only buy through Steam!--but given the context it’s not the right choice for me at this time. That said, in the interest of sustainability the amount of post-1.0 work will be mostly contingent on how successful Cogmind is on Steam.)

Getting Results

Cogmind Alpha Access has been quite successful, my definition being that it’s been able to fund itself. And that’s with just the right amount of feedback from players to help improve the design without causing too much of a drag on the process.

Revenue has been both relatively steady and just enough to keep development going. In fact, the process has been going so smoothly that the original plan to “finish” by the end of 2015 was quickly scrapped in favor of another year of developing extra features, which became yet another year of decent revenue that pushed the intended deadline into 2017. Sure, development could’ve been rushed to the planned 1.0 over a year ago, but there were/are so many tempting optional features, and many new players have come to support this project, so why not add more fun stuff? :D (For the curious, a sampling of the features so far that could only be added as a result of strong alpha support: traps, Trojans, Waste, garrisons, Zionite plot line, about 15% of the items, numerous additional robot designs, countless extra UI features, large-scale refinement of mechanics like hacking, machines, and flight…)

Since Cogmind was available at more than one price when alpha access began (an idea inherited from Kickstarter but without the temporary campaign nature), let’s look at the reasoning and performance of each of the tiers.

  • $90. While as a sum this highest tier seems expensive, it included multiple keys at essentially $22 each, or $15 if you subtract the value of the t-shirt thrown in. This whole tier was just something I wanted to do because having a custom t-shirt is neat, and 18 other people liked the idea, too :) (only available during the first month, though since then there have been numerous requests to bring back the t-shirt, so I’ve been taking names and will do that at some point).
  • $60. I can’t take credit for this idea, which turned out to be a really nice one indirectly suggested by sambojin over on the Bay 12 forums, who shortly before launch said he hoped for a way to buy more than one key, preferably at a discount, to give the others away. That sounded like a perfectly reasonable request, thus the Improved Tier was born and to this day 9.7% of all revenue falls into this tier. And it’s not only for gifting, either, as multiple supporters can pool their money and buy this 3-pack which breaks down to $20 each. Especially soon after the launch period it was possible to see such groups forming on various forums among friends. There are multiple advantages here, including a bit of free marketing while also giving those who couldn’t afford $30 a way to acquire it at a 33% discount. I also made sure to clearly indicate that $20 is the intended launch price for 1.0 (it always has been). Managing expectations is an important part of pricing!
  • $30. This one was already covered pretty well. It accounts for 85.6% of revenue in the first year, before the next tier was introduced.
  • $25. When the first anniversary of Alpha Access rolled around (May 2016), sales seemed to be in an ever-so-gradual decline, thus it was a perfect opportunity to introduce the first price drop. It was nice to have that middle-ground leeway in between what it was and the future launch price, enough to make a difference to buyers but still be a respectable amount of revenue without opening the flood gates to new players. As expected, sales picked up again, and have continued at a good pace ever since.
  • $20? More recently I’ve taken to offering the occasional 20% discount coupon in coordination with other events. These are neat since I can see precisely how much a lower price stimulates real buying interest coming from various sources by using different coupon codes for each.
cogmind_buy_tiers_alpha_summary

Summary of Cogmind Alpha Access Tiers, 2016.

Note that even in introducing the $25 tier, I did not remove the $30 tier. It’s still available as it offers a few perks that don’t come with the new lowest tier, just a thank you in the credits and a forum badge. And despite the availability of $25 access, some people still go for $30! From May 19, 2016, to date, the $30 tier still accounted for 14.1% of individual sales (15.9% of revenue). Had the same group of people instead only had the $25 option, gross revenue would have simply been $795 less. Not providing ways for individuals to offer extra support when they have both the means and desire is so-called “leaving money on the table.” And when I see that during alpha dev it means “leaving features on the table, too” :P

cogmind_monthly_revenue_gross_1509-1612

Cogmind Monthly Revenue (Gross), 2015.9 -- 2016.12 (graph excludes initial 4-month period after first release due to distortion by outside factors)

While there are too many factors involved to draw sweeping conclusions, it’s probably safe to say that lowering the price in May didn’t hurt the bottom line. Compared to the period before, when the lowest price was $30, average monthly revenue rose 13.9% from $2,478 to to $2,823. The latter average excludes October, which was a weird month because it was Cogmind’s largest-ever update combined with a little surprise article from RPS. In fact, October, November, and January were three consecutive “largest ever” releases (January’s not quite done so I couldn’t include that data, but it looks like it could break $4k alone).

Actually, we can do better than this with a comparison of averages from just the few months before and after May. February through April (plus the first half of May) sales were showing clear signs of flagging (monthly average: $1,927), while in the four and a half months after adding the new tier (through September, before things started getting crazier) the average increased 45.3% to $2,799. Looking at it that way, the change had a larger impact than I’d realized! A more detailed look at the difference between the 15 days before and after May 19th is equally telling:

cogmind_daily_revenue_160505-160605

Cogmind Daily Revenue, May 5 -- June 5 (2016)

During the months leading into early May I was getting kinda worried because I’d definitely have to wrap up development more quickly if that trend kept up (see those two zero days?! Scary!). But the new price put alpha back on a healthier long-term feature-filled schedule. The one-year anniversary turned out to be an excellent opportunity used well.

Update 170614: For additional stats and analysis on how pricing and other factors affected sales, see my more recent Year 2 financial overview for Cogmind.

Changing Times

Indie devs in general tend to undervalue their games, though it’s nice to see that a growing number of devs aren’t afraid to charge a (minimally) decent price for paid roguelikes. Caves of Qud is only $9.99 for early access, but will reportedly rise to $14.99 at full release; both Ancient Domains of Mystery and Dungeonmans are $14.99; Jupiter Hell is aiming for $30-ish… It’s necessary if we want this quality and pace to be sustainable.

Those graphs and numbers look pretty, but they’re not much compared to the amount of hours and money that I put into development, or what I can make in another line of work (it’s also gross revenue, not net!). Other devs are in similar situations. The genre is relatively niche, after all, and based on publicly available Steam data the above released games only have somewhere around 20-25k players each, so it’s been heartening to see the core community repeatedly coming out in support of paid roguelikes over the past couple years.

Roguelikes especially, with near infinite replayability and near endless development cycles (those games have been putting out updates for years), are just the kind of high value-to-cost ratio games that both warrant and can benefit from higher prices in the long-term.

As for my own future plans for Cogmind pricing, 1.0 will be released at $19.99, with no plans to do any significant sales for a long while as I continue updating with extra features (I hear this echoed by several other devs as well). Of course once on Steam, players in certain regions will have access to lower regional prices. Steam changes a lot of things by introducing its own many variables, so it was interesting to be able to take this somewhat more “pure” look at revenue and pricing data before it gets that much more exposure.

 

Good Luck

To the devs reading this, do remember that every genregame is different, and there are other very different yet equally successful models out there, too. Dwarf Fortress, UnReal World, and Tales of Maj-Eyal, for example, are all widely-popular free roguelikes that exist on purely donation-based systems (with full-time devs!), or offer some extra perks to supporters. My pricing decisions came out of what I felt could work for Cogmind based on lots of research and also consideration of my personal circumstances and experiences.

Oh, and I’m sure there’s gotta be some luck in there, too ;)

Posted in Gamedev, Marketing | Tagged , , , , , | 12 Responses

Map Prefabs, in Depth

An increasingly common approach to roguelike map development today is to have content partially determined by so-called “prefabs,” with layouts which are hand-made rather than fully procedurally generated. Doing so gives a designer more control over the experience, or portions of it at least, without completely supplanting the advantages of roguelike unpredictability.

Prefabs are a great way to add more meaning to a map, which when otherwise generated purely procedurally and visited again and again by a determined YASD survivor is often going to end up feeling like “more of the same” without a little manual help to shake things up. Yes, even procedural maps get boring once players start to see through their patterns! Not to mention the general lack of anything that really stands out…

Background Reading

I’ve written and demonstrated a good bit about map generation before, including the basics of how I create prefabs for Cogmind, starting with essentially drawing them in REXPaint. This method is light years ahead of the old “draw ASCII in text files” method I was using with X@COM (now that I have REXPaint, I’m definitely going to have to go back and convert that system, that’s for sure!).

xcomrl_map_blueprints

Sample X@COM map prefab excerpt, typed! In text! The horror! (At least it used a little bit of syntax highlighting to help pick out important features…)

And once prefabs are created, one of the major challenges is how to actually get them into a procedural map. After all, they need to seem like they belong! Previously I demonstrated some methods for handling that part of the process in cave-style maps, namely geometric centering (sample) and wall embedding (sample). Read the full post regarding that style over at Generating and Populating Caves.

But most maps in Cogmind are not caves, instead falling under the room-and-corridor style. Naturally these other maps will require different methods for embedding prefabs, and below I’ll be sharing these methods in addition to a more detailed look at what Cogmind’s prefab definition files have evolved into over the years.

“Seeding” with Prefabs

One way to place prefabs is before map creation even begins, in fact shaping the initial generation itself. This approach is for prefabs that will help define the core feeling or difficulty of the map as a whole, thus it’s more suited to larger prefabs, or key points such as entrances and exits. It’s easier to control the absolute distance between these important locations by placing them first. So high-priority prefabs come first… that makes sense :).

As entrances and exits are essential features while also having a large impact on how a given map plays out, thus my maps are designed to place most of them first. Not all of them are handled as prefabs and are therefore beyond the scope of this article, but some special exits that require more flair, fluff, events, or other types of content use this “initial prefab” system. The first such example is found very early in the game in the form of the entrances from Materials floors into the Mines (admittedly one of the less interesting applications, but I don’t want to leak spoilers for later content).

Step 1 in the map generator is to go down a list of potential prefabs and configurations and put them on the map!

cogmind_materials_mapgen_static_features

Complete feature list for Materials-type maps.

cogmind_materials_mapgen_variant_3_phase_1

Sample step 1 (feature variant 3) as seen in the map generator for Materials.

In this case, as per the feature list the generator chose to go with variant #3, which calls for two BLOCKED barriers to prevent pathways from linking areas on either side of them, in addition to two top-side MAT_00_S_1_MIN prefabs, one to the west and one to the east. Looking at the relevant feature data (those last two lines), these prefab areas block all entity spawning within their area, and have ever so slightly variable coordinate offsets (some prefabs elsewhere make much greater use of this ability to shift around).

The MAT_00_MIN file stores the data that allows the engine to decipher what objects are referenced within the prefab:

cogmind_materials_mapgen_mines_entrance_prefab_data

Data references shared by all Mine entrances.

And “MAT_00_S_1_MIN” refers to the file storing the layout itself:

cogmind_materials_mapgen_mines_entrance_prefab

Mines entrance MAT_00_S_1_MIN prefab layout, as seen in REXPaint. (This is a multilayered image, so here you can’t see the complete machine hidden under the ‘A’s.)

The southern edge calls for a tunneler (width = 3, the yellow number) to start digging its way south to link up with the rest of the map (when its generation proper begins), while both the left and right sides are tunnellable earth in case later pathways are dug out from elsewhere on the map that would like to link up here. Those are simply other possibilities, though--the only guaranteed access will be from the southern side.

cogmind_materials_mapgen_variant_3_final

Final map after all steps concluded, incorporating Mine entrances placed first.

Other common candidates for initial prefabs are huge semi-static areas, sometimes as large as 25×25 or even 100×100, which play an important role on that map either for plot or mechanics purposes.

cogmind_mapgen_large_prefabs

A portion of map generated with two large prefabs (highlighted) that were placed first.

The next method is a bit more complicated…

Embedding Prefabs

Most of the prefabs in Cogmind are not applied until after the initial phases of map generation are complete. Therefore all the rooms and corridors are already there and I had to determine the most flexible approaches for adding this type of content to a map without screwing up either the prefabs or map itself.

Before going any further, though, we have to decide which prefabs to add in the first place, a decision naturally affected by the theme, depth, and other various factors associated with the map in question. That process is handled via the “encounter system” I initially described in this blog post (half-way down), but I never got into the technical side of how those encounters are selected, or how those with prefabs are actually merged with the map, which is relevant here. (*Clarification: An “encounter” refers hand-made content which may be loot, enemies, friends, or basically anything, sometimes combined with procedural elements, and sometimes but not always associated with one or more prefabs.)

In general, while there are a few types of encounters that appear across multiple maps, like rooms full of debris, each type of map has its own pool of potential unique encounters. And then there are multiple base criteria that may or may not be applicable in determining whether a given encounter is chosen:

  • Depth limits: An encounter may only be allowed within a certain depth range. (I’ve actually never used this limitation because maps containing encounters generally only appear at one or two different depths anyway.)
  • Count limits: An encounter may be allowed to appear any number of times, or up to a maximum number of times in a single map, or up to a maximum number number of times in the entire world (only once in the case of true unique encounters such as with a named or otherwise NPC with very specific behavior).
  • Mutual exclusivity limits: Some encounters may not be allowed to appear in the same map as others. These will be marked as belonging to a certain group, and exclude all others once one is chosen.
  • Access limits: Encounters can require that they only be placed in a room connected to a certain number of doors/corridors. It is common to restrict this to 1 for better prefab layout control (i.e. knowing which direction from which the player will enter makes it easier to design certain prefabs).

Encounters are also not given equal weight--some are common while others are quite rare. I use words/strings to assign encounter weights in the data, because they are easier than numbers to read and compare, and can be more quickly tweaked across the board if necessary (by changing their underlying values).

cogmind_encounter_weights

Encounter weight value ranges (source).

 

cogmind_encounter_weights_data_matrix_excerpt

Encounter weight values (data excerpt), where each column is a different map, and each row is a different encounter.

So you’ve got some prefabs chosen and a map that looks like this:

cogmind_mapgen_storage

Completed room-and-corridor map generation, sample 1.

Or this:

cogmind_mapgen

Completed room-and-corridor map generation, sample 2.

Or something else with rooms and corridors. How do we match encounters with rooms and actually embed prefabs in there?

Unlike “seeding prefabs” described earlier, these “room-based prefabs” actually come in a few different varieties, but all share the characteristic that they are placed in what are initially rooms, as defined by the map generator. Of course the map generator must know where it placed all the rooms and their doors in the first place, info which has all kinds of useful applications even beyond just prefabs. Can’t very well place prefabs without some likely target areas to check!

The most common prefab variety is the “enclosed room” category. A random available room is selected, then compared against the size of each possible prefab for the current encounter. (A single encounter may have multiple alternative prefabs of different dimensions, and as long as one or more will fit the current room then oversized options are simply ignored.) In order for a rectangular prefab to fit the target room it may also be rotated, which doubles as a way to provide additional variety in the results. And yet another way to expand the possibility space here is to randomly flip the prefab horizontally. (Flipping vertically is the same thing as a horizontal flip followed by 180-degree rotation, so kinda pointless :P)

cogmind_room_prefab_embedded_process

Steps to place an enclosed room prefab.

  1. Find a room that’s large enough to hold the desired encounter/prefab.
  2. Find a target rectangle which borders the doorway. (The horizontal axis is randomized to anywhere that will allow the door to be along the prefab’s bottom edge. Prefabs are always drawn to face “south” by default, to establish a common baseline from which to shift, rotate, and flip them. And those with a single-door restriction are always rotated so that their bottom edge faces the door, whichever side of the room its on. This makes designing the experience much easier since you always know which direction from which the player will enter this type of prefab.)
  3. Prefab dimensions will generally not precisely match those of the room in which they’re placed, therefore the surplus room area is usually filled in with earth and the walls are rebuilt along the new inner edge (though the room resizing is optional--it can be left as extra open space).
  4. Place the prefab and its objects, done! (rotated example shown on the right)

There are some further customization options as well. Doors can be expanded to multi-cell doors, like for special rooms that want to be noticeable as such from the outside (as a suggestive indicator to the player). Or the door(s) can be removed to simply leave an open entryway.

cogmind_room_prefab_embedded_process_modifications

Variations on the above room prefab via post-placement modifications.

The third form shown below takes the modifications a step further by removing the door and entire front wall to completely open the room to the corridor outside, creating a sort of “cubby” with the prefab contents.

cogmind_room_prefab_embedded_process_cubby

Front wall removed for cubby variant.

Storage depots found in Cogmind’s earliest floors use the “cubby room” design. The reason there is it makes them easy to spot and differentiate from afar, which helps since the point is to enable players to expand their inventory if necessary for their strategy.

cogmind_materials_storage_depot

Storage depot prefab as seen embedded in a Cogmind map.

Another “accessible room” variety is essentially like an enclosed room, but the prefab is designed to allow for maximum flexibility and access rather than expecting the room to be shrunk down to its size and new walls created. These prefabs usually don’t have internal walls and instead just become decoration/contents for an existing room without changing its structure. While it may end up in a room larger than itself and therefore have extra open space, including these types of prefabs is necessary to fill parts of the map containing rooms with multiple entry points where rooms with obstructions and walls wouldn’t do because they could illogically block off some of those paths. For the same reason, accessible room prefabs must leave all of their edges open for movement (though may contain objects that do not block movement).

cogmind_room_prefab_embedded_process_rotated

Steps to place an accessible room prefab.

  1. Find a room that’s large enough to hold the desired encounter/prefab (any number of access points is valid).
  2. Position the target rectangle anywhere in the room (random).
  3. Place the prefab and its objects, done!

The primary drawback of using the encounter system to place encounters in randomly selected rooms is that there is no control over relative positioning of different encounters. While it’s possible to add further restrictions or tweaks to guide placement on a macro scale, it seems to work out okay as is. The existing system does, however, also sometimes result in suboptimal placement of encounters, i.e. a smarter system could fit more into a given area, or better rearrange those that it did place to maximize available play space. But these effects are only apparent on the design side--the player won’t notice any of this.

An alternative would be to use a room-first approach, choosing a room and then finding an encounter that fits, but in my case I wanted to prioritize encounters themselves, which are the more important factor when it comes to game balance.

cogmind_tunnel_map_encounters

Post-mapgen prefabs placed in a map, highlighted by category for debugging.

So overall my prefab solution is a combination of external text files and binary image files, processed by about 3,000 lines of code.

Inside a Prefab

So far we’ve seen how prefabs fit into the bigger picture, but another equally important aspect is what goes into a prefab itself. Each prefab must have an associated definition file (sometimes shared by multiple prefabs if they have similar contents), which is a simple text file that describes the objects found in the prefab.

My first ever prefab article (linked earlier), written two and half years ago (!), appeared before even any prefabs had been used in Cogmind. As you can guess, things have evolved since then, getting a lot more versatile and powerful as new features were added to meet new needs throughout alpha development. Here I’ll give a general rundown of those features, to give a better idea of how they work.

At the most basic level, a definition file is simply a list explaining what object each ASCII character in the prefab represents. After placing the initial prefab terrain--walls/doors/etc, the generator consults the corresponding definition file and creates those objects at the specified positions. Reference characters are written to the prefab image’s fourth layer as part of the design process (they can be any color, but I always use green for consistency).

cogmind_garrison_prefab_sample

Sample prefab layout image (draw in REXPaint and stored as a compressed .xp file). Green letters and numbers all exist on the highest layer (layer 4) and refer to objects. This particular prefab represents one quarter of a garrison interior, which are built entirely from a large selection of prefabs.

In a definition file, each line corresponds to a reference, of which there are five types:

cogmind_prefab_definition_object_types

Prefab definition object types.

For consistency and to aid readability of prefabs when creating/editing them, I always use upper case letters for props and traps (the latter actually being a subset of the former), lower case letters for entities (robots/mobs), numbers for items, and punctuation for debris (of which only one reference is actually necessary, because the actual appearance is determined by the engine).

Note that a “tag” is the internal name for an object, which may not always match the name the player sees, to enable objects that appear the same but are actually different for whatever reason.

The above basic info, a character plus the object’s [TYPE] and [TAG], are the only required data for a given object, but most objects will be followed by additional data keywords that describe the object in more detail (overriding otherwise default behaviors). The set of applicable keywords is generally different for each type of object, though any reference can specify the [SHIFT] keyword, which instructs the prefab to randomly shift that object within a certain area, (+/-x, +/-y), so that it doesn’t always appear in the same place.

cogmind_prefab_definition_keyword_samples

Sample prefab keywords used to expand on different object definitions. Custom syntax highlighting helps parse the file when editing.

Items and entities specifically have more options for their [TAG] value. Quite often it’s desirable to select one from among multiple potential types, a feature supported by additional syntax and keywords.

cogmind_prefab_definition_syntax_randomization_entities

Randomizing entities in prefabs.

The first example demonstrates how it’s possible to designate any number of entities from which to randomly select, in that case a G-34 and G-47.

The second example, on the other hand, simply specifies an entity class, and the game will select an entity appropriate for the depth at which the prefab is placed. This is useful for prefabs used across multiple depths, and has the added benefit that any changes to object names (and other values!) do not force reconsideration of existing prefabs. For the same reason, hard-scripting specific object names is avoided where possible.

The third example simply demonstrates random selection between different classes works, too.

Designating a class instead of a specific name may also call for additional keywords (optional), where [CATEGORY] suggests which category to select an entity variant from, where a single class may belong to more than one entity category, [STRONG] tells whether to select an entity that is one level stronger than the current depth, and [FALLBACK] tells the engine to fall back on the weakest variant when technically no variant of the desired class exists at or below the current depth.

cogmind_prefab_definition_syntax_randomization_items

Randomizing items in prefabs.

Items (and traps, actually) often do the same thing, and can range from extremely specific (Ex 1) to extremely vague (Ex 4). Ex 2 demonstrates just a sampling of the available categories to select from, as away of narrowing down the selection pool--important for balance and controlling the experience! And Ex 3 is a pretty situational one, randomly selecting an item that would normally be equipped by the entity in parenthesis, to allow for thematic loot (the scene of a specific battle, for example).

Where no specific tag is given, the [PROTOTYPE] keyword suggests that the item should be chosen from among prototypes (a better type of item) than common items, [NEVERFAULTY] designates that a chosen prototype should never be a faulty version, and [RATING]+X can be used to have the map generator attempt to choose an “out of depth” item instead (where X is the number of levels higher than the current one to choose from).

The theme of non-static prefab data is an important one, as it’s a relatively cheap way to make even handcrafted content stay fresh despite repeated exposure. To take this theme even further, individual keywords can be modified by various prefixes with different effects:

cogmind_prefab_definition_syntax_randomization_keywords

Prefab keyword randomization modifiers. These can be applied to any data keyword for any object.

For larger scale randomization we also have two available columns at the beginning of each line (excluded from all of the above samples):

cogmind_prefab_definition_syntax_randomization

Prefab generic randomization capabilities and syntax.

Despite the appeal of randomization, it is often desired that multiple entities or items placed near each other in a prefab should be of the same type, even when randomly selected. Thus by default whenever the object for a reference character was chosen randomly, any cardinally adjacent matching characters will automatically use the same object type (extending as far as necessary in a chain). Where there is a need to allow adjacent objects (even those with matching characters) to be different from one another, the [UNIQUE] keyword can be used to explicitly force that.

Some Statistics

As of today Cogmind contains…

  • 148 base types of encounters, 115 of which use prefabs
  • 372 prefabs in all (much higher than the number of encounters because some have multiple prefabs, and as explained before not all prefabs are associated specifically with encounters)
  • The largest prefab is 100×90
  • The smallest is 3×2 :P (mostly a mechanical thing)
  • The average is 7×7
  • The single encounter with the greatest variety of unique prefabs has 12 to choose from

In total, 25% of encounters are categorized as “fluff,” 15% as “risk vs. reward,” 14% as “danger,” and 46% as “rewards.”

Posted in Design, Dev Series: Procedural Maps | Tagged , , , , , | Leave a comment