Skip to content

JulGame is a 2D game engine based on the Julia programming language with the help of SDL2.

License

Notifications You must be signed in to change notification settings

Kyjor/JulGame.jl

codecov

Documentation

Trello board JulGame Logo

The Jester CoinGrabber

JulGameEditor

Example Repo

Support

If you want to support development, feel free to check out my discord server, or my YouTube channel where I make videos about game development

What is JulGame?

JulGame is an open-source game engine meant for creating 2D games (and 3d games... eventually) using the Julia programming language. JulGame uses SDL2, and CImGui for the editor. The plan for 3d will be to use OpenGL.

Why did I make it?

Because I find Julia interesting and I've always wanted to create a game engine. I would like to see a game dev scene around it as there isn't much of one now. I am not a Julia programmer (nor an experienced game engine creator), so I am sure there is a lot I am doing wrong. If you see anything that I can fix, please just let me know with a discussion or an issue.

Why JulGame?

I thought that JulGame would be a great play on Pygame. I also think it just rolls off the tongue. Also, I recently found out that "Jul" is the etymological root of “jolly”, so it makes for a great pun :)

How to get started?

] add JulGame for the latest in the package manager

] add https://github.com/Kyjor/JulGame.jl for main - RECOMMENDED as this should be the most stable branch.

] add https://github.com/Kyjor/JulGame.jl#develop for develop, which will have bleeding edge changes.

Either download the latest release of the editor, or run it by navigating to JulGame\src\editor\Editor\src\Editor.jl and run julia Editor.jl

How do you use it?

Once you have the editor open, download the example, unzip it, and then open the folder with the editor.

🔴Warning🔴 Save often! The editor may crash! We do attempt to save a backup for unhandled errors though. But it is better to be safe than sorry.

JulGameEditorOpenScene

How do you run your scene?

Navigate to your project, and cd to the directory with Run.jl, and run julia Run.jl, and it should start!

What needs to be done?

General

  • Documentation
  • Video tutorial

2D Engine

General

  • Entities can be children of other entities, with editor support
  • Tests (continuously improving)
  • Prefabs (like Unity Engine)
  • Engine time system

Visuals

  • Simple Rendering
  • Basic particle system

Physics

  • Implement box2d support
  • Raycasting

Animation

  • Animate all properties of entites

Input

  • Controller support

Scene Management

  • Multiple scene support

Editor Features

  • Sprite cropping tool for animations
  • Hot reloading with Revise.jl if possible
  • Profiling
  • Debug console
  • SDLRenderer Backend
  • Scene Grid
  • Tilemap editor
  • Multi-select entities in hierarchy and editor (in progress...)
  • Right click context menus

3D Engine

  • SDL renderer geometry
  • OpenGL
  • WebGPU

Build Support

  • Windows
  • Mac
  • Linux
  • Web
  • Mobile
  • Console

Inspirations/Credits

This is a list of references that I used in order to get JulGame where it is, along with people who inspired the creation of this (who you should definitely check out!)

  • Solar Lune, who is creating a 3d renderer. This format for the readme is also referencing theirs.
  • Coder Gopher, who has tutorials that helped me get started with SDL.
  • Lazy foo, who has tutorials that brought me the rest of the way with SDL.
  • and so many others who I will note some of in the future :)

Games Made With JulGame

Here I will be keeping a list for the first original games created with JulGame by external contributors (aka not me). If you would like to see games that I have made, check them out at https://kyjor.itch.io