Skip to content

Endless Sky's Vision

Amazinite edited this page Apr 29, 2024 · 1 revision

The purpose of this page is to provide a reference for the principles that have guided Endless Sky development to date; in other words, its vision. It can be seen as something of an expanded Style Goals page. This page will be added to as time moves on in order to stay up-to-date with adjustments to the game and discussions among developers and contributors.

What type of game is Endless Sky?

Endless Sky is a 2D spaceship game inspired by the Escape Velocity series. However, this is not the same thing as saying that Endless Sky is a remake or modernization of the series. It is not trying to exactly reproduce EV or any other games it may take inspiration from or be similar to. While there may be some common elements, Endless Sky is its own take on its genre, and isn’t an attempt to mix every mechanic, gameplay element, or story from other titles.

What stage of development is Endless Sky in?

The nature of Endless Sky’s development means that a truly “finished product” is far, far in the future. While we will eventually have a 1.0.0 release, that will not mark the end of the game’s development, as the main plan for that release is simply to have each of the three main human campaigns completed; the game’s universe will still have plenty more to offer after that.

This has led some to question how exactly we would describe the game’s current stage of development. Are we in an alpha stage? A beta stage? What would it even entail for us to say that we’re in an alpha or beta stage?

Given that Endless Sky is a game that has been built up over many years and will continue to be developed for many more, using terms like alpha or beta to describe the game’s current state of development don’t really seem to fit. Endless Sky is far more akin to a game like Minecraft. Minecraft left its beta stage many years ago, but has still continued to receive updates ever since, some which have resulted in sweeping changes to the game (e.g. 1.9 completely overhauling combat). At the same time, the flavor and essence of Minecraft has been preserved throughout its development; that is to say, what it means for Minecraft to be Minecraft was decided long ago, and updates to the game have added to the original essence of Minecraft rather than turning it into something entirely new.

In a similar fashion, Endless Sky can be said to have left its beta years ago, as the foundations of what makes the game what it is have been decided and completed for some time now, but we have still continued to provide updates to the game, some of which have contained sweeping changes to major aspects of the game.

While the nature of the game’s development does mean that sweeping changes could be made to the game, we must maintain moderation in how we go about making such changes. Any sweeping changes to the game must only be made after heavy consideration, discussion, and testing. Such changes should be the exception, not the rule. We should not expect that large swathes of the game will be completely redone, especially for a purpose such as fitting new content into the game. Similarly, content should not be made with the expectation that it will be completely overhauled or entirely replaced later. It should still be complete, but may need tweaks later down the road as we slowly add more to the game. This goes for both writing and game balance.

Consistency and Cohesion

An important part of Endless Sky’s vision is consistency and cohesion throughout the game. While we have a focus on storytelling and differences between perspectives, there is an overall style in which storytelling is done, as well as how technology is balanced across the board. These come down to a few different details.

Endless Sky has a variety of factions and different stories, and that will only continue to grow over time. In order to make story-telling more focused and less difficult to maintain, there should be only so many tie-ins between different factions and stories in the galaxy. For example, each faction in the game should only have so many major story ties to other factions in the game, about three or four, with the exception of the Pug, Drak, and Quarg, which can have their fingers everywhere, and humanity, given that the player is a human. Each major storyline should also only have so much branching in it, and/or the branching should not result in extremely disparate results if the expectation is that other storylines will follow on from the consequences of the prior storyline. By keeping the number of factions or branches for stories from a particular faction to interact with low, we reduce the complexity and number of considerations of storylines that rely on other content in the game while still having enough to make the content interesting.

Story content should make sense within Endless Sky’s universe and timeline. While the player can play the game for an indefinite amount of time, a majority of campaign content occurs over the span of a few years. The amount of technological progression a group experiences on the timescale the player interacts with them for, over the course of a story or campaign, should not rival the technological progression other groups achieve in longer timescales. It has been established in-game that most factions progress their tech level over the course of thousands of years; a campaign that takes place over the spawn of two years should not result in a faction multiplying its technological capabilities.

