Jump to content

WIP Odd World - The AI Interaction Game


Recommended Posts

Project Information:

This project has had a lot of thought put into the design in it, it's something that blends together a lot of what I study and have been thinking about for a while. I freed up time recently, trying to get a bit of arts and creativity back into me. I just started this project about a week ago, actually putting it into code, so it's still in its very early development stages.


Project Name: Odd World

Development Tools:

  • Salem2D (My Personal Game Engine)
  • Tiled Map Editor

Language of Development: C++17

Languages and Frameworks:

  • Graphics: SFML
  • Networking: Boost::Asio
  • Other: Boost(system & data)


Completed Features:

  • Engine Development
    • Maps with collision and attributes (with teleporting and map linking)
    • GameObject and Behavior System
    • Map Loading
    • Sprites and animations
    • Pixel Based Movement
  • Game Development

Planned Features

Its important to note that with no story or anything, im kinda writing the mechanics as I go, and am going to keep expanding out. Once I'm done with the core features, im going to add some fun things in.

  • Engine Development
  • Game Development
    • Create Basic functioning ai with basic needs.
    • Create Chat System
    • Network Game
    • Allow AIs to Chat, add socializing as a basic need to existing ai
    • Distribute AI calculations over the network


The backstory of Odd World goes like this; One night, a stoned software engineer who has a strong fascination for psychology and machine learning was attempting to formulate an equation for human-like intelligence.

He came up with the idea that the functionality of living thing is survival. If you want to create something intelligent, you must reproduce the function of intelligence, such a thing must know how to survive. In order to test his theory, the software engineer knew that to make such an ai would be expensive in computational resources so he would need to simplify the algorithm, he would also need an environment to test his ai in. He came up with the idea of designing a 2D world in which many of these ai's could run this algorithm, learning to interact with each other and their world based of programmed needs. He brushed off his old 2D game development library after 2 long years, and began to get to work. This environment has no story or quests, it's all about creating a space for humans and AIs to interact.


The Mechanics:

This game circles around Psychology, so a lot of the mechanics are a bit psychological. I'm not gonna give the full model because its a lot to explain but the primary idea behind these AI's tries to replicate human nature in the sense that the opinions humans hold are based on their experiences and what their body felt emotionally and physically at the time of having said experience. The actions humans take are based on what they are currently feeling from their environment and their values which are products of basic needs and opinions.


The AI: So the AI mechanics will start pretty basic and expand out as AI requires a lot of tweaking to get desired effects. The goal of the ais, is that they have basic needs like hunger, thirst, the are required to reproduce after a certain age, they will be given the ability to talk and will be required to socialize every so often, entertainment, etc. The AI fulfills these needs by interacting with objects in the world and with other AIs. The AI will idealy have no pre-programmed responses, it will run on a special type of GNN (generative neural network) I designed which will make them very random acting at first, but as they learn what fulfills their needs through the world interactions produced by their random actions, their actions will start to get more defined and they will grow better at staying alive. The AIs eventually will have the ability to build objects and structures. They'll have currency and be able to trade, and so much more. The goal is to give the AIs a fair amount of freedom by making them act purely statistically. I have 2 different types of AIs in this project, The Hive Mind and The Individual, They both survive with the same algorithm stated above the differences are as followed;


  • The Hive Mind AI: The collectivist is an AI that operates on single universe Neural Network shared with every other AI in the same "Hive". Each AI on the Hive is somewhere else in the world experiencing something different. However, because they are all using the same Neural Network to calculate what action should be taken, they all share the same memories and opinions, meaning they will all calculate Action under the same ideals and values. The Hive Mind focuses on the average well-being of the collective, Hive remains alive as long as at least 1 hive child is still alive.
  • The Individual AI: Each Individual has their own Neural Network and their own experiences. They will hold their own opinions, memories, and values of the world and therefor, each individual will formulate action under different premises. When the individual is dead, yes they are very dead.

The Player:

The way the player will interact with the world is depending on the Game Mode the server is configured for. There are currently 4 Game Modes the AI algorithm remains the same, however the Algorithm will act differently when the rules of the game are different. How it gets what it needs to survive will depend on the environment. For example, if there is limited necessary resources, the AI may go to war with other AI or players for that resource. The 4 planned game modes are as followed:


  • Casual Survival Mode: All things respawn at a cost. Players have same privleges as AI. Players must survive like AI.
  • Survival Mode: AIs die permanently, Players respawn but lost everything. The player loses everything it owns on death (all items, and all houses and assets under their possession). Players have same privleges as AI. Players must survive like AI.
  • Creative Mode: Players are basically like gods to the ai, they can cause natural disasters,  take over hives, control ais, destroy property, spawn items and AI. etc.
  • XANA Mode: Totally inspired by the old french anime, Code Lyoko. XANA mode is a player vs Hive Mind objective. The game is split into rounds, players and AI respawn at the start of each round. There is limited resources around the map. The players must kill the 1 single hive mind ai before it kills all the players. The amount of ai's connected to the hive mind depends on the number of players. The Hive mind will keep getting better, because it never resets the values of its neural network after each round. Every AI in the hive will be named "XANA".

The Network Distribution:

So, in order to give these ai's the ability to recognize objects that they see, I need to be able to render what they see and feed it into a neural network, and that's a very expensive operation. The server alone will host Data for the AI's. The server will also host Hive-Mind Neural Networks. But Rendering and Individualist AI's NN will be passed off to the Player's machine for formulation. Individualist AI's exist on the server, however, when they go to formulate actions, they request 1 random client on the network, to run the calculate for them and send the result back to the server for the action to be taken. Though this is easily hackable, its the only way I can make the kinda game I want. The server itself has to be a multi-agent system. The rendering of these AI's screens will also be passed off to the client.


(Not many yet, been working on the physics and map engine mostly, will update as I go on). These graphics were purchased, but ill probably get some graphics custom made as time goes on.






A bit of the GUI:



About the Engine:

Salem2D is a game engine I work on a few years back, it has networking and game objects and what not. It's written in C++ and is making development quick and easy for me. It's open-source but its really not ready for other people, there's a lot of bugs I just fixed this past week, and am trying to make map loading more ambiguous to the game its in.


Plans moving forward:

So far, I've basically wrapped up the meat of the graphics engine, I got a bit of debugging on some networking features, but other than that, im at a point where I'm actually writing out game mechanics. My first prototype is to get a single AI running on a network who only has 1 basic need and that's to not die of hunger. I will add random fruits around a couple of my maps and watch as it learns to pick them up, even though it wasn't necessarily programmed to directly find food, only keep its hunger sufficed. I will be posting a lot of updates here as time goes on. This is a really cool project to me because it combines Psychology, AI, and Programming, so I'm excited to be working on this. Its fun and funny.


Why Keep up?

The game's not really far enough along in development that I can post "Why Play", but you should keep up because its cool, the goal is to use this project to help people learn a bit about psychology while having fun gaming. Its a survival game you can build in technically. No story, just hours of educational Interactive endless entertainment with AI.


Wanna join the team?

If you're interested in the project and want to help with mapping, graphic design, or programming, Add me on my discord: OddlyDoddly#2354

Do note, I will not just accept anyone and everything into this project. I require some example of work for whatever you'd like to join in on. Compensation for helping with the project will include a negotiation up joining.

(Think about what you want out of the project before reaching out to me please).

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...