Skip to content

An open-world reinforcement learning playground for gnomes filled with dangerous peril and bountiful treasure.

License

Notifications You must be signed in to change notification settings

grahamwaters/GnomansLand

Repository files navigation

Contributors Forks Stargazers Issues MIT License LinkedIn


Logo

GnomansLand

(Aquapac Games)

The simulated world where gnomes rule and thrive while avoiding the perils of a dangerous planet.
Explore the docs »
Report Bug · Request Feature

Feel free to share this project on Twitter!

Tweet

Introduction

Gnomans Land is a highly ambitious MMORTS game with features that combine the best aspects of Clash of Clans, Age of Empires (OG), Minecraft, Minedustry, and Stardew Valley. As a game developer, you will have the opportunity to work with the most advanced tools to create a unique game world where players can build their own civilizations of reinforcement learning agents (gnomes). These gnomes can then be trained by players, who will be able to oversee the training process in god mode.

One of the most exciting aspects of Gnomans Land is that players will have to train their gnomes to survive against the elements, disease, and predators, making this game an excellent showcase for the capabilities of machine learning technology. As a game developer, you will be responsible for implementing and testing these mechanics, as well as ensuring that they work seamlessly with other game elements.

In Gnomans Land, players will have to build a robust population of trained gnomes, which can be drafted into an army to conquer an open-world space or develop new cities and expand their empire. To achieve this, the game will have a Minecraft-like world that will involve resource management, combat, and strategy elements. Your role as a developer will be to work with a variety of tools and techniques to create an immersive game world that will keep players engaged and coming back for more.

Another exciting feature of Gnomans Land is that the area players can travel in will contain the actual towns of other players at random intervals, similar to Stronghold Crusader 2. This will require you to work closely with other members of the development team to ensure that the game world is seamless and that players can interact with each other in a fun and engaging way.

Gnomans Land is an exciting MMORTS game that will provide plenty of opportunities for game developers to showcase their skills and create an immersive gaming experience for players. From machine learning technology to Minecraft-like worlds, there are plenty of exciting tools and aspects to work with in this game. If you are interested in working on a game that will be a showcase for the latest technology, then Gnomans Land is the perfect project for you.

Some History on the idea This project started as a simple exercise in the use of pygame and OpenAI to create reinforcement agents. But with time it became something else entirely. It grew into a fascinatingly organic (theoretically open-world) mixture of Minecraft, Age of empires (from the good old days), fallout shelter, and NetLogo. We are building a virtual experience for our Gnomes and watching them learn. They must learn or they will die out. Using concepts introduced in genetic algorithms and natural selection we hope to program this civilization to stay alive and even thrive in their post-apocalyptic survival society where they not only have to hunt and gather to stay alive, but must adapt to changing conditions and learn on the go.

Areas that you can help!

An Outline of the Game

The gameflow is divided into six phases, each with its own unique and novel challenge for the gnomes. These different challenges for the reinforcement learning agents are to build their mastery (ideally) before the next chapter begins; however, if the population does not learn the necessary skills before the chapter ends, they could be annihilated resulting in a game over scenario.

Product Name Screen Shot Product Name Screen Shot Product Name Screen Shot Product Name Screen Shot Product Name Screen Shot Product Name Screen Shot Product Name Screen Shot Product Name Screen Shot Product Name Screen Shot Product Name Screen Shot Product Name Screen Shot

Ideas for the Future

To make the game immersive, players could be given the option to play as a gnome, or as a force entity. The "force entity" is a god-like creature that can interact with the environment by directing gnomes to tasks like Age of Empires or other god-mode RTS openworld games.

The Environment

The space where the agents live should be generative in that it adapts as it learns from how the gnomes and players interact with it. So, the environment is an agent itself. _see Meta's work on the E3B Algorithm _ repo here _also see their paper on Exploration via Elliptical Episodic Bonuses _ paper here

We are looking for Contributors in the Following Areas

  • We are looking to build our game in Unity3d. If you are a Unity expert, or are familiar with using ML in Unity3d, then you have a place with us.
  • Genetic Algorithms are often complex. If you have experience coding these or other machine learning algorithms, then reach out, and we can find a task to assign to you.
  • Graph optimization
  • Agent Behavior modification through policy generation
  • Game Art
  • Game Story Flow
  • Repository Maintenance and Organization
  • Code Security on GitHub
  • All Machine Learning Experts
  • Experienced C# Developers for Unity Scripts

Some ideas have already been shared, here are three examples:

  • Enable the gnomes to reproduce, resulting in nuclear attribute inheritance (Yes, we will assume the inheritance of acquired characteristics).
  • We are using shared crowd knowledge to enhance the resource optimization of hunter-gatherers.
  • We are applying Genetic Algorithms and Stamina/Strength/Motivation to the abilities and lives of the Gnomes.

(back to top)

Built With (Prerequisites)

The primary tools used for development in this project are python, scikit-learn, pandas, matplotlib, and some others.

  • Python3
  • PyGame
  • Scikit-Learn
  • Pandas
  • Matplotlib
  • (potentially Unity)

(back to top)

Getting Started

To get started setting up your project locally follow these simple steps.

  1. Fork the Project
  2. clone the repository to edit it locally on your computer: git clone https://github.com/grahamwaters/GnomansLand.git
  3. cd into the repository folder: cd GnomansLand
  4. Create a conda environment named GnomansLand: conda env create -n GnomansLand --file gnomansland_contributor.yml
  5. Activate the environment: conda activate GnomansLand
    1. You should see (GnomansLand) to the left of your terminal prompt now.
  6. If you like using the terminal then you could create your Feature Branch using this command: (git checkout -b feature/AmazingFeature)
    1. I recommend using either SourceTree or GitHub Desktop for tracking version control and making branches etc.
  7. Commit your Changes (git commit -m 'Add some AmazingFeature') or in those programs from step 6.
  8. Before pushing your commits to your feature/AmazingFeature branch, go ahead and run black and flake8 to eliminate any merge issues before they happen. This ensures your work is more likely to be merged into the main branch.
    1. black (path to your file)
    2. flake8 (path to your file)
  9. Push to the Branch (git push origin feature/AmazingFeature)
  10. Open a Pull Request
  11. Wait for an admin to approve your changes and merge them into the main branch.

(back to top)

Usage Examples

Usage will be added here once there is a working product to illustrate.

For more examples, please refer to the Documentation

(back to top)

Our Development Roadmap

  • Create the observation space (environment) for the project.
  • Create Gnome Classes with personality traits and physical attributes.
  • Place the Gnome in the observation space.
  • Define a Gnome Abilities Class to denote all possible actions that the agent can take within the observation space.
  • Use reinforcement learning to generate policies for the gnome that allow it to survive.
    • Gather Food
    • Avoid Danger

See the open issues for a full list of proposed features (and known issues).

(back to top)

Observation Space Specs

  • Generate an isometric tilemap for the world at the moment of creation.

isometric map

As you can see in the map above, there are multiple features (sprites) that have spawned on this map. These features will be variant. They could be animals, plants, and even geographic features.

isometric map

In this map you can see features that would have to be created by an agent. Paths would be gnome-made. Now, what would be ideal is if we can get our map so well designed and streamlined that it can look like the image below.

isometric map

This is the goal, and the dream of this project. It may require Unity eventually.

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again! Welcome to your Gnome away from home.

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contributors

Graham Waters LinkedIn

Nora Abuassaf LinkedIn

Contact

If you have questions or concerns about the project, or just want to chat about Gnomes, feel free to reach out to me on my social media.

(back to top)

Acknowledgments

(back to top)

Star History

Star History Chart