Another aspect of maintaining a consistent game is having a cohesive balancing sandbox. Each faction of the game should have a range of capabilities that the faction stays within, with few exceptions, for the duration of the game’s story. The game’s “tech ladder” is more a result of the player accessing new factions with new technology that can be an upgrade to previously obtained tech or which can be combined with tech from other factions to provide interesting results, rather than each individual faction becoming considerably more powerful than its starting point.

All of the above are important to the game’s consistency. There isn’t a strict priority to one aspect over another. Rather, priority is dependent on a given area of the game or what is currently the focus of development.

Why limit the scope of Endless Sky?

Following the above, why have limits to the game’s development? If we were to adopt every idea that’s been suggested, the game would balloon very quickly. It would be trying to do too many things at once and become difficult to maintain. This is generally known as scope or feature creep. We’d rather make a game that is good at a handful of things rather than a game that does a lot of things okay.

Having limits for Endless Sky allows the developers, as well as contributors to the game, to focus on the parts of the game we want to improve instead of trying to add never-ending amounts of new features or mechanics for the sake of variety. We’d rather have a group of people working together to make one part of Endless Sky the best it can be than each individual in a group trying to create features that pull the game and developer attention in different directions. Endless Sky shouldn’t try to be every game in one. This leads to vanilla having a soft-yet-defined scope that we can easily work with and fine-tune within itself. Ultimately, we want the game’s content to be deep, not shallow.

Plug-ins are the best source for expanding the scope of Endless Sky, and have always been one of its most important features. They should be seen as a way to extend Endless Sky’s vanilla, as well as an opportunity to do anything with it that doesn’t necessarily fit within the vision of the game. The same can be said for coding and Repository Forks for changing Endless Sky and its code as a whole. While not everything that everyone has come up with can be added to vanilla, there are unlimited possibilities with plug-ins and forks.

Gameplay Design

A frequent topic among contributors has been that of gameplay vs realism. A problem with these discussions is that realism is a very loaded term. At the end of the day, though, the very nature of a video game means that it cannot be “realistic.” Therefore, what is important for a game is not realism, but a sense of immersion or authenticity. The design of the game creates a framework for what is considered realistic within the game’s universe. Any changes and additions to the game must then be consistent with this framework in order to maintain a sense of immersion/authenticity.

For example, adding a weapon that is powered by an unknown energy from an alternative plane of existence to the game is not “realistic,” as no such alternative plane of existence is known to exist, but it is “realistic” (i.e. authentic) within Endless Sky’s story for such a weapon to exist given that the Warp and Weft are two different planes of existence within the game’s story. But if such a weapon were to be developed by humanity while being completely unknown/undiscovered by the rest of the factions in the game then that would be inauthentic/immersion breaking, as humanity is much lower technologically than most of the factions in the game; for such a weapon to authentically exist within the game, it must come from one of the most technologically advanced factions in the game, as it is a highly advanced weapon.

Given that “realism” isn’t a goal, the game’s design contains many things which can be explained as gameplay contrivances: mechanics which clearly aren’t realistic but which exist to make for a better experience. For example, hiring crew can be done on any inhabited planet in the game, even if that planet is inhabited by aliens. This avoids situations where your ship may be under-crewed and you’d have to travel all the way back to human space, or some other faction willing to crew your ship, if you weren’t able to hire crew anywhere, which would be a frustrating experience. Similarly, there are some aspects of the game which are intentionally shallow. The game’s economy is one such aspect. Credits are a (currently) unexplained universal currency that you can use with anyone, the prices of outfits and ships never fluctuate, and the commodity trading system is the closest thing we have to an economic system in the game, with even that not being very complex. Another shallow aspect of the game is boarding combat, which is a very simple “mini-game” where you either choose to attack or defend and basically boils down to rolling dice against your opponent to see who gets the higher number. These gameplay aspects are intentionally shallow because they are not the game’s primary focus. The primary/main focus of the game is what is literally called the MainPanel in the game’s code: the area of the game in which you are flying your ship and spending most of your time. All other areas of the game should serve to improve or add to the experience in the MainPanel, not try to detract from it or overshadow it by being more complex, as the MainPanel is in a sense what Endless Sky gameplay is.

