All Projects → ertugrulcetin → Jme Clj

ertugrulcetin / Jme Clj

Licence: mit
A Clojure 3D Game Engine Wrapper, Powered By jMonkeyEngine

Programming Languages

clojure
4091 projects
lisp
113 projects

Projects that are alternatives of or similar to Jme Clj

Etlegacy
ET: Legacy is an open source project based on the code of Wolfenstein: Enemy Territory which was released in 2010 under the terms of the GPLv3 license.
Stars: ✭ 212 (+155.42%)
Mutual labels:  game-development, game-engine, game-engine-3d
Lumberyard
Amazon Lumberyard is a free AAA game engine deeply integrated with AWS and Twitch – with full source.
Stars: ✭ 1,785 (+2050.6%)
Mutual labels:  game-development, game-engine, game-engine-3d
Terasology
Terasology - open source voxel world
Stars: ✭ 3,247 (+3812.05%)
Mutual labels:  game-development, game-engine, game-engine-3d
Babylon.js
Babylon.js is a powerful, beautiful, simple, and open game and rendering engine packed into a friendly JavaScript framework.
Stars: ✭ 15,479 (+18549.4%)
Mutual labels:  game-development, game-engine, game-engine-3d
Etlegacy Deprecated
Archived repository. For current repo, see: https://github.com/etlegacy/etlegacy
Stars: ✭ 470 (+466.27%)
Mutual labels:  game-development, game-engine, game-engine-3d
Lantern
(DEPRECATED, SEE README)
Stars: ✭ 12 (-85.54%)
Mutual labels:  game-development, game-engine
Dodgem
A Simple Multiplayer Game, built with Mage Game Engine.
Stars: ✭ 12 (-85.54%)
Mutual labels:  game-development, game-engine
Scrapengine
A very simple real-time Vulkan 3D game engine
Stars: ✭ 80 (-3.61%)
Mutual labels:  game-development, game-engine
Rengfx
lightweight, expressive, extensible 2D/3D game engine
Stars: ✭ 41 (-50.6%)
Mutual labels:  game-development, game-engine
Awesome Gideros
A curated list of awesome Gideros resources, classes and tips.
Stars: ✭ 17 (-79.52%)
Mutual labels:  game-development, game-engine
Donerserializer
A C++14 JSON Serialization Library
Stars: ✭ 31 (-62.65%)
Mutual labels:  game-development, game-engine
Simpleton Engine
What a stupid name for a library
Stars: ✭ 42 (-49.4%)
Mutual labels:  game-development, game-engine
Permafrost Engine
An OpenGL RTS game engine written in C
Stars: ✭ 851 (+925.3%)
Mutual labels:  game-engine, game-engine-3d
Acid
A high speed C++17 Vulkan game engine
Stars: ✭ 838 (+909.64%)
Mutual labels:  game-development, game-engine
Ktx
LibKTX: Kotlin extensions for LibGDX games and applications
Stars: ✭ 913 (+1000%)
Mutual labels:  game-development, game-engine
Excalibur
🎮 An easy to use 2D HTML5 game engine written in TypeScript
Stars: ✭ 892 (+974.7%)
Mutual labels:  game-development, game-engine
Sparky
Cross-Platform High Performance 2D/3D game engine for people like me who like to write code.
Stars: ✭ 959 (+1055.42%)
Mutual labels:  game-development, game-engine
Pyxel
A retro game engine for Python
Stars: ✭ 9,133 (+10903.61%)
Mutual labels:  game-development, game-engine
Strawberry
A tiny 2D game engine focused on usability and simplicity.
Stars: ✭ 51 (-38.55%)
Mutual labels:  game-development, game-engine
Magictools
🎮 📝 A list of Game Development resources to make magic happen.
Stars: ✭ 8,853 (+10566.27%)
Mutual labels:  game-development, game-engine

jme-clj

A Clojure wrapper library for jMonkeyEngine. jMonkeyEngine is a 3D game engine for adventurous Java developers (now Clojure developers). It is open-source, cross-platform, and cutting-edge. Please check jMonkeyEngine Wiki if you would like to learn more about the engine, highly recommended! Also, there is jMonkeyEngine Hub that you can ask/search for questions, the community is very responsive and friendly.

The engine is used by several commercial game studios and computer-science courses. Here's a taste: jME3 Games Mashup

Justification

The best thing about making a game in Clojure is that you can modify it in a REPL while it's running. By simply reloading a namespace, your code will be injected into the game, uninhibited by the restrictions posed by tools like HotSwap. Additionally, a REPL lets you read and modify the state of your game at runtime, so you can quickly experiment and diagnose problems.

Clojure also brings the benefits of functional programming. This is becoming a big topic of discussion in gamedev circles, including by John Carmack. Part of this is due to the prevalence of multi-core hardware, making concurrency more important. Additionally, there is a general difficulty of maintaining object-oriented game codebases as they grow, due to complicated class hierarchies and state mutations.

It is from Zach Oakes's play-clj library. This summarises the delicacy of the situation perfectly.

Installation

Clojars Project

Usage

Please note that the library still in the development (alpha) stage, so there might be some breaking changes. Please have a look /test/examples for more.

(require '[jme-clj.core :refer :all])

(import '(com.jme3.math ColorRGBA))

(defn init []
  (let [box  (box 1 1 1)
        geom (geo "Box" box)
        mat  (material "Common/MatDefs/Misc/Unshaded.j3md")]
    (set* mat :color "Color" ColorRGBA/Blue)
    (set* geom :material mat)
    (add-to-root geom)))

(defsimpleapp app :init init)

(start app)

Recommended Learning Path

Demo Video

jme-clj | Clojure 3D Game Development Demo

License

MIT License

Copyright (c) 2020 Ertuğrul Çetin

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].