You are browsing as a guest. Sign up (or log in) to start making projects!

Origin Engine

  • 9 Devlogs
  • 74 Total hours

A 3D pixel-art cross-platform game engine that runs natively on Windows, Linux and Web! Used to develop the Janitor Space Program

Super Star

As a prize for your great work, look out for a bonus prize in the mail :)

Ship #1 ✨ Blessed

I made a custom game engine from scratch! it has a fast opengl pixelart renderer, builtin physics, lighting, an entity-component system, a spatial audio system, terrain system, it can load and save scenes on the fly, supports many 3d asset extensions… Its what i used to create my other big project! (JSP)
the engine is cross-platform and works right out of the box for linux, windows and web!! and also it comes with a lightweight level editor and ive also made a website for it
Hope you like it!! :yay:

made with <3 from @aloyak

  • 9 devlogs
  • 74h
  • 19.01x multiplier
  • 1696 Stardust
Try project → See source code →
Open comments for this post

5h 26m 3s logged

ORIGIN ENGINE

version 0.19.3

First ship is coming up soon! Even tho ive been working on really
exciting stuff, i really would like to focus on actually learning and
having a deep enough understanding of vulkan and other stuff like the
best engine’s architecture before actually logging and building
something open and usable, thats why i feel this is a good place to
finally ship this project as it is and maybe come back to it at some
point

Pre-ship checklist!

  • I’ve updated the website! now you have a few new sections with new
    information like the game i build using this engine and other cool
    stuff!

  • published a new version to the github releases page (0.19.3 i think),
    with the binaries for the demo game and the sandbox for both windows and
    linux! the web build is still there on the website but it is marked as
    legacy tho

Its been super fun to work on this and ive learnt a lot but i really
really really think i could make something so much better with all the
knowledge i now have and with some serious research, this is pretty much
what ive explained in most of all the previous devlogs (the last 2 or
3)


I’ve been working on applying some of the stuff ive been working on to
the engine, like the new renderer class its now pretty much ported
nicely! ive also tested that everything worked cross platform and yay!
the project is very ready to hold any new game or project you might
wanna do with it, although i might wanna make a quick tutorial on how to
work with the engine on a github repo cuz its not very intuitive

Known issue

I’ve been trying to add support to the engine for builtin shaders but
ive realized that its a super deeper problem than what i was expecting,
id honestly do something like making all the shaders be done with
something like slang and then compile them to spirv without any glsl
intermediary


PD: the video you see is a demo scene you can find at
assets/scenes/physics.scene if you wanna try it by yourself!!!

0
0
138
Open comments for this post

10h 2m 17s logged

ORIGIN ENGINE

I’ve finally managed to port enough of the original engine to setup an imgui layer to have this little built-in launcher! it currently only works when using opengl, but its completely supported by both the windowing backends (glfw & sdl3) Its hard to make videos like this on a steamdeck so please like lol.

Other stuff

  • I completely restructured the new engine architecture to be a layered system, the engine holds a stack of layers and updates them independently! each layer holds stuff like OnAttach OnLateUpdate OnEvent etc, which is a much better approach compared to what we had before!

  • I created a completely new custom file system, as the sandbox and games use completely different files and base directories, you can now mount/dismount different “aliases” for each program, so you can find your assets easily with custom virtual paths like sandbox://settings.json or project://scenes/scene.json

  • Literally ported the scene/entity system right from the previous version, but it is a lot smaller currently, because the previous one wasnt really good, we now can load scenes from a file but now those get added to a scene stack, which is a lot more efficient if you wanna load them again!

  • Overall the project’s code quality is so much better too!!

After these bases are set im gonna be focusing on getting a full render layer working with at least opengl, even tho the vulkan renderer is already setup…

PD: Origin Zero is just the new “protoype” name i gave it, just like with when i started this project i called it Origin “Zeus” lmao

0
0
21
Open comments for this post

9h 8m 45s logged

ORIGIN ENGINE

I’m sorry in advance that these and probably the next few devlogs wont have very exiting things or new and awesome information but sometimes you gotta focus on boring structural stuff that its just not really fun…

The new Project-Based System

  • The engine is now very dependent on the sandbox editor, sort of like a symbiotic relationship between the sandbox and your code editor, because thats where you will not only handle your assets but also play the game. The previous version just had the sandbox to be a tiny map editor tool that not even i would use half of the time

  • The project (also called environment) then would have its own “environment” literally where all your assets would be included, with very little naming restrictions, this would make working on the project super easy and itd be easy too to use git with it (maybe build a builtin git UI??? it could be cool)