The game is also intended to be actively engaged with. While we will add quality of life features to improve areas of the game that players may find frustrating, we should avoid adding features which effectively serve to automate gameplay. Examples include having the player’s fleet automatically mine asteroids without the player’s input, or being able to order your escorts to run trade routes where they automatically buy and sell goods to gain you passive income. We do not want to turn Endless Sky into an idle game, as that is not what it is intended to be.

Combat missions are designed with the expectation that they can be completed by a sufficiently experienced player in a single ship of comparable strength to the opponents and to what the player is expected to have at that point in the story. For example, a player is expected to enter the Free Worlds campaign with a light warship or a lower-end medium warship, and gradually upgrade over the course of the story until obtaining a Dreadnought. As such, the combat difficulty of the missions also ramps up over the course of the story. It may not be the case that every player can beat every combat mission with a single ship, though. In such cases, the player is capable of purchasing more ships to form a small fleet. Increasing the size of your fleet should be seen as a means for the player to reduce the difficulty they have with combat missions. This then allows completing combat missions with a smaller and smaller fleet as well as weaker and weaker ships to be used as a gauge of experience for players who seek to improve their combat prowess. The player may also obtain a larger fleet throughout the game which can be used to trivialize all combat missions, but the game is not designed with the expectation that the player will do this, and the story may seem incongruous if a player chooses to do so.

While system “sizes” may vary, largely influenced by the system’s arrival distance and to a lesser extent the distance of the outermost object in the system, most interactions in systems are within a concentrated enough area that they can fit within the player’s screen (zoom level depending). This creates a degree of predictability for the player; if everything can fit on the player’s screen, then they won’t be blindsided by an opponent that could potentially be far off the screen bombarding them from afar. Having smaller systems also minimizes travel times within a system, as systems are not intended to take a considerable amount of time to traverse.

The game is set in a time period after which humanity has already explored a vast majority of the space available to them via hyperdrive. This means that every planet that can be inhabited has been inhabited. This creates a large amount of connectivity between inhabited systems that allows for ease of travel and content progression throughout the early game. While a few uninhabited systems exist in human space, these are intended to be few and far between to give the sense that humanity has already discovered and explored everything they can, with the few exceptions being on the outer reaches of humanity’s territory caused by extenuating circumstances (e.g. heavy piracy, aliens). This may also create a sense that the hyperspace lanes are artificially constructed, as there are undoubtedly countless uninhabitable systems between the ones that we can access. Gameplay-wise, adding a wealth of uninhabited systems would only serve to increase danger and travel times between points of interest, but these can be achieved through other means which wouldn’t require adding new systems (e.g. spawning hostile fleets, adding mechanics to slow down jumps between systems).

Technological/mechanical variance, advancement, and complexity is progressively introduced to the player throughout the game as they explore. Human space is intended to be a comparatively simple experience that gets the player acquainted with the basic mechanics of the game. This is why human space contains few special damage types. As the game progresses and the player is introduced to more factions, the player will also be introduced to more complex gameplay mechanics, from new damage types such as the Hai’s ion weapons or the Korath’s disruption and slowing weapons to the environmental hazards of the Ember Waste. As new gameplay mechanics are introduced, particularly with respect to weapon, outfit, ship, and system mechanics, we prefer to “save” such mechanics for alien factions outside of human space. This way the player is eased into these new interactions rather than dumping too much on them in the early sections of the game. Additionally, no one faction should be overly saturated with gameplay mechanics. For example, no one faction should have every single damage type in the game. This way, different factions can have mechanics or combinations of mechanics which are unique to them, creating for more interesting and varied gameplay, either through changing up how the player may approach different factions in combat or by allowing the player to mix and match technology from different factions to create new interactions that aren’t seen in any existing factions.

