GithubHelp home page GithubHelp logo

jammees / rethink-engine Goto Github PK

View Code? Open in Web Editor NEW
9.0 1.0 1.0 1.43 MB

Versatile, easy-to-use 2D game engine for ROBLOX

Home Page: https://jammees.github.io/Rethink-Engine/

License: MIT License

Lua 100.00%
game-engine game-development roblox roblox-lua 2d engine

rethink-engine's Introduction

CI Deploy docs

Versatile, easy-to-use 2D game engine.

0.8.0 release

Interested in using it? Here's some if its features

  • Physics
  • Animations with spritesheets or with a group of images
  • Robust scene handling with symbols
  • Directional sounds
  • And more!

Editor

Rethink comes with its own editor! The editor makes it easier to work with scenes, mitigate the use of Roblox Studio whilst working with Rethink.

Source code

Still in development!

Credits

  • jaipack17 (GitHub) for Nature2D / GuiCollisionService / RayCast2
  • evaera (GitHub) for Promise
  • HowManySmall (GitHub) for Janitor
  • Brownsage for helping with Camera
  • Michael-48 (GitHub) for Iris to test Rethink
  • osyrisrblx (GitHub) for t

All the licenses and the links to the github pages can be found here!

Contribution

Feel free to open up issues and pull requests! All contributions are welcome. But before you would like to open up an issue or a pull request you should read the CONTRIBUTION.md file.

The project is not dead, it's just that I'm working on this alone and I'm not a guy known for working fast. To see the progress of Rethink check out it's development place!

rethink-engine's People

Contributors

jammees avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

vyon

rethink-engine's Issues

Implement camera presets

Camera currently is very linear and not very customisable. To fix this some kind of a handler system should be implemented.

Changes required to Camera

  • Add a :SetHandler or :SetType
  • :Render should only invoke that specific handler
  • Presets like: TopDown, Editor, SideView

As well as handlers should be easy-to-use, easy to understand and easy to add custom handlers.

Latest commits are bugged

The latest files that got commited got separated by 2 folders.

Currently I'm working on the issue now, not sure how it happened.

0.6.0 release TODO list

Create a documentation for the engine.

Files to document:

  • Animation
  • Camera
  • Collision (Link)
  • Engine
  • Outline
  • Physics (Link)
  • Raycast (Link)
  • Scene
  • Settings
  • TaskDistributor
  • Template

Features:

  • Add ShouldFlush symbol to Scene (previously DestroyAfterFlush)
  • Finish modding Rigidbody class to instead of destroying it's ui element, it should use UiPool
  • #3
  • Improve .Flush object deletion by adding each object a Janitor
  • #4 (Infinite recursion)

Bugs:

  • Calling .Load and. .Flush constantly will somehow break the Compiler and will skip objects (in my case it was the empty object, found in Scenes\Test.lua)
  • Objects getting returned don't get their properties reset

Attempt to get `Camera` into a working state

Camera is not working when it has to render rigidbodies,

Rigidbodies will just freeze in the air, no matter when the :Render method happens to fire nor what method I tried to manipulate their positions.

Better way to write scene data

Currently, it is too hard and limiting to write scene data.

This is the current way of how you can make a scene and load a box in the center of the screen:

return {
	{ Name = "Test" },
	{
		Interactibles = {
			My_group = {
				Box = {
					AnchorPoint = Vector2.new(0.5, 0.5),
					Position = UDim2.fromScale(0.5, 0.5),
					Size = UDim2.fromOffset(250, 250),
					Image = "rbxassetid://30115084",
				},
			},
		},
	},
}

What I propose instead is a way to use symbols to describe the table's role when compiling a scene.
This way it would be easier to control and identify the type of the table when compiling the scene.
As well as this feature would allow not being restricted to Category -> Group format:

local Symbols = Rethink.Scene.Symbols

return {
    [Symbols.SceneName] = "Hello world!",

    [Symbols.Category("Hello world!")] = {
        [Symbols.Group("This is a group")] =  {
            Box = {
                AnchorPoint = Vector2.new(0.5, 0.5),
                Position = UDim2.fromScale(0.5, 0.5),
                Size = UDim2.fromOffset(250, 250),
                Image = "rbxassetid://30115084",
            },
        }
    }
}

However, with what I proposed it would make compiling scenes more complex and harder to understand, since with this change we would now have to take account what type of symbol was used.

As well as it should be changed how you can add a name to your scene, because having two tables: one for the name and one for the actual scene data is messy in my opinion and makes it harder to load in a scene:

Current way of loading in a scene with two tables:

Rethink.Scene.Load(table.unpack(require(Path.To.Scene.File)))

In the future I should look further into what is the best option for both naming a scene and making writing scenes easier.

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.