This repository was archived by the owner on Nov 22, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 36
Graphics and audio docs #172
Draft
wallamide
wants to merge
48
commits into
Leafwing-Studios:main
Choose a base branch
from
wallamide:graphics-and-audio-docs
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Changes from 45 commits
Commits
Show all changes
48 commits
Select commit
Hold shift + click to select a range
675c3d5
add debugging graphics to a debug_tools crate
0fc2395
add ui folder to prepare for ui
51633e9
Add planning docs as md files
b72eed5
clean up
6d9184f
accidental addition of planning docs fix
wallamide 56904cf
updates to debug_ui to attempt toggling ui
f822d42
include updated controls
55c0b42
update to bevy 0.9.1 and fix deps
db31b63
fix deps for lib and debug, clean up debug lib
e2b7c81
add basis for console commands
1e7d860
update console.rs
3adb2c7
fix deps
a89908f
finish fixing up debug_tools
727bbd1
get inspector working again
0973b79
rename debug to debug_tools
c456445
fix deps for debug_tools
7c09abc
add .cargo to gitignore
1deff5b
updated fps info toggle code and ran clippy
4b7a195
rename bools to debug_info for clarity
wallamide 863e784
Simplify debug_ui infotext logic
wallamide 013fd07
fix tools/debug_tools/src/lib.rs formatting
wallamide c483ee8
Update tools/debug_tools/src/debug_ui.rs
wallamide 440c4fc
update with revisions for pr
a9ac17f
Merge branch 'main' of https://github.com/wallamide/Emergence
d399663
fix naming and logic for toggling fps info
6977035
fix todo in `hive_mind.rs`
e50dd0d
remove cached local toolchain stuff
ce012e4
fix debug toggle and vsync, add dev controls
8c04c64
fix lint error
0548b88
improve dev mode detection in `hive_mind`
3d9953b
fix camera.rs to-dos
wallamide dc07752
fix cargo dep rev and clarify `lib` docs.
e61d71e
Merge branch 'main' of https://github.com/wallamide/Emergence
a3a7725
Simplify doc string for debug tools plugin
5180191
Simplify doc string for debug tools plugin
d84cef8
Add doc string for AutoNoVsync
2dd3866
Merge branch 'Leafwing-Studios:main' into main
wallamide 31e5532
update `debug_tools` to not need `bevy_console`
05b906e
add basic docs for graphics.
2022729
update graphics docs and add basic audio docs
b15baea
clarified naming and ux/graphics games lists
37fe098
fix summary and analyzed more games
0b43724
Merge branch 'graphics-and-audio-docs' of https://github.com/wallamid…
7ad056d
update high level docs to include graphics n audio
26f0293
add ux design doc
751698d
add analyses and update graphics design docs
4397531
fix graphics design doc link, add gifs
e1963c8
Merge branch 'Leafwing-Studios:main' into graphics-and-audio-docs
wallamide File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,77 @@ | ||
| # High-Level Analysis: Graphics | ||
|
|
||
| ## Case Studies | ||
|
|
||
| ### Terra Nil | ||
|
|
||
| [A reverse civilization builder solar punk game](https://store.steampowered.com/app/1593030/Terra_Nil/) where the player is tasked with making a barren planet bustling with life. The player builds machines to purify water, soil, and air to breathe life back into the game world. | ||
|
|
||
| - A _2D world_ with an _isometric camera with constrained motion_. | ||
|
|
||
| - Animals and some player buildings' _2D assets_ have _outlines drawn with, and cell shading using, shaders_ to add definition to assets. | ||
|
|
||
| - Various animals have _'random' animations_ that add a sense of life to the game. | ||
|
|
||
| - The color palette is _vivid colors for greenery_, _muted colors for wasteland_, and _soft hues of bold colors for buildings_ which helps fit the game's theme of _rejuvenating nature_. | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think an example image would be super helpful here too! |
||
|
|
||
| - _Textures_ give the assets _varying levels of depth_. | ||
|
|
||
| - _Ambient lighting_ gives depth to the world, _casts shadows_, and helps _ambient clouds add texture/depth_. | ||
|
|
||
| - Assets have a _pastoral, hand drawn aesthetic_ with mild _cell shading_. | ||
|
|
||
| ### Warcraft 3 | ||
|
|
||
| ### Factorio | ||
|
|
||
| ### Minecraft | ||
|
|
||
| ### Dorfromantik | ||
|
|
||
| ### Frostpunk | ||
|
|
||
| ### Rim World | ||
|
|
||
| ### Breath of the Wild | ||
|
|
||
| ### Don't Starve Together | ||
|
|
||
| ### Paper Mario | ||
|
|
||
| ### Nova Draft | ||
|
|
||
| ### Paper Sorcerer | ||
|
|
||
| ### Journey | ||
|
|
||
| ### N++ | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Might need to provide some motivation as to why this is relevant for Emergence design? I had a look at it, and it wasn't clear to me. |
||
|
|
||
| [N++](https://store.steampowered.com/app/230270/N_NPLUSPLUS/) is a fast-paced, momentum-based platformer about darting around obstacles, narrowly evading enemies and collecting gold in a beautiful minimalist landscape. | ||
|
|
||
| - A _2D world_ with an _orthogonal, fixed camera_. | ||
|
|
||
| ### Heads Run | ||
|
|
||
| ### Jet Set Radio Future | ||
|
|
||
| ### Okami | ||
|
|
||
| ### Everything | ||
|
|
||
| The game [_Everything_](https://store.steampowered.com/app/582270/Everything/) has the player control a collective consciousness that is a part of everything in the universe. The player is tasked with exploring our universe as a disembodied consciousness that can control anything in the (game's) universe as philosophy lectures play in the background. Built with Unity. | ||
|
|
||
| - A _3D world_ with a _third-person perspective camera with full rotational freedom_ to allow the player to view every angle of the world. | ||
|
|
||
| - The creator chose _low-poly models_ as assets, with the creative choice _not to use animations_ for movement but to instead move the full model in a uniform way. | ||
|
alice-i-cecile marked this conversation as resolved.
Outdated
|
||
|
|
||
| - _Simple shapes_ are used for the models which helps _reduce total polygon count_ for the models. | ||
|
|
||
| - The color choices are a _soft palette_ with _neutral tones_ for background objects and _bold colors_ for playable things. | ||
|
|
||
| - Dependent on the scale the player is at, things in the world are are visually different. _When a player zooms in, things that clutter the world are removed and the important things are left_. This is _emphasized with thing color choices_. | ||
|
|
||
| ## What are Common Style Choices? | ||
|
|
||
| ### Shader Choices | ||
|
|
||
| ### Asset Selection | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| # High Level Analysis: Sound Design | ||
|
|
||
| To make our game more immersive and alive, we need to add sound effects for all of our in game content. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| # High-Level Analysis: Soundtrack | ||
|
|
||
| A solid original soundtrack can keep players thinking about your game for hours after they finish a session. Below we will examine ways to add depth to the game's atmosphere using by examining some games that have a solid soundtrack | ||
|
|
||
| ## Case Studies | ||
|
|
||
| ### Everything | ||
|
|
||
| ### Timberborn |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| # High-Level Analysis: UX | ||
|
|
||
| User experience can make or break a game. Below we will look at some good examples of UX to guide our future design choices. | ||
|
|
||
| ## Case Studies | ||
|
|
||
| ### Factorio | ||
|
|
||
| ### Timberborn | ||
|
|
||
| ### Don't Starve | ||
|
|
||
| ### Oxygen not Included | ||
|
|
||
| ### XCOM | ||
|
|
||
| ### Atrio | ||
|
|
||
| ### Roller Coaster Tycoon 1 | ||
|
|
||
| ### Roller Coaster Tycoon 3 | ||
|
|
||
| ### Shapez | ||
|
|
||
| ### Shapez 2 | ||
|
|
||
| ### Warcraft 3 | ||
|
|
||
| #### Against the Storm | ||
|
|
||
| ## Common Style Choices |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| # Design Guide: Sound Design |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| # Design Guide: Soundtrack |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| # Design Guide: UX |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,116 @@ | ||
| <!--- | ||
| This document is a draft that will be gutted and used in the design docs later. | ||
| ---> | ||
|
|
||
| # Considerations for Representing the Game World | ||
|
|
||
| ## How Things Work | ||
|
|
||
| ### Terrain | ||
|
|
||
| Our current terrain and pathfinding systems work by defining normal ground, high ground, and rocky terrain, with the rocky terrain then labelled as impassible. However, most insects can climb vertical surfaces and most non-insect animals planned are far larger than insects and thus unencumbered by most terrain we're currently representing. This means no terrain should be impassible for our units and only certain terrain types should be "impassible" to fungi and plants given the substrate requirements either kingdom of life have to grow. We also need to consider how to represent the traversal of our terrain: will units walk across ground and respond to variations in it or will they simply know to go to certain tiles given the labels? | ||
|
|
||
| ### Movement | ||
|
|
||
| Our current movement system has all the ants moving randomly across the map by spawning and de-spawning between tiles. We need to decide on how we wish to animate these movements. We will also need to consider how to process all of our unit actions. Current pathfinding is processed as time passes in the game with a unified system to process all units using pathfinding at once. For performance, we will need to consider how to distribute the processing load for large numbers of organisms pathfinding all at once. | ||
|
|
||
| ## Planning for Development | ||
|
|
||
| ### Basic Traversal | ||
|
|
||
| To make units moving around the world look more alive, we will want to add animations to smooth out character movement, decide how the units will move across different terrain, and how to represent the terrain. Our best solution for general pathfinding will be to rework our current impassible terrain functions and instead label the height of a tile. A height allows us to use the integer value to let organisms with walking mechanics know they cannot pass a tile/to know they will have to walk differently on this terrain as well as tell the renderer what terrain type to show. | ||
|
|
||
| We are planning to add new assets, a new lighting system, and a day/night cycle, which will all make height easier to represent. The most limiting factors for each choice of dimensions will then be the assets and extra work needed to finesse our game to be more performant and beautiful. | ||
|
|
||
| ### Making the World 2D | ||
|
|
||
| Most factory builders tend to be 2D | ||
|
|
||
| * We make units able to respond to height. | ||
| - Pros: | ||
| * We can generalize our movement system and adapt it to each organism as needed. | ||
| * If organisms have some level of awareness of their surroundings, most of the way that assets interact can be handled through this system with out needed finesse to pull off a good looking end result. | ||
| * It may be easy for us to add this to our current systems. | ||
| * Signal transduction may be easier to work out | ||
| * It's easier to work with | ||
| - Cons: | ||
| * There are a lot of 2d factory sim type games, so looking unique will take a lot of thought | ||
| * Will need to trouble shoot our assets for clear visibility | ||
| * Will likely require adding a physics engine (may also be a pro) | ||
|
|
||
| * Smaller units look like they're getting larger as they climb up and get closer to the camera or appear to get slightly smaller as they climb down. Meanwhile, larger units are able to semi easily move across most terrain | ||
| - Pros: | ||
| * Looks unique | ||
| * May be easier to deal with animations ( we will only need the walking and smaller up/down sprites vs full animation set) | ||
| - Cons: | ||
| * Likely requires a query for each tile type (computationally intensive) | ||
| * Less straight forward to implement than regular animation | ||
|
|
||
| * Some mixture of the above 2 options | ||
| - Pros: | ||
| * Could prove to be unique | ||
| * Can adapt to any art style in unique ways | ||
| * Flexibility in design offers developer ergonomics | ||
| - Cons: | ||
| * Could be more resource (time, computation, and/or asset) intensive | ||
| * Less straight forward to implement than either a physical world | ||
|
|
||
| ### Making the World 2.5D | ||
|
|
||
| There is no real consensus on what 2.5D means. This allows us to get extremely creative as to how we show the game world. We can: | ||
|
|
||
| * Add 2D sprites to a 3D world, | ||
| - Pros | ||
| * Can look interesting and add texture/personality to the game | ||
| * Is easier to produce and manage assets for than full 3D | ||
| * Makes some aspects of representation, such as depth and height, easier than fully 2D/3D | ||
| - Cons | ||
| * More labor and computationally expensive than just 2D | ||
| * Adds complexity to the design/production process that may be less straight forward to deal with than fully either 2D/3D | ||
|
|
||
| * Create a 3D world with a constrained camera, | ||
| - Pros | ||
| * You have all assets in 3D (render issues will be because of easier to troubleshoot 3D vs potentially difficult mixed dimension) | ||
| * Fits the genre well | ||
| * Makes terrain easy to work with from a traversal perspective | ||
| - Cons | ||
| * You have all assets in 3D (you have to make, store, and deal with 3D assets meaning more time/money) | ||
| * Added complexity | ||
| * | ||
|
|
||
| * Mix 2D and 3D assets to our hearts' content (and coding/asset production ability). | ||
| - Pros | ||
| * Flexible and offers us the ability to use assets/techniques that are easiest for the task at hand | ||
| * Is as unique as we can make it (More artistic freedom) | ||
| * Allows us to accent/emphasize certain game world features that may help with UX and making the game easy to learn | ||
|
|
||
| - Cons | ||
| * Troubleshooting could get difficult | ||
| * There will always be a need to troubleshoot rendering/ensuring assets are consistent across the board | ||
| * Mostly uncharted territory, especially in bevy | ||
| * Need to come up with a new design plan | ||
| * May become difficult to pull off with more features/assets | ||
|
|
||
| ### Making the World 3D | ||
|
|
||
| 3D will make representation easier but adds layers of difficulty to design and production that may make it less practical than 2/2.5D. | ||
|
|
||
| * 3D with isometric camera with freedom on the constrained axis | ||
| - Pros | ||
| * | ||
| - Cons | ||
| * | ||
|
|
||
| * Add , | ||
| - Pros | ||
| * | ||
| * | ||
| - Cons | ||
| * | ||
| * | ||
|
|
||
| * Mix | ||
| - Pros | ||
| * | ||
| - Cons | ||
| * |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,28 +1,4 @@ | ||
| //! Create and manage `bevy_console` commands. | ||
| // TODO: Add MIT/Apache 2.0 compatible console implementation | ||
|
|
||
| use crate::*; | ||
|
|
||
| // Modified from the log command example (https://github.com/RichoDemus/bevy-console/blob/main/examples/log_command.rs) | ||
| /// Prints given arguments to the console | ||
| #[derive(ConsoleCommand)] | ||
| #[console_command(name = "log")] | ||
| pub struct PrintToLog { | ||
| /// Message to print | ||
| msg: String, | ||
| /// Number of times to print message | ||
| num: Option<i64>, | ||
| } | ||
|
|
||
| // TODO add more useful commands | ||
| /// allow command line statements to print to console N number of times | ||
| pub fn print_to_log(mut log: ConsoleCommand<PrintToLog>) { | ||
| if let Some(Ok(PrintToLog { msg, num })) = log.take() { | ||
| let repeat_count = num.unwrap_or(1); | ||
|
|
||
| for _ in 0..repeat_count { | ||
| reply!(log, "{msg}"); | ||
| } | ||
|
|
||
| log.ok(); | ||
| } | ||
| } | ||
| // use crate::*; |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am liking this in general, but I do wonder if there can be more documentation around why a particular example is relevant graphically for Emergence,
It would also be helpful to have documentation that talks about why particular graphic design choices from an example are relevant for Emergence,
and in general, when discussing relevant graphic design choices, it would be nice to have links to examples, that way this document is self-contained as much as possible (we do have to manage link rot though...)
(Sorry, I hope I am not being too annoying here?)
@alice-i-cecile does the above make sense to you too? maybe it's fine as is....
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree, context and goals are really helpful and would be useful for each of these docs.