Hello guys…
It’s been more than a year that I have been working on this and after the last version of ReactiveECS, I think I finally have every necessary piece for this to work.
Outdoors.jl: An API-agnostic windows and inputs manager.
Arceus.jl: A super fast behavior resolution system.
A game engine 100% julia. Offering you the basic tools you need to make a games.
After a long year of work, I’m finally releasing this.
Sorry guys I have to drop a tear .
Here is a pong made with Cruise: Pong.jl
This package should be usable, i think, even if not ready to make the next GTA. Just gotta add the dependency but if you want to use it, you just need: SimpleDirectMediaLayer, ModernGL, Random, StructArrays, Reexport and it should be okay.
After that more docs, more example and most importantly more updates about this engine.
I’m so excited to share this project with all of you. Every feedback is welcomed.
(Sorry for the way this post is written, just that I’m so excited, I can’t stay in place )
You should try again, I think the problem is from the Julia version. I use 1.10.5 on my pc, yours is either lower or higher.
But I fixed it, it should work fine no matter the version
I am little bit lost.How should one add the package if a Project.toml is missing? I checked the docs and found some installation instructions here Cruise.jl/docs at main · Gesee-y/Cruise.jl · GitHub but those do not work.
(Cruise.jl) pkg> add https://github.com/Gesee-y/Cruise.jl
Cloning git-repo `https://github.com/Gesee-y/Cruise.jl`
Updating git-repo `https://github.com/Gesee-y/Cruise.jl`
ERROR: could not find project file (Project.toml or JuliaProject.toml) in package at `https://github.com/Gesee-y/Cruise.jl` maybe `subdir` needs to be specified
I think in general it would be very beneficial if you would spend a little bit of time on the documentation and add some README, otherwise people will quickly give up way too early.
I also tried to install e.g. Outdoors.jl but the Project.toml does not even contains dependencies and you added Manifest.toml which basically means that one needs to replicate a very specific environment to be able to use the package. This might not work if people use another CPU or OS.
pkg> add https://github.com/Gesee-y/Outdoors.jl.git
Cloning git-repo `https://github.com/Gesee-y/Outdoors.jl.git`
Updating git-repo `https://github.com/Gesee-y/Outdoors.jl.git`
Resolving package versions...
Updating `~/tmp/Cruise.jl/Project.toml`
[d3598698] + Outdoors v0.5.0 `https://github.com/Gesee-y/Outdoors.jl.git#main`
Updating `~/tmp/Cruise.jl/Manifest.toml`
[d3598698] + Outdoors v0.5.0 `https://github.com/Gesee-y/Outdoors.jl.git#main`
Precompiling project...
✗ Outdoors
0 dependencies successfully precompiled in 1 seconds
1 dependency errored.
For a report of the errors see `julia> err`. To retry use `pkg> precompile`
(Cruise.jl) pkg> precompile
Precompiling project...
✗ Outdoors
0 dependencies successfully precompiled in 1 seconds
ERROR: The following 1 direct dependency failed to precompile:
Outdoors
Failed to precompile Outdoors [d3598698-a7e3-42d2-87cb-a7a1f294c746] to "/Users/tamasgal/.julia/compiled/v1.11/Outdoors/jl_FHwvMs".
ERROR: LoadError: ArgumentError: Package Outdoors does not have OrderedDict in its dependencies:
I think you should spend a little bit of time and read the excellent manual on Creating Packages, which will make it much easier and less painful for people to get started with your software, which on the first look seems to be a very nice addition to the Julia ecosystem!
I got the Pong example to work, but encountered two problems (other than manually having to install all the dependencies, see what Tamas wrote above):
1: You use joinpath in some places already, but in some cases you use \\ as path separators, which doesn’t work on linux.
2: I got an Error initially:
ERROR: LoadError: MethodError: no method matching sleep_ns(::Float64; sec::Bool)
The function `sleep_ns` exists, but no method is defined for this combination of argument types.
Closest candidates are:
sleep_ns(::Integer; sec)
@ Main.Cruise ~/repos/Cruise.jl/src/ReactiveECS/src/utils.jl:48
Stacktrace:
[1] (::var"#3#4")(app::Base.RefValue{CruiseApp})
@ Main ~/repos/Cruise.jl/src/game_loop.jl:140
[2] top-level scope
@ ~/repos/Cruise.jl/demo/Pong/Pong.jl:99
[3] include(fname::String)
@ Main ./sysimg.jl:38
[4] top-level scope
@ REPL[3]:1
in expression starting at ~/repos/Cruise.jl/demo/Pong/Pong.jl:99
I’m not sure why this (presumably) worked for you, but I fixed it for me by simply inserting a round(Int, x) at the call site.
It’s also worth noting that currently this doesn’t play nice with my tiling window manager, but then again, few windowed games do.
Yeah, I just saw all these problem. Just that some packages were made a long time ago. But I corrected the problem.
I will soon (no more than an hour.) upload some sort of stable version.
I corrected most of the problem In the code and added some feature e.g: a basic asset importer