I’ve already built the base for it and I’ve already added support for ImGui only for the OpenGL backend, i was thinking of adding a different UI system but this one will do for now :))

0
0
14
Open comments for this post

8h 21m 53s logged

ORIGIN ENGINE

A NEW UPDATE!

I’m building a huge update for the origin engine! it might even be considered a new engine all together. The same philosophy is still there but I’m re-writting and refactoring the base structure of the whole engine. For now this refactor is close source tho, ill publish it once its ready for ship!

What we currently have:

I have the structure already though:

  • A new project-based system where all the shader compilation and asset handling is done for each project, this + a simple abstraction layer should allow the sandbox to be a hugely more important tool as you will be able to play your game right in the editor!

  • Compile time switch between SDL3 or GLFW for windowing, input is not yet “ported” if you consider it that way

What i wanna add but may be difficult

  • Runtime api switching between OpenGL, Vulkan and DirectX3D 11. even tho for now i have a super basic abstraction layer and only opengl is even able to initialize so….. maybe too hard i hope i manage to do it tho
    , was thinking of doing a similar thing for switching between physics engines like bullet3, physicsX or Box3D, this is very much in the future of course

  • Project export/ editor previews

This is a major step and im learning a lot!! but its very difficult to handle new stuff like vulkan with other new c++ architectural stuff, hope it goes well

0
0
11
Open comments for this post

7h 36m 54s logged

ORIGIN ENGINE

