This is a screenshot from the world editor (the “Immortal Editor”) i’m
developing for my 3D game engine (“Undead Engine”). It actually shows
the basic GUI (viewports, 3d preview) and a small scene made of solids
with different materials. Also in the viewports you can see the “camera
position” (Top viewport also shows where the camera looks) and the
“pivot” which is used for some editing operations as the “center” of the
operation (for example when toy rotate some vertices, they’ll be rotated
around this point).
Currently the editor itself (that is, the “editing code”) is in a very
early stage - it’s basically work of a few days (see below). However,
the editor is already able to be used for the creation of simple
Quake1-like worlds, since it supports:
* solid creation/deletion
* multiple selections of faces
* moving of whole faces or individual vertices
* rotation around the “pivot”
* scaling from the “pivot”
* manual and automatic UV mapping for faces
* ability to convert solids to “rooms” (aka the “Hollow” operation in
most editors :-)
* client/server approach for editing
* internal editing language which can be used with the “Console” to
edit the world data (actually the GUI actions are translated to IEL
commands and ‘sent’ to the editor server)
The editor is based on SDL and
BSGUI, a crossplatform
(ideally) OpenGL-based GUI toolkit i started two months ago. And of
course it uses the Undead Engine :-).
The world data manipulation code is one of the most recent things (i
started coding them a few days ago), while other stuff is a bit older.
For example the “Undead Engine project” is 1y2m (although i had some
great ‘holes’ of some months in it’s development - and the engine was
written from scratch three times).
There are lots of things i would like to put in it to be able to safely
say that it is “production ready”. The major thing will be to be able to
use the engine for a “test walk” in the map (in other words, “make the
‘Full Preview’ button do something”). This requires Undead to be able
to render full worlds (it can do that, but currently it just sends the
whole level data… it must use a occlusion culling/hidden surface
rejection/pvs set of algorithms to speed up things).
Other things are new world editing features, such as duplication,
extrusion of faces, prefabs, paths, curves, etc.
Also i would like to add code for real client/server situations: make
the editor listen for connections in a socket (server) and other editors
to be able to connect to that and work on the data that it has. While
the current design supports that (and i’m carefully trying not to break
it), it isn’t a big priority (the “protocol” isn’t good for slow
internet connections - if for internet at all actually, and i only have
a dialup, so not much use for me now).
That was it for now. I will upload some more stuff as time goes and
development proceeds :-).
Please log in or register to post a reply.
excellent work, congrats on how far you’re bringing this along. I’ve
always wanted to make my own engine, but whenever I start it I always
come up with a new engine name and start from scratch :dry:. Especially
if Im off the project for months - I just cant get back on it after
that. Great stuff you got going.
Maybe Ill just be a worker bee my whole life…
Hehe, don’t worry… personally i started around 40-45 engines with most
(\~35) of them being only a bunch of header files :-) and the rest
(minus 2-3) to be nothing more than a rotating cube, triangle or in some
cases a 3DS loader.
Undead itself was written three times from scratch:
#1, in C. I made a nicely small framework around OpenGL. Since i
wanted to add stencil shadows, it was the first thing i implemented (not
even texturing :-P). And that was a bad decision since i had only that
in my mind instead of designing a good API.
#2, in C. I started from scratch with the goal to design a good OO API.
However doing OO in plain C is very hard, so soon (actually after 4-5
days) i made…
#3, in C++. Which is what i’m currently working on :-).
Also in #3, i decided to not go and work on the engine from day 0. I
decided to think a bit about how things should be. I started keeping
notes in a small notebook about the engine development and such, but it
didn’t worked for more than a couple of weeks :-P.
However, the most difficult part is to start. When you have something
basic to work with, things come easier :-).
I know exactly what you mean, but at least you’re sticking with this one
now, hopefully for a while yea? I’ve come to the point where if someone
asks me how to go about making an engine I give them this:
you need three things:
the nebula 2 engine source
the irrlicht engine source
and the catmother engine source
Now cut and paste as much as you can from there and be on your way - but
make sure you understand anything you decide to cut and paste (unless
it’s math :wink:)
I’ve added some basic lightmapping… it has some artifacts but i think
that they’re because i use the edges of the map as texture coordinates.
However i’m too tired right now (it’s 5:24 am :-P) so i’ll try to fix it
Colored lightmapping, multiple lights, different light sizes
It’s good to see that you’re still in the zone. Are there any demos or
anythign available of your engine?
No, not yet. I need to implement BSP, frustum culling for objects and
some sort of collision detection and response before i release
Ok, some updates here. First, a screenshot:
Then, what’s new :-):
a) added BSP tree-based rendering and frustum culling
b) added BSP tree-accelerated (:-P) collision detection (only
c) hacked in some basic camera movement (actually i attached a camera
to an object and i’m moving that object in the space - a better camera
controlling scheme will be used at the future)
d) everything (bsp, lightmaps, lights, etc) for a world is saved in a
single .uw (Undead World) file.
e) objects placed in space get “enlighted” by the static lights from
also i made a page for the engine
which includes a downloadable demo for Win32.
Unfortunatelly the editor relies a bit on the 64bit nature of my
platform (64bit Linux), so currently there isn’t a Win32 version of it.
I could crosscompile a Win64 version (for AMD64 + Win64 owners) but i
don’t own Win64 to test it :-P.
I still need to do:
a) Occlusion culling (mostly PVS - does anyone have a good
description of these? I’m looking for \~2 days on google and i can’t
find anything that explains the algorithm(s) well enough)
b) Object-object collision detection (that’s easy but i have other
priorities now - see “a”)
c) Probably add axis-aligned boxes as alternative bounding volumes
(currently only spheres are supported).
I can’t fit the model through the Door!!!!
Works like a charm dude
As for the occlusion culling. If I remember correctly there is a
occlusion technique (a lit of em actually) described on gamasutra
here they are:
Undead Engine Demo #4 is out and now includes the Immortal Editor (an
improved version from what is seen in the original post’s screenshot):
Also it includes, for the first time, ultra resolution lightmaps
generated with soft shadows (crude area lights :-)). I’ve optimized the
lightmap generator to use a BSP tree and reduced the time to build
ultra-res lightmaps from 25 minutes to 43 seconds (with hard shadows
since Linux was killing the editor when i tried it with soft shadows
Unfortunatelly the ultra resolution requires an enormous amount of
memory: 42MB of video memory and 128MB of free system memory. For those
who don’t have these hardware requirements, a separate downloadable
version of the sample world with low resolution lightmaps is
available. With the lowres version the requirements drop to 1MB of video
memory and 32MB of free system memory.
Tell me fps (there is a counter in the window’s titlebar) and system
50 fps, gForce-4 (128 mb), 2 ghz, 256 ram, winxp. The engine ran fine,
but the editor was giving problems. Like the fonts got lost when i trie
to apply different material to the roof. But working really well
Fixed a major bug in the BSP usage… it took me a lot of time to
track it, mostly because i was thinking that it was a bug in the BSP
generator… :-P. Then i moved to Athens and forgot about the engine for
around two months.
Anyway. Three new screenshots from a contributed map (partially
A new feature of the engine is the inclusion of “strong lights” which
can be used for making a “sun”.
Anyway, the development is more or less left behind… i’ll try to work
on simple things for the moment (such as adding a skybox) because i’m
not very motivated to work on more difficult parts (such as adding more
everything set to “full”: ultra-resolution lightmaps, soft shadows,
16xAA, 8xAF and 1024x768 (that could be higher but my TFT screen
supports up to this resolution). This runs at around 60fps in a
GeForceFX 5950Ultra (256MB).
and lastly updated version of the
binaries (scroll down for the link).
At this point i wonder what to do with this post… should i make a new
one (with the next screenshot) or update this one?
Shots look nice. How about you submit a new Daily Image on your latest