Code Monkey home page Code Monkey logo

felecs's Introduction

Welcome to my little Github Corner

Welcome :D, here is a shortlist of some projects I am proud of as well as links for trying out the ones that can run on the web.

These are grouped into "Project Types" and within each group they are sorted by an arbitrary "Favorite to Good"

Also checkout my itch page for screenshots, games, and playable demos: https://tradam.itch.io

Table of Contents


Systems, Libraries, and Tools

Rodeo Kit - C Game Development Toolkit

Github

Rodeo Kit is a game development toolkit that consists of multiple libraries I've made that come together to assist with the creation of games such as:

  • Cross-platform 2D batched rendering system
  • Abstracted input system allowing for easy implementation of many different input interfaces.
  • Multi-level logging system that allows a custom callback to redirect the output of logging.

And more still being developed!

FelECS - Pure Ruby Entity Component System

Github

FelECS is an ECS framework for developing games in the Ruby language. FelECS has been designed from the ground up with these three ideas in mind:

  1. Engine Agnostic: FelECS has been designed to be rendering engine agnostic as long as the target rendering engine is written in Ruby. This means that this framework can be dropped into existing rendering engines such as Ruby2D or DRGTK.
  2. Easily Extensible: FelECS has been designed such that extensions to its capabilities can be easily added. Extensions such as rendering engine wrappers, premade systems, premade components, etcetera can be easily added on and distributed.
  3. Principle of (My) Least Astonishment: I want to develop games using a language and framework I love and makes sense to me, inspired by the Philosophy of the creator of Ruby.

FelBind - C to mruby Automatic Binding Generator

Github

A binding generator which allows programmers to easily program with C libraries in Ruby. This tool can be used in conjunction with FelFlame Engine to easily extend the functionality of your games.
Simply give the generator the header files of your chosen C library and it will scan it and generate the appropriate bindings of any functions that are supported.


Games and Demos

๐Ÿ† Orc: Arena of Time - Top Down Innovative Obstacle Course (C and Ruby)

Play Here / Github

Help Orc the orc maneuver through the Arena of Time and reach the end!

Won the Raylib 5K Gamejam in First Place against 40 other entrants! I'm really proud of this project, give it a shot :D.

Magnet Run 3D - Gravity Ball Game (Unity)

Play Here / Github

Tech demo developed to exercise and practice the 3Cs of game design/development. In this demo you play as a ball that rolls around various objects that have complex gravity sources.

Among Us Clicker - Web Clicker Game (JavaScript/Vue.js)

Play Here / Github

A clicker game made with Vue.js where I built a custom animation and particle system to give that really nice polished feel.

Raylib DrawTexturePro() Demo - Program For Teaching Newcomers Raylib ( C )

Play Here / Github

An interactive demo designed specifically the help new programmers using Raylib to learn this fundamental function. Helps the community daily.

SteelWings - Free Roam Shoot-em-up (Ruby)

Play Here / Github

A small little shoot-em-up where you fly around and shoot enemies that have varying AI!
My first bigger project where I was able use and test FelECS, this project was done by me and a friend.

Winter One - Scrolling Shoot-em-up (Godot)

Play Here

Simple scrolling shooter that was created using the Godot game engine.
The first project where I cooperated with a teammate.

Optimal Direction - Racing Demo (Godot)

Play Here / Github

An old abandoned prototype. I worked on this project on and off for more then a year before abandoning it because of a much too large scope at the time. I learned a lot about setting reasonable expectations for projects.
Regardless I have uploaded this game as it still has some fun driving mechanics for what it is.

Card Slide Concept - Card Arena Concept (Ruby)

Play Here / Github

Inspired by the card sliding effect created by Stacklands I decided to recreate it myself from scratch to great effect!

Arbitrary Polygon Collision - Collision Detection Demo (Ruby)

Play Here / Github

My implementation of the Separating Axis Theorem to resolve collisions of arbitrary convex polygons. I made it in Ruby as I couldn't find an existing implementation of it in this language. Neat stuff!

Almost Pong - A Twist On Pong (Ruby)

Play Here / Github

A remake of Almost Pong. I wanted to see how fast I could remake a simple game using my custom workflow(the answer is pretty fast, only took not too much longer then one hour).

Ruboids - A Fishtank Simulator Using Boids (Ruby)

Github

A fishtank filled with little fishies. Click to add piranhas that chase the little fishies. The Ai of the little fishies tries to stay spread out and far away from the piranhas.

๐Ÿ‘‰ return to top


felecs's People

Contributors

realtradam avatar

Stargazers

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

Watchers

 avatar  avatar

Forkers

mathisto

felecs's Issues

Replace `sort_by!`

the sort_by! method used in the code does not exist in some common ruby implementations used for game development(I.E DragonRuby) so it needs to be replaced withsort_by

Update RubyGems

Rubygems has old notation. Need to update that FelFlame name is deprecated and use new name.

System priority change

Have an alternative option for configuring the priority of systems by having an optional config file that lists the order systems should be in. FelFlame will then read this config file and create priorities for systems dynamically.

Using floats for component defaults sets the value to 0.0

In at least one ruby implementation(DragonRuby) it appears that trying to set a float as a default will set it to 0.0 no matter what value is chosen. The suspected culprit is that the value is not cloned/duplicated correctly.

Possible fix: check if the default value is a float(or any other number?) and do not clone/duplicate if this is the case. The reason for clone/duplication is so that when passing hashes as defaults(for example) it wont edit the original hash and instead create a new one. In the case of numbers ruby treats them differently and this effect will not occur so cloning/duplication is not necessary

Fix some sections of documentation

Based on chat logs of people that sent me messages asking about how to use FelFlame I should clear up and clean up some explanations.

Performance Testing

Integrate performance testing by either(or both?) measuring the time it takes to complete each system or integrate a performance testing gem.

Cleaner way to access components and entities from entities and components

Introduce .entity and .component syntax for access if those elements.

Currently to access the first(and oftentimes only) entity that a component is attached to you need to do my_component.entities[0] and if you need to get some other component from that entity you often do my_component.entities[0].components[FF::Cmp::Other][0]. With the new proposed optional syntax this would just look like: my_component.entity.component[FF::Cmp::Other] and would function the same.
Perhaps throw a warning when you are using this syntax to access an array larger then size 1 as oftentimes programmers would want to iterate over those.

Single File Export

Have a way for developers to get the entirety of FelFlame in a single felflame.rb file which they can then easily add to their own projects in situations where they cannot install a gem.

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.