An experiment with cellular automata; Functional mod for Rem's Engine.

Overview

Cellular Automata

This is an experiment with cellular automata. A functional mod for Rem's Engine.

When experimenting, I found the Sierpinski Triangle the easiest to type in + most interesting: births = 1, survives = 0, states = 5.

The following images show the cellular automate with those settings:

example 1 example 2 example 3

I was inspired to experiment with cellular automata by Tantan.

Building

This is a mod for Rem's Engine, so first build the engine. Then you can build this project, e.g. with Intellij Idea. There are no dependencies besides my engine.

Run Sample

I've compiled a version including the dependencies into Demo.jar. It should run on Windows and Linux.

Simulation

My focus went more towards GPU optimizations, because they were the bottleneck at 50³ cells at the start. Now, the CPU performance could be improved substantially, e.g. by using good multithreading (mine currently doesn't work efficiently, idk why).

Visualization

First I implemented the visualization using instanced rendering & blocks. I added a MeshSpawner for that purpose into my engine (CellularAutomaton1). However, probably because of overdraw, the performance was quite bad, and a fractal cube with 50³ cells already caused my RX580 to go down to 30fps at 1080p.

I then tried to create chunks like in Minecraft, just to see what the performance would be. Unsurprisingly, it was no better.

Then I tried raytracing within the cells boundaries. This was a large win, and brought my fps back to 160 in 1080p (CellularAutomaton2). First I used the front face of the bounds-cuboid as a ray-starting point and a mask of where to raytrace. But this made movement inside the cell volume inpossible. I then rewrote the shader such that you're able to render from any point. The mask is now the backside of the cuboid.

Since this shader may be useful for other projects, e.g. similar ones to Teardown, I also integrated it into my engine.

You might also like...
RPG written in Kotlin using Korge engine

TheAlchemist RPG written in Kotlin using the Korge engine Based on the template https://github.com/korlibs/korge-starter-kit-rpg, this is a simple pix

SMBClone - SMD clone custom game engine. (Desktop + Android)

SMBClone Simple crossplatform game engine for like SMB game! Supported platforms

RemsEngine - OpenSource Kotlin/OpenGL/ECS based game engine

Game Engine: Rem's Engine Parallel to this video editor, I am developing my own

Android Play Games Services plugin for Godot Game Engine
Android Play Games Services plugin for Godot Game Engine

Google Play Games Services Plugin for Godot This is an Android Play Games Services plugin for Godot Game Engine 3.4.2 Supported features: Sign-in/Sign

Utility library dedicated for functional & non-functional codebases to simplify modelling of success and failure responses for the JVM languages 🔀

Expressible Utility library, part of the panda-lang SDK, dedicated for functional codebases that require enhanced response handling. Express yourself

Realtime SOS Android Application. Location (GPS + Cellular Network) tracing application by alerting guardians of the User.

WomenSaftey Women Safety Android Application: Realtime SOS Android Application. Designed a Location (GPS + Cellular Network) tracing application by al

Example mod with Mixin to help you to get started with creating a mod with mixins.

ExampleMixinMod Example mod with Mixin to help you to get started with creating a mod with mixins. For usage of mixins, see here. Also, remember to tu

a 3d database ORM experiment. (used in two commercial projects)

Android-TriOrm a 3d database ORM experiment for Android. (used in two commercial projects). based around small tables concept and JVM Serialization. H

() Android experiment showing a sinking TextView
() Android experiment showing a sinking TextView

Titanic for Android This library is DEPRECATED, as I don't have time to mainatin it anymore. But feel free to go through the code and copy that into y

Android experiment showing a sinking TextView
Android experiment showing a sinking TextView

Titanic is an Android experiment reproducing this effect.

Exploring Kotlin Symbol Processing - KSP. This is just an experiment.

KSP example Exploring Kotlin Symbol Processing - KSP. This is just an experiment. Project contains 2 modules Processing Example Processing module is t

A repo to experiment with Continuation R, A implementations in Kotlin

A repo to experiment with Continuation R, A implementations in Kotlin

A basic, incomplete, buggy, far from efficient UI toolkit for Kotlin/Android. An experiment for fun and to learn.
A basic, incomplete, buggy, far from efficient UI toolkit for Kotlin/Android. An experiment for fun and to learn.

Apex Apex is just a simple proof of concept to demonstrate how easily you can build your own UI Toolkit from scratch. This code base is most likely fu

A basic, incomplete, buggy, far from efficient UI toolkit for Kotlin/Android. An experiment for fun and to learn.
A basic, incomplete, buggy, far from efficient UI toolkit for Kotlin/Android. An experiment for fun and to learn.

Apex Apex is just a simple proof of concept to demonstrate how easily you can build your own UI Toolkit from scratch. This code base is most likely fu

An application for conducting an experiment on the energy consumption of the screen on a test stand
An application for conducting an experiment on the energy consumption of the screen on a test stand

energy-consumption-screen-test-app An application for conducting an experiment on the energy consumption of the screen on a test stand The Application

A sandbox where I will experiment with new techniques, concepts, and technologies.
A sandbox where I will experiment with new techniques, concepts, and technologies.

A sandbox where I will experiment with new techniques, concepts, and technologies. Here you will find some DDD, CQRS, Clean Architecture, Event-Driven Architecture, Serverless, Microservices, RabbitMQ, gRPC, SOLID, Design Patterns, and more.

A thought experiment on architecture, object-oriented programming, and composability.

Journal3 There's barely anything special about the features that Journal3 is offering, it's literally yet another journaling application. What is spec

Pure Java code generation tool for generating a fully functional ContentProvider for Android.

RoboCoP RoboCoP is a Java library that can generate a fully-functional ContentProvider from a simple JSON schema file. Get the latest version from our

Functional Constructs for Databinding + Kotlin + RxJava

ObservableFlow Pt 1/3 Pt 2/3: Stepper Indicator Pt 3/3: SugarPreferences Functional Kotlin constructs like map(), filter() and 12 more functions built

Releases(v1.1.0)
Owner
Antonio
Programmer, studying Computational and Data Science at FSU Jena
Antonio
Thaumcraft 4 research table tweaks - This mod brings a reworked research table GUI.

Thaumcraft 4 research table tweaks This mod brings a reworked research table GUI. Features Tutorial and research pages where expanded to include expla

null 7 Dec 19, 2022
An open-source, mod-friendly Android+Desktop remake of Civ V, made with LibGDX

Unciv - FOSS Civ V for Android+Desktop What is this? An open-source, mod-friendly Android+Desktop remake of Civ V, made with LibGDX Is this any good?

Yair Morgenstern 4.7k Jan 5, 2023
WynnLib is a Fabric mod that aims to provide data-related functionalities for the server Wynncraft

WynnLib is a Fabric mod that aims to provide data-related functionalities for the server Wynncraft. The mod inherits from the mod WynnInvManager (WIM), but comes up with a better framework design and supports newer Minecraft versions. As an open-source project, the contribution is welcome.

Sihan 13 Nov 20, 2022
Android OpenGL ES 2.0/3.0 Engine

Build Status Master Branch Status Develop Branch Status News 06/23/2017 Bombshell 1.1.970 has been released. It fixes behavior of Objects of zero size

null 2.2k Jan 9, 2023
Free Android 2D OpenGL Game Engine

AndEngine Donations While developing AndEngine was a lot of fun, it also also consumed many(!) months of my life. It actually continues to cost me a s

Nicolas Gramlich 3.2k Jan 5, 2023
2D physics engine for games

LiquidFun Version 1.1.0 Welcome to LiquidFun! LiquidFun is a 2D physics engine for games. Go to our landing page to browse our documentation and see s

Google 4.5k Dec 31, 2022
a 2d Java physics engine, native java port of the C++ physics engines Box2D and LiquidFun

jbox2d Please see the project's BountySource page to vote on issues that matter to you. Commenting/voting on issues helps me prioritize the small amou

jbox2d 1k Jan 2, 2023
A cross-platform Java game Engine (Framework) , support JavaFX / Android / IOS / HTML5 / Linux / MAC / Windows

Loon Game Engine (Java Game Framework) EN / KR Free Game Resources Links Download Loon Game Engine Only Android-studio Template : androidstudio-templa

cping 502 Jan 4, 2023
Game made with Korge (Kotlin Multiplatform game engine)

MolesAttack Kotlin Multiplatform Game Play Html/js: https://feliperce.github.io/MolesAttack-Distribution/ Jar: https://feliperce.github.io/MolesAttack

Felipe Rodrigues 10 May 30, 2022
Korjector is a KorGE game engine-based multiplatform client for Projector.

Korjector is a KorGE game engine-based multiplatform client for Projector. An internal JetBrains Hackathon 2021 project to demonstrate that a Projector client can be created in less than 48 hours for any OS that supports decent canvas 2D API.

Sergei Bulgakov 10 Nov 20, 2021