Giter VIP home page Giter VIP logo

aurora's People

Contributors

bbradt avatar dependabot[bot] avatar grarer avatar kanwren avatar maymoonsley avatar mgpalpha avatar wcooper32 avatar

Watchers

 avatar

aurora's Issues

End Screens for Various Victory/Failure Endings

Suggestion: add a mark in the quest system for triggering particular end states, which create the screen, and end the game. Create end screens with display text, graphics, and restart buttons, along with whatever else is needed for a full game loop.

Separate wasteland build menu into pieces

As we add dozens of building types, navigating the list of possible projects that can be built on wasteland tiles becomes difficult.

One way to fix this without having to develop special-case menu code would be to have a number of "construction site" tiles of different kinds (habitation/life support, engineering, laboratories, etc). The wasteland would then only have the projects to create these construction sites (which would be free) and then each construction site would have the possible construction projects of that category. Construction sites should also have a "tear down construction site" project that converts the tile back into wasteland for free.

individual css for each project cost

right now, the "costs" indicator for a tile project turns red if any of the costs cannot be fulfilled. Ideally, we should instead only turn the costs that cannot be afforded red. This probably means making them separate html paragraphs.

Transition Screen Flavor Text

This is for flavor text quotes to be displayed between turns. The quotes should be from real-life philosophers, visionaries, and computer scientists as well as fictional figures from in-game lore that elaborate on plot, background, etc.

add descriptions to tile projects

Tile projects should have text descriptions, since right now there is nothing to tell the player what the effect of, e.g., "strip mining" is. These descriptions should appear below the button for each project in the tile sidebar.

settings page

we should have a settings page. I definitely want to allow uses to change the number of mapUI dimensions, and also probably change the music volume. maybe other things?

visually indicate which tile projects are not met

When a tile project has multiple requirements, there's currently no indication of which ones are and are not met. We should provide a visual indicator when a requirement is not being met, for example by changing its font color.

Integrate music with menus

We have a volume variable in our settings but it's currently not linked to the actual volume/gain variable of the music system. We should connect these.

Additionally, we need an "enable audio"/"disable audio" button on the main menu to start the music, rather than trying to start the music immediately when the page loads, since autoplaying music without user input is sometimes blocked in chrome.

Fix conversion re-ordering

Drag-and-drop on the production screen should allow placing a costly conversion anywhere in the list of costly conversions, but right now it is only moving a conversion by at most 1 space.

ending screen css

The ending screen has no css right now, we should make it look better. For instance, the text looks bad when stretched across the entire screen.

Newtype refactor

It would be better to use newtype for the places in the music code where note midi numbers and etc are currently encoded as plain numbers. We discussed this during review of the music pr, but decided to save the refactor for after that code was merged. There might also be some places outside of the music code that would benefit from using newtype.

Discarded promise in createBufferFromAudioData

createBufferFromAudioData is currently defined as follows:

export function createBufferFromAudioData(length: number, filename: string): AudioBuffer {
const buffer = new AudioBuffer({ numberOfChannels: 1, sampleRate: 44100, length: length });
fetch(`assets/${filename}`, {
headers: new Headers({
"Content-Type": "audio/ogg"
})
}).then(async (value: Response) => {
const arr = await value.arrayBuffer();
const tempBuffer = await tempAudioContext.decodeAudioData(arr);
buffer.copyToChannel(tempBuffer.getChannelData(0), 0);
}, () => {});
return buffer;
}

This discards the Promise<void>, which just means that the returned AudioBuffer will be written to at some point after returning. This is able to cause problems when the buffer is used before it's been written to.

Optimally, we would instead return a Promise<AudioBuffer>, but this would require quite a bit of restructuring.

cross-browser css inconsistencies

some styles show differently in firefox compared to chrome. for example, the intended behavior of the outlined boxes on the production screen and research screen is to take up only the left 50% of the screen if the monitor is large. This is how it shows in chrome, but on firefox these boxes instead take up the full width of the screen.

Procgen Music

Ideally we'd like to have procedurally-generated music

Production Screen UI Improvement

I've already got the "Manage Production" screen's functionality working, but it could use better HTML+CSS to make it prettier and more readable. Ideally it would be nice to be able to reorder conversions by drag-and-drop, but that might add a lot of unnecessary complexity.

Art asset building blocks

A (possibly incomplete) list of tiles that we need textures for:

environment

  • wasteland
  • mountain
  • crater

alien structures

  • alien ruins
    • buried into the ground
    • player can build xenotech labs and alien materials recycling plants adjacent to this
  • monolith
    • one of these in the map, the seed core will be built on/around this

early-game structures

  • lander pod
    • spacecraft that brings the first colonists and deploys the first buildings
  • habitat dome
  • solar panels
  • greenhouse
    • for growing food to keep colonists alive
  • ore processing center
    • factory that turns ore into electronics and building materials
  • road
    • connects different colony buildings

laboratories

  • engineering lab
    • workshop for creating new technologies
  • psychology lab
    • human experimentation to understand psychology, sociology
  • AI alignment lab
    • an office for mathematics/computer science research that unlocks the alternate ending
  • xenotechnology lab
    • built adjacent to alien ruins