Not all content in the game is expected to be relevant to the player at all times. For example, when the player reaches the Coalition, their technology may be entirely useless to the player if they have already obtained a powerful T2 fleet. It may be a different case though if the player reaches the Coalition rather early on when they still only have a single human ship. Having content which can differ in relevance, or even difficulty, to the player depending on their level of achievement on their current save file is intended to promote replayability.

There is a sense in which Endless Sky can be split into two parts. There is Endless Sky the vanilla game, a story about humanity in the 31st century in a galaxy filled with alien species, and there is Endless Sky the engine, which all the content/data runs on. While we do add features to the engine that may not be used in the vanilla game (therefore meaning they will only be used in plugins), the primary intention of the game’s development at the moment is to focus on the vanilla experience. To this end, we will tend to avoid adding gameplay mechanics to the engine which we do not see being used in the vanilla experience, particularly if those mechanics are complex and not simple extensions of existing mechanics.

Story-Telling Style

The game is intended to be an open world for the player to explore. We want to build a universe that feels “lived in,” like it contains actual people going about their lives irrespective of what the player is doing. To this end, the game’s story, as well as other aspects of the game, should not be overly hand-holdy. The player isn’t given markers telling them where new missions are available, nor does every quest tell you exactly what reward you’ll get at the end of it, those being two gameplay mechanics you might find in an RPG or other games. You’re instead expected to explore the world, find missions for yourself, discover for yourself what rewards they bring, and gain an understanding of the story and the game through natural means.

We should strive to have characters that speak and react like real people, not NPCs trying to make sure you understand a gameplay mechanic or explain gameplay mechanics to you as if they were actual aspects of the world. For example, we shouldn’t have characters explaining why ships have drag or why the player can’t start their own business, as these are clearly gameplay mechanics or things that are outside of the scope of the game.

While humanity has discovered everything within its reach, the player’s map is still unexplored at the start of the game in order to give them a sense of exploration. This is also an aspect of the “anti-hand holding” nature of the game. While there have been requests to give human space more exploration of the unknown and undiscovered to wider humanity, this is the intention of the alien regions outside of human space. Humanity has discovered nearly everything within its reach; it’s up to you to discover what lies beyond that.

Endless Sky’s story does not necessarily revolve around the player character. The player may be involved in pivotal events, but their involvement is not entirely what makes them pivotal. Similarly, there is nothing special about the player that is required for the story. There must be a balance between the player not being the galaxy’s protagonist but the game being player-centric for the sake of gameplay. To accomplish this, the player should be viewed as just enough to sway given situations, but not more powerful than the situations themselves. The player’s contributions might sway the finer details of story events, but not whether the events happened at all. Practically, this eases the creation of various parallel campaigns and ease of creating new campaigns that rely on the events of previous ones.

The lowest level of interaction in normal gameplay is at the planetary level. As a result, planets in both the in-game story and lore function similarly to cities, having one major industry and a handful of local traditions, with interplanetary travel being a triviality. This is useful for both gameplay and story reasons.

  • In gameplay, traveling from system to system is the core of the gameplay loop, and attempting to have a lot happen on a single planet tends to lead to boring text walls.
  • In story, giving each planet a gimmick makes both the planet itself and the missions associated with it more memorable to players. This doesn’t mean that planets can’t have diversity, but the diversity of a planet should be linked to what makes that planet unique. (e.g. a farmer on a Paradise World wouldn’t just act like a farmer on a Dirt Belt planet, because that farmer just happens to be one of the “poorer” ones.)

It's all too common in science fiction to have the central conflict defined in very black and white terms: the noble Rebel Alliance against the evil Galactic Empire. The world of Endless Sky is nuanced, with no “correct” path. Any faction you join should feel like the good guys at first: noble goals, interesting people, etc. But as you continue to play, each faction should also have clear faults. And as the war gets more and more brutal, NPCs should be ambivalent about fighting and more worried about the destruction the war is causing on all sides.

  • Whatever faction you side with in any conflict should have a convincing narrative for why they are the "good guys'' and their enemies are the "bad guys." So, the Free Worlds see the Republic as a decadent, corrupt government that only caters to the needs of the rich. The Republic sees the Free Worlds as a communist oligarchy masquerading as a democracy and feeding on poor people's anger. The Free Worlds see the Syndicate as a bunch of heartless, godless capitalists. And so on.
  • Even when it comes to the most advanced species, there are plausible narratives for them being benevolent, or not.

