I wrote a compiler (unpublished), an OS kernel (unfinished, but I think I got the concept), a CAD program (and a lot more over the years), and now I think it’s time to do something useful with my skills – writing a Game.
I never wrote a Game before – except Pacman for a Pocket Calculator in School –, so it should be something simple. Recently I saw Cube (the Movie) again, and I thought it should be easy to implement. There is not much modeling required, only one room and a couple of persons.
All are open source, free or at least free for personal use.
- Unreal Engine 4.9 (Game Engine)
- Blender (3D modeling, animation)
- MakeHuman (Human 3D models)
- Visual Studio 2013 Community Edition (Compiler, IDE)
- Audacity (Audio effects)
Although, it should be a simple Game, I never used Unreal (or any other game engine) and Blender before, so I don’t expect to finish it someday soon, if at all.
I used Blender now for some weeks, and I changed my mind that this tool is unusable for the casual user. It is really an awesome tool. Here is a wall of the Cube I did in a couple of hours without knowing much about Blender.
Here is 1/4 of a door with animation for opening and closing:
Unreal Engine 4Top
Put together in Unreal with the default 3rd person character. The left window shows the scene in the scene editor. The right window shows the Blueprint of the door that is necessary to be able to open it with the
E key, for playing the opening and closing animation, and it even plays two different audio effects. It is easier than it looks like. This logic implemented in C++ would probably be a 10-liner.
Got the door collisions more natural, actually now the collision is turned off when starting the open animation. And made a Game Menu, which does not work except “New Game” and “Quit”.
The ladder is still not working. Climbing seems to be a major task to implement…
Result so farTop
Here is a video of the current state. Remember this is the work of two weeks done by one person.
(Recorded with MSI Afterburner)
With Unreal Engine 4 (I had only a short look at UDK and Unity, so I can not say one is “better” than the other) it seems to be feasible to create nice 3D games even for small teams.
2016-08-12: News from the Cube FrontTop
Got rid of Unread Engine, now using Castle Engine. Working with Unreal is a pain even on decent hardware (Core i5 3570K, 16 GB RAM, GeForce GTX 970). I really enjoy doing all with Blender (modeling, animations, collisions, materials, textures etc.) and a simple text editor. I also like that most can be done with X3D/VRML. For example, all the Door logic is done in VRML: Trigger Box (ProximitySensor), opening/closing, Animation, Sound. However, lightning, rendering is nicer in Unreal, but it also takes ages to compile the shaders for each surface, and I just started to play with lightning.
(Recorded with OBS Studio)
Short after starting with the first real NPC (Spot), I realized that a cat AI isn’t easy. I wish cats would just have a goat intelligence. I struggle even with the Meow interval and randomness…
Started to implement the first traps. The God mode is for debugging only, seriously! These guns are really nasty and there are four of them! Also lightning/shading is much nicer now.
Actially I wanted to create an RPG in Victorian style, but thats too hard for me. What remained is this nice Cube. Also have a look at the really nice fire in the fireplace, thanks to cge-2d-particle-emitter .
Instantiating other cubes
- Once the cube (one level) is working, adjacent cubes should be instantiated when a door opens. I read of some feature in Unreal 4 called Level Streaming, maybe this can be used. Each cube should have different traps, quests, puzzles to solve.
- Other NPCs
- In the movie there are other persons in other cubes, that may or may not help to solve some quests. I think this will be difficult because the NPCs would need some AI.
- I think the story is easy – survive and find a way out. Optionally find out what’s this cube stuff all about, why are you there, and how you came there.
There is nothing you can download yet. The code is a mess, I still play around and try different things. Once I cleaned it up I’ll release the code to GitHub. Binaries may follow when there is something playable.