Another update to the best game engine there is that starts with the letter “O” :yay: (i think). Today’s devlog is small, bust most likely will be start of a new series of very much needed updates to the engine!. It’s important to note that most of the things ive been working on are not yet finished :((

New stuff!

New things that are completely finished:

  • Fix the sandbox UI, it was missing imgui flags from previous bug fixes i had to do because the docking branch of imgui was broken, they fixed it so i just rolled back!

  • Cleaned up the rendering class, specially important for the new updates im working on, because im gonna need to do a hell lot of abstraction!

Things im working on

Im taking the current base of the engine to make a new “modular” system just for the love of the game, the most basic thing ive done is to allow the user to choose between SDL3 or GLFW for windowing, although input is currently only handled with SDL3 regardless….


There’s a lot of exiting stuff coming SOON^(TM), hope you like them!! (vulkan?, probably not lmfao)

PD: yes! this is the origin engine running nicely in a steamdeck!!!

0
0
17
Open comments for this post

6h 43m 35s logged

ORIGIN ENGINE

Yippi :yippee: another round of improvements to the best and certainty not over engineered game engine out there! Out of all the things ive been working on with the engine ive only really finished one, but it was rather a big change tho

NEW input system

I’ve added a new action-based input system that handles by itself connected devices (because we now support gamepads!!! :yay: ), input modes and preferences, keybinds and settings all in one simple system

  • The new system instead of reading “raw” input from SDL3 now instead has a wrapper that sets all input to “actions”. All actions have assigned a certain key/button/axis etc…

  • It allows you to use keyboard/mouse and gamepad all at the same time

  • Games can now have support for handheld devices like your steamdeck!

Support for precompiled shaders (GLSL -> SPV)

This is still work in progress!! The engine itself supports the compiled GLSL files very quickly but the problem is to get those shaders to compile in the first place

  • The shader class gets the relative path for the shader, before actually compiling it, it checks if theres a file with the same name but that ends with “.spv”, in that case it uses that one

  • Right now theres not an easy utility script that will handle compilation for you, that needs to be done next!!

Dynamically Chunked Terrain Collisions

Very early and of course WIP, I still haven’t done much but i have a pretty good idea of how this will work: You bake the local position of all the vertex of a terrain model and then, when you require it, you get all the triangles close to the player in real time (with a basic “chunked” system), then Bullet3 generates that mesh collider rather quickly as the mesh is not so big (this will probably require multi-threading :fear: ). More on this on the next devlog


Other small changes

  • Fixed the sandbox not having docking enabled
  • Added ImPlot3D to project, might use it at some point

PD: This picture is from my other project that you should check out! It showcases the new terrain system (WIP)

1
0
119
Open comments for this post

8h 9m 7s logged

ORIGIN ENGINE

I’ve been adding some quality of life changes that make working with this engine a lot easier, which means more abstraction in some cases which is not always the best but whatever. Ive also worked very hard on fixing and improving the physics (even considered porting it to now use Box3D instead of Bullet3, but that will probably happen in the far future, and Bullet3 will be kept as a fallback)

What have i been working on i see you ask?

  • Added the ParentEntityComponent, a very simple work around for the lack of parent-child entities on my engine, this will probably be deprecated sooner or later but its a decent solution instead of doing all the work all at once

  • Added GetRefreshRate to window class, so for example, your game can set the target fps based on this

Changes to physics system (Bullet3)

  • Fixed a super hard to find bug where models vertex and physics-engine vertex would have shifter coords and would make the objects act weird on real time, this is such a huge change, it makes physics really good to play with, see the video!!

  • Added functions to apply force, impulse and torque to a dynamic rigidbody

  • Added the teleport function for kinematic rigidbodies

  • Added getLinearVelocity and getAngularVelocity

  • Added options to freeze rotation on independent axis

  • HUGE: allow the engine to support different physics worlds to live in one same game in real time! this needs some work tho, not featured in the video

PD: This is getting super nice but also growing in complexity, once i finish with my game i will surely start improving the overall structure and start thinking about more serious changes, maybe another graphics api????

0
0
15
Open comments for this post

9h 19m 56s logged

ORIGIN ENGINE

Yippie! :yay: another update to the engine powering my game, i’ve added quite a lot of things but also managed to clean up some dead code in the way. The most excinting new thing is probably the new postprocessing layer system!

this is what ive added in the past 3 weeks:

  • Postprocessing layer: you can now code different vertex & fragment shaders that drawn on top of the main buffer, you can stack as many as youd like in order to create many new cool effects

  • spent hours trying to fix the sandbox editor’s rendering being completely broken, took about 3-4 days lol

  • added new getters to camera like a directly inversed view matrix or setMat4() and setTexture() functions with shaders

  • add localToWorld() and worldToLocal() to the transform class

  • fixed specular lighting leaking to some dark areas

  • fix handle untextured materials in model import

  • added a built-in user settings save/load system based on json serialization

  • refactor a part of the audio system to now have built-in fade ins/out, volume control and async background music

The biggest change coming up would probably be to develop a dynamic rendering system that allows me to use different cameras rendering at the same time, as I’ll probably need it for JSP

PD: this engine is being used for my current main project (almost 100 hours!), please check it out! JSP: https://stardance.hackclub.com/projects/14066

0
0
15
Open comments for this post

9h 33m 14s logged

ORIGIN ENGINE

This is my custom engine that im using for my other big project, the Janitor Space Program (go check it out!: https://stardance.hackclub.com/projects/14066), most of these changes come from having to create or update an engine feature so that the game im building is easier and faster to develop, and in the meantime im also upgrading this engine to something more powerful and mature, although i feel like im making it also a bit more complex or spaghetti, ill work on that later


over this last 2 weeks ive added so many features like:

  • improved logging library, allows you to use formatting directly
  • support for embedded textures in .fbx models
  • added a lookAt() method to the camera component
  • fixed web support for the audio system
  • added more features and functions to the in-house math library, like the cross and dot products, a 4x4 Matrix and other small stuff
  • scenes now can be either “.json” or “.scene”
  • sandbox: shortcut to align an entity to the sandbox scene view camera
  • added color tint to the skybox component
  • added quick line rendering for fast debugging, probably needs refactoring tho
  • added LateLoop(), which obviously happens after Loop() and its mainly used for UI and stuff
  • added setTargetFps() so that gpu doesnt work to 100% if vsync is disabled
  • changed the builtin shaders path to assets/shaders/builtin
  • wip: added imgui support to the web builds

Most relevant new features:

  • added instanced rendering! still sort of a WIP
  • added real-time texture editing, allows the cpu to have ownership of a texture instead of the gpu and do whatever it wants with it, currently just paint it
  • wip: huge refactoring of the render class to allow for different postprocessing layers to render on top of each other with custom shaders, this allows for any kind of postprocessing effect to be made without much issue, i managed to get a simple vignette shader working quickly! the render class still needs some cleanup tho

This was fun but if they gave me an euro for every seg fault ive endured elon musk would be small next to me. i love to see how this small side project i started long ago is now something a lot bigger than i expected, this literally started as a learnopengl tutorial :))

0
0
46

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…