Game Balance

While game balance is always changing with the game’s development, there are foundations for what each aspect should be based upon.

Technology Level between factions in the game is based around a tier system. This roughly is based on a faction’s overall given combat capability, however it is not a direct comparison of each aspect (health, damage, speed, etc.). Some factions may have stronger assets than others, while some may have strictly stronger or weaker assets. The important part is that tech balance is appropriate within the game’s progression, and there are appropriate distinctions between each tier.

Light Warship of one faction should be around the strength of the Heavy Warship of another faction one tier lower. This can vary slightly, but there should not be direct comparable strengths of ships between factions a tier or more apart from one another. Because outfits are more varying and directly impact a ship’s strength, the offset of strength vs. drawback is slightly different here.

In consideration of Outfit Balance, it is important that a given outfit or ship shouldn’t be balanced solely on one value - for example, a weapon shouldn’t be strictly balanced around its damage. If a faction has a strong weapon over another faction that’s a tier higher than it, that is cause for concern. However, if this weapon has an extreme drawback in another area, say energy costs, then it is more acceptable (of course, with some give or take).

In regards to Ship Balance, outfit space is a means to obtain useful benefits through the installation of outfits. Given how outfits work mechanically, ships may also have built-in attributes that function similarly to outfits. Given that these built-in attributes don’t inherently come with downsides like an outfit does (outfits at the very least take outfit space), downsides must be created in other areas. If the built-in attributes of a ship were to be converted to some equivalent amount of outfit space that would be used to get that benefit, then the combination of this value and the ship’s outfit space should not greatly exceed the capability of similarly-sized ships in the same tier with no built-in attributes.

Across the entire game, we want to avoid particular ships or outfits which are “no-brainer” picks; if we have 100 ships but only 3 of them are actually worth using, then there’s a considerable amount of wasted potential in the game. This isn’t to say, though, that all ships or outfits will always be viable, as the idea of a tech ladder necessitates that some items will become less viable as the player progresses.

Some missions may give the player Unique Rewards, such as unique ships and outfits. While unique rewards may be powerful in some regards, they should be balanced in a way that doesn’t trivialize gameplay. The goal of missions is to tell a story, not give tools to take over the rest of the game.

NPC Fleet Battles the player participates in should be balanced to require their participation. How much participation depends on where in the story the battle takes place. For example, battles early in the main campaign may only require the player to provide some anti-missile support. Whereas, in battles towards the end of the campaign, the player is expected to do a much larger proportion of the work. Without the player, an early battle may only barely be lost, but a later battle may be entirely hopeless.

The relative payoff of Cargo Hauling vs. other activities is already pretty finely tuned. In terms of how much of the player's time it takes vs. how much it pays off, the exponential star barge strategy is still a quite competitive way to make money - the only reason more people don't do it is that it's boring compared to capturing ships. As for small vs. large ships, you can't reasonably expect a ship that costs 0.5M to be able to do much against a ship that costs 25M credits. Again, the ship prices have been very carefully balanced. If you want a small ship that can stand up to capital ships, you need a Korath fighter or a Wanderer ship.

Currently, we are in the middle of deciding on where exactly to go with Capture Balance, but the general gist is that capturing has always been a very strong way of progressing through the game, both economically and combat-wise. We want to avoid an easy capture ladder up through the tiers, though, and there are a few notable ships in the game that are quite strong at capturing. Instead of adjusting the individual ships, we’d like to take a deeper look into capturing itself, which will be saved for future documentation.

