Giter Site home page Giter Site logo

colony's Introduction

COLONY

COLONY is a Rust game, built with Bevy, that plays like any other colony simulator game. The current version is very basic, there are basic food items that your units can consume, your units have basic stats like hunger, and there is some basic map generation.

What are the various systems?

  • "Seasons" represents the movement of time, and causes plants to grow and die.
  • "Movetoward" is an A* algorithm that lets objects move in the most direct path, avoiding obstacles along the way.
  • Spacebar will pause the game
  • Escape will close the game
  • Some of the menus don't work yet, but you can farm cabbages and trees, and a unit will go plant these
  • Now you can build walls
  • Crafting is not yet implemented
  • There is a monster spawner
  • You can give Orders > Chop to chop down trees
  • Units automatically sleep when they're tired.

Screenshot

Things Needed For Alpha Release

  1. Improve the UI box when you click one of your units, displaying their personality, attributes, and health
  2. (Easy) Implementing more variety in already-implemented systems: foods, trees, and plants.
  3. Biomes should exist in patches across a larger map. Biomes could also represent areas, like a graveyard type area could be a "Biome".
  4. Implement construction skills.
  5. Add more kinds of objects
  6. Better organize tileset file.
  7. Implement weapons/equipment/inventory.
  8. Giving orders to units.
  9. Implement the effects of more personality traits.

Getting Started

Generally cargo build and then cargo run works fine on Windows 11 and Ubuntu.

Contributing

Please see the CONTRIBUTING.md file for guidelines on how to contribute to this project.

License

This project is licensed dually under the MIT License and Apache 2.0 License - see the LICENSE file for details.

Art

The art may fall under different licensing conditions. Please see the specific licenses regarding any artwork.

Main tailset is from https://opengameart.org/content/dungeon-crawl-32x32-tiles and it is shown as CC-0.

Contribution License

By contributing to this project, you agree to license your contributions under the terms of the MIT license and the Apache 2.0 license. Additionally, you grant the project owner, Ryan Kopf, an unlimited, irrevocable, perpetual, universe-wide license to use your contributions for any purpose, including but not limited to commercial purposes, without any additional restrictions or obligations.

colony's People

Contributors

anacrolix avatar bjohnson131 avatar geeksville avatar ryankopf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

colony's Issues

Add some sort of indication that a button is selected

Currently it's not obvious when a button is selected in-game, as the buttons remain a constant color and don't have any 'on hover' effects or 'on click' effects. There's no indication on the screen of what was selected or what the result of selecting on the screen will do.

I'd like to propose adding hover and select effects to all menu buttons.

Create rules for cargo clippy and cargo fmt.

Cargo format and cargo clippy will be the foundation for how code in the repository is kept clean and understandable by everybody who wishes to contribute.
Thus it's important that one sets the rules for linting and formatting, early in the repository's lifecycle so that everybody
knows what to expect when starting to contribute.

Create release build process

Release processes will be paramount to gaining traction and attention towards this project.
Rust users already seem to like what has been done so far, but in order to attract people from the wider community, we'll need a proper process in order to release and publish colony as it stands right now.
The process should include both the building steps. which will build release artifacts, and push them to the releases page, as well as steps that humans will need to take in order to properly maintain standards within this repo, An example of such a standard could be maintaining semver versioning

Add a Help section in-game

A Help section will not only make it easier for players to find enjoyment in the game, but will help developers track. The intended behavior for various things within the game.

Set up profiling for the game to monitor performance.

Although premature optimization is the root to many evils, it would be of great benefit to us to start monitoring the current performance of the game and the performance of things which are already implemented
The ideal outcome of this task would be a simple command that users could run and receive a report about which functions and which calls take up how much resources in the system.

I reccomend cargo flamegraph for monitoring performance: https://github.com/flamegraph-rs/flamegraph

Separate plugins into logical modules.

Plugins should be separated into logical modules based on where they're used and what modules use them.
For example, there are currently plugins that pertain to world, the menu, and the NPCs within the world.
And example of the modules could be

  • Plugins
    • UI
    • World
    • Character

Use correct `isUnique` flags for bevvy plugins

The 'is unique' flag for a plugin determines whether or not multiple instances can be instantiated at any point in time for the game.
Some plugins that are currently in the game should not be unique and should be globally universal instead, but the unique flag is left to default (true)

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.