#Evil Engine 3D

1 messages · Page 1 of 1 (latest)

ornate quartz
#

A Game Engine in Zig designed to create huge Open World Games (Mainly Space Games),

There is not much to the Engine right now but I hope that with some contributors it can get going.

The image attached is the logo to the Game Engine.

And its called Evil Engine because of its codebase being hella evil.

https://github.com/Evil-Engine/EvilEngine3D

GitHub

Super duper evile engine of doom!!! Contribute to Evil-Engine/EvilEngine3D development by creating an account on GitHub.

worthy salmon
#

nice presentation, a lot of information

ornate quartz
burnt pier
#

i can't build it because the vendored cglm doesn't have a build.zig file

burnt pier
#

make sure you link the correct submodule with your changes ig.. on the main repo it's what seems like the upstream one without that file

ornate quartz
burnt pier
#

i have a bunch of errors in zlib's gzlib.c, haha

#

i'll have a look at that library

ornate quartz
burnt pier
#

i have never seen this kind of c code

local gzFile gz_open(path, fd, mode)
    const void *path;
    int fd;
    const char *mode;
{
```and apparently it's been deprecated since 1990 and support is completely removed in C23
ornate quartz
#

also what do the errors say

burnt pier
ornate quartz
burnt pier
#
error: the following command failed with 55 compilation errors:
/usr/bin/zig build-lib <cpp-files> <includes> <-Doptions> -Mroot -lc++ -lc --cache-dir .zig-cache --global-cache-dir /home/rob9315/.cache/zig --name assimp -static --zig-lib-dir /usr/lib/zig/ --listen=-
ornate quartz
#

holy smokes

burnt pier
#

it's all zig build-lib not liking the cpp code from upstream assimp

#

damn that seems like a really useful library tho

ornate quartz
#

try it now

#

Er I missed something

burnt pier
#

there are also some uppercase/lowercase issues with your file names /imports

#

:1:1: error: invalid argument '-std=gnu11' not allowed with 'C++'

ornate quartz
#

aw man

ornate quartz
burnt pier
#

aw man, i tried using c++11 instead
:1:1: error: invalid argument '-std=c++11' not allowed with 'C'

ornate quartz
#

I made a version that works on WSL, ill push it and you can try it

ornate quartz
#

Although my version gives me this:

/root/.cache/zig/p/NFD-0.0.0-erBH3-GJBgA2FF9iwLK3ZdQCqyjVxCgTMdAT_Ffsi5fY/nativefiledialog/src/nfd_gtk.c:10:10: error: 'gtk/gtk.h' file not found
#include <gtk/gtk.h>
         ^~~~~~~~~~~~
editor/assetBrowser.zig:1:1: error: unable to load 'assetBrowser.zig': FileNotFound
editor/main.zig:7:30: note: file imported here
const AssetBrowser = @import("assetBrowser.zig").AssetBrowser;
                             ^~~~~~~~~~~~~~~~~~
editor/projectManager.zig:1:1: error: unable to load 'projectManager.zig': FileNotFound
editor/main.zig:10:32: note: file imported here
const ProjectManager = @import("projectManager.zig").ProjectManager;
                               ^~~~~~~~~~~~~~~~~~~~
editor/viewportCamera.zig:1:1: error: unable to load 'viewportCamera.zig': FileNotFound
editor/main.zig:9:32: note: file imported here
const ViewportCamera = @import("viewportCamera.zig").ViewportCamera;
                               ^~~~~~~~~~~~~~~~~~~~
src/bindings/c.zig:1:1: error: unable to load 'c.zig': FileNotFound
src/mesh.zig:7:19: note: file imported here
const c = @import("bindings/c.zig").c;
                  ^~~~~~~~~~~~~~~~
src/utils/file.zig:1:1: error: unable to load 'file.zig': FileNotFound
src/shader.zig:1:22: note: file imported here
const file = @import("utils/file.zig");
                     ^~~~~~~~~~~~~~~~
src/utils/logging.zig:1:1: error: unable to load 'logging.zig': FileNotFound
src/application.zig:5:25: note: file imported here
const logging = @import("utils/logging.zig");
                        ^~~~~~~~~~~~~~~~~~~
burnt pier
#

yep that compiles everything to objects now, one stop further

#

now it complains while linking about duplicate definitions

ornate quartz
burnt pier
ornate quartz
#

if that does not work ill try fixing it

burnt pier
#

same error

ornate quartz
#

I think I found the issue

burnt pier
#

here's a patch for the the @imports having the wrong upper/lowercase sometimes

ornate quartz
burnt pier
#

compiles!

#

now you just have some path problems at runtime :P

ornate quartz
#

If you have anymore issues you can make a Github Issue, or just post them here

#

Goodnight and thanks for all the help

burnt pier
#

runs after fixing the paths :)

ornate quartz
#

Your patch has been applied, And this finally fixed linux support.

ornate quartz
desert valley
#

On macOS, the build fails during the assimp build:

Build Summary: 13/19 steps succeeded; 1 failed
run transitive failure
└─ run exe EE3D_Editor transitive failure
   ├─ compile exe EE3D_Editor Debug native transitive failure
   │  ├─ compile lib assimp Debug native 60 errors
   │  └─ compile lib assimp Debug native (+6 more reused dependencies)
   └─ install transitive failure
      └─ install EE3D_Editor transitive failure
         └─ compile exe EE3D_Editor Debug native (+14 more reused dependencies)
#

Also, a lot of " a function definition without a prototype is deprecated in all versions of C and is not supported in C23" which someone else mentioned, and some stuff with macOS devtools it seems

#

Full log here, but no pressure to look at it. Someone more familiar than I might know what's going on

ornate quartz
#

Ill get on it

ornate quartz
#

@desert valley Give it a try now

ornate quartz
#

Stuff that needs to be done, If you want to help.

  • Move ZigSTBI, ZigAssimp, and nfd-zig to Evil Engine (Only I can do this),
  • Rename projectdata.zig to project.zig and ProjectData to Project,
  • Make ProjectData into a binary file instead of json,
  • Make solarSystem.zig which will be a struct that contains the Planets inside of it and the Main Star,
  • Make Galaxy contain every Solar System in it,
  • Possibly add Vulkan (Most likely no for now),
  • Possibly add Ray Tracing as a Optional Graphics Setting (Most likely no, Cause RTX is over rated),

This is everything needed for EE3D Version 0.1

#

Version 0.2 will have more stuff, But scope creep is da devils work.

#

I might rename the Engine but I think Evil Engine 3D is a nice name

desert valley
#

Much better! It builds, although I think something is busted still:

[Info] Loaded OpenGL profile
/Users/ozuwo/Documents/projects/EvilEngine3D/zig-out/bin/Assets/Rock051_1K-JPG_Color.jpg
[Info] Reading at path: default.vert
[Info] Reading at path: default.frag
UNSUPPORTED (log once): POSSIBLE ISSUE: unit 0 GLD_TEXTURE_INDEX_2D is unloadable and bound to sampler type (Float) - using zero texture because texture unloadable

Attached image is not modified at all. Also: I love the name Evil Engine! It's super cool.

ornate quartz
#

Also I think MacOS users will need to use a worse texture quality, Until I switch the engine to Vulkan

#

I did some research and I'll have to add Metal support to the engine for MacOS to work

#

or WebGPU

desert valley
shy oasis
#

To prevent it add -Wold-style-definition to the CFLAGS

shadow jackal
covert jungle
ornate quartz
#

also the engine uses OpenGL 4

#

I guess slapping MoltenVK in there is fine

#

BTW, I have transferred every dependency made by me to the Evil Engine Organization on GitHub, Please get the newest version because all the old ones are broken now.

shadow jackal
#

MoltenVK broken, Metal 1 platform only, don't waste time on this
It's Apple problem, not developers

ornate quartz
ornate quartz
#

Progress Update!

  • Added warning for using MacOS.
  • I am making Asset Browser use actual files on the disc instead of fake ones.
ornate quartz
#

Dead Thread aaaaa

#

I may do zlib for the Galaxy File's

ornate quartz
#

3 New icons, Galaxy, Planet and Star (Star one might need a redo)

ornate quartz
#

Also I should work on some better serialization of the project.zig and galaxy.zig cause its very messy

ornate quartz
#

this is a mock galaxy

ornate quartz
#

Added every dwarf planet, Ceres is not in this photo but it is in the Mock Sol System

ornate quartz
#

Just as an update, This Engine is designed to create Large Open World Vehicle Building Games, Mostly in space.

The default project that it will make when you open the engine will have the following things:

  • project.EEProj,
  • Assets (Folder),
  • Galaxies (Folder inside assets),
  • Milkyway.EEGalaxy (Inside Galaxies folder and this galaxy will only contain the Sol System).

In theory the Engine should support 9,223,372,036,854,776,000 stars in 1 galaxy, But idk yet cause its not done.

#

A little limitation of the engine is that a game can only have 1 galaxy