Anything could be re-balanced at any time to adjust around shifts in content, tech, other overall changes, or inconsistencies with other data. Everything within the game is subject to balance regardless of whether or not it already exists/has been committed into the game in order to keep things consistent. These kinds of adjustments are natural, healthy for game development, don’t take much time, and can always be (and very likely will be) looked at again in the future.

Visual Design

There is a balance between “rule of cool” and “consistent visuals.” Visual Consistency is the most important aspect of the game’s visual design. Just because something looks cool to some, or even most, doesn’t mean it’s appropriate for the game. There are thematic consistencies between certain types of designs: industrial, organic, alien, human, etc. These are all considered when creating artwork for existing content, or for creating artwork in addition to it. Not only are these comparisons important to keep in mind, but so are comparisons with the environments the visuals are found in, as a majority of the game’s visuals are displayed against dark backgrounds. Part of being consistent is also keeping to the scale defined by visuals that already exist within the game, e.g. the size of planets, stars, and ships.

Most of Endless Sky’s sprites are 3D models rendered from a top-down view with fixed lighting, displayed in 2D. Textures may be done in post-production or within the model’s file itself. This type of approach to sprites allows for a lower bar of entry for aspiring creators as well as limits system performance impacts.

Sprites (mainly ships, weapon effects, engine effects, system objects, etc.) are made based on the max zoomed-in level of the game. In terms of detail level, smaller ships or objects should have the least amount of detail, while larger items should have some increasing amount of detail, be it greebles, texturing, shape complexity, etc. In either case, these details should be readable at the highest zoom and avoid blurriness, overlapping, or poor lighting (either too dark or too bright). In tandem with the introduction of a zoom level outward, ships and especially weapon graphics should still be readable to some extent at the lowest zoom; if something isn’t showing up well in either minimum or maximum zoom, it should be adjusted for better readability.

The goal for the User Interface is to be as minimalist and distraction-free as possible, yet at the same time to look futuristic and to hint at an underlying complexity. The chief inspiration was the heads-up-display used in the Iron Man movies. The UI is nearly all monochrome except for certain key pieces of information. This meshes well with the human ships (which are also mostly monochrome plus colored fins for identification). But, if you look closely, there are small graphical frills in nearly all the UI panels. These include sets of parallel lines intended to look like circuit traces, tiny, faint text and numerals, and various other geometric shapes intended to be the heads-up-display equivalent of the needlessly complex gears and other mechanisms found in steampunk art.

A large portion of the interface is going to be focused around what is easily accessible on the screen. We would want to avoid elements such as drop-down or multi-nested menus, as well as avoid adding new features that would necessitate complicating these menus. For example, the game isn’t expecting you to have an enormous fleet list of 100+ ships, so we wouldn’t design the UI around that.

Visuals on the Galaxy Map consist mainly of grays, with hollow circles representing systems and lines representing hyperlinks. It is intended to be easy to navigate and simple in appearance with readability being important—overlapping and hard to read text is to be avoided. The map is intended to provide an overview of information on systems and planets, however it is not intended to be a substitute for gameplay—it shouldn’t give all of the game’s information at once (visuals and details), so that there is still purpose in actively visiting systems outside of combat. For a list of design guidelines regarding visuals, see the Quality Checklist on our wiki. For a list of other style goals, see the Style Goals page.

Usage of AI Generated Content

AI-generated/assisted content is forbidden in Endless Sky development. We have a large base of contributors, reviewers, creators, and developers that would love to spend the time to create unique assets for the game rather than us generating everything through the ease of AI. Not only that, but the extensively moral gray ground of AI and copyright legality is something we wish to avoid. This is largely agreed upon by a large majority of creators, and goes for both graphics and written content.

Plenty of our contributors are more than happy to assist in artwork or writing creation if help is desired. Having suggestions or thoughts from others in the community is much more healthy and naturally gravitates towards the game’s vision compared to outsourced AI-generated assets.

Quotes

“If you want to play XCom, play XCom. If you want to play FTL, play FTL. If you want to play a 4x game, play a 4x game.” - Michael Zahniser

“A game for everyone is a game for no one.” - Arrowhead Game Studios

Clone this wiki locally