( it's fine if the labs are slightly different variants on the same base)

mid-game structures

  • mineshaft (built into/on top of mountain)
  • arcology
    • tower that houses humans more densely than the habitat dome
  • hydroponics greenhouse
    • produces lots of food
  • nuclear reactor (fusion?)
  • robot hive
    • builds and stores robotic workers
  • electronics factory
  • structural prefab plant (building materials factory)
  • alien materials recycling center
    • built on top of alien ruins (i.e., turns a "ruins" tile into a "recycling plant" tile)
    • mines the ruins for exotic resources

late game structures

  • xenofactory
    • turns exotic resources into high-tech materials like "smart matter" and "superconductors"
  • nanotech foundry
    • must be built adjacent to the monolith to build the seed core
  • "zero point energy" power plant
    • fancy glowy machine that makes vast amounts of energ
  • neural emulation machine
    • must be built adjacent to the seed core to start inititalize the core's world-eating process and win the game
  • seed core
    • built on top of/around the monolith
    • self-replicating super computer that hosts a virtual reality for uploaded minds
    • when activated, it starts making copies of itself across the map until the entire world is covered in these machines

erroneous resource quantity label but only on github-pages

If I use cheatsFreeResources(), which is supposed to give 1,000,000 of each resource, the inventory looks like this:
image
That extra ":1000000" between "inventory" and "energy" is not supposed to be there and iIm not sure what's causing it. Does cheatsAddResource() somehow add an extra resource with an empty name that isn't supposed to exist?

The spooky thing that makes this hard to debug is that I've seen this on the github-pages deployed version but can't reproduce the bug locally. Maybe it's a bug introduced during minification somehow?

Tiles in the starting set can carry state between successive runs

The tiles in the starting area are defined in WorldGenerationParameters, which means these are actually the same wasteland tile being reused in every run. Right not wasteland, mountain, and lander don't contain any internal state that gets changed during a run, but if they did this state would carry over between runs.

Technology tree

We should have a system where the player can acquire different types of science points (e.g. Engineering, Sociology, Xenoscience) and spend those points to unlock technologies. Having particular technologies unlocked could be an input into TilePredicates (the system that determines the requirements for completing tile projects) or WorldPredicates (the system that determines when the player has met a quest objective).

There should be one or more laboratory buildings that produce points, and then a building or menu where technologies can be unlocked. Each unlockable technology should have a science-points cost as well as requirements for the option to be visible (e.g., you can't see the option to unlock technology B until you already have technology A and have at least one building of type X).

I'd also like to have "hidden" technologies that we can use for scripting events and unlocks but which are not visible to the player.

add descriptions to tiles

We should add a description string to all tiles, which should be shown in the tile sidebar blow the name and coordinates of the selected tile

Settings page CSS

The settings page is still using default styling; we should add CSS for it. In particular I'd like a more flat, minimalist appearance for the slider handles.

Resolve how Ending of Game is Actually Performed

We discussed this at the last meeting. We need to work out how to make the actual endgame happen, with the AI taking over all unoccupied spaces, and with enough space/generality to allow things to be changed/updated per new ideas.

There were specific concerns about complexity and checking unoccupied spaces. @GRarer can provide more specifics.

Minor UI issues

Comment here about any issues with the appearance or clarity of the UI here.

Housing consumption

One idea brought up at the meeting was that we could have housing tiles (e.g. Habitat Dome) have a certain amount of resources that they consume each turn while active. Players would be able to disable a habitat to conserve those resources, but then it would no longer contribute to their population capacity, potentially causing workers to die if there is no longer enough room.

Turn transition screen improvements

Right now, the screen you see when you click "next turn" doesn't have anything except a continue button.

I'd like to have this screen show in-universe quotes, like

Lorem ipsum dolor sit amet
- John Doe

and show a loading animation. After some amount of time (maybe like half a second) the loading animation should then be replaced by a "continue" button.

There should be a list of these quotes, with the loading screen picking a different one at random each time.

replace loading bar on turn transition screen

The current css-based loading bar works on chrome but not firefox (and I haven't tested it on Safari).

Additionally, I would prefer a looping animation rather than a bar so that the loading animation is not dependent on a specific delay time.

menu background 404

the menu background 404s on github pages due to paths having a different root than the local version. getting it to work correctly on both local and github pages probably requires getting webpack to correct the paths.

Implement plot content

The minimal plot is mostly written (although there is room to add new buildings and projects if we have time at the end), but still needs to actually be implemented in code.

Things that need to be added

Resources

  • Cavorite
  • Orichalcum
  • Smart Matter
  • Superconductor
  • AI alignment data

Buildings and Tiles

  • Alien Ruins
  • Monolith
  • Road
  • Labs
    • Engineering
    • Psychology
    • Xenoarchaeology
    • AI alignment
  • Mineshaft
  • Arcology
  • Hydroponics Greenhouse
  • Nuclear Reactor
  • Robot Hive
  • Electronics Factory
  • Structural Prefab Factory
  • Xenomaterials Recycling Center
  • Xenofactory
  • Nanotech foundry
  • Zero Point Energy power plant
  • Neural Emulation Machine
  • Seed Core

Quests

  • Build engineering lab
  • Develop Alien Survey technology
  • Build Xenoarchaelogy lab
  • Build recycling plant
  • Research Alien History
  • Survey the alien monolith
  • Unlock the secrets of the Monolith

Gameplay

  • Seed core self-replication routine

Ending Screens

  • Alien Eschaton
  • Transhuman Eschaton

Improved world generation

Our current procedural generation for the world is very simple, and just places features like mountains at random. If we have time it might be helpful to use a procedural generation process that distributes mountains, alien ruins, etc according to a more interesting pattern.

World Screen UI improvements

The world screen (which shows the map, resource sidebar, and tile projects sidebar) is the main screen for the game's UI. Better HTML+CSS design would make it prettier and more readable. For example, giving the sidebars their own scrollbars would make it so that players don't have to scroll the whole webpage to reach tile project options.

serialization

This might be kind of a nightmare to do because of how the game is structured, but it would be nice to be able to save and load games

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.