The JEOZ Engine is meant to be the simplest, most bare-bones 3-D game engine. When I say it’s “old school” I mean grade school, and not just because it’s written in Visual Basic. I don’t require a big engine for simple arcade shoot-em-up games I’m trying to make, and I started learning this back when you had to start from scratch. Once my games are complete, the JEOZ Engine will be an excellent starting point for others in the gaming community to build upon. I plan on doing as much as I can though, and I intend to compensate anyone who wants to join me on this project.
If there’s one feature that’s going to set the JEOZ Engine apart from any other, it’s this: A modern PC is capable of over 8 monitors, and can handle any number of GamePad devices. But there are no games made to take advantage of the possibilties. Part of the reason is that only Windows PC supports such a thing. But this works out for me, because I’ve spent my lifetime installing Windows into my skull.
So my main goal is to see 16, 24, 32, or even more people all playing one game on just one PC. If anything, for the sake of seeing it happen. I grew up on Nintendo 64, and I think it’s kind of a shame that splitscreen gaming isn’t as big as it was. Between online gaming and pushing graphics technology, I can understand why.
And while JEOZ will support playing over the Internet, that’s not going to be my focus. Running multiple copies of the game on multiple screens requires a local “server” copy of the game to connect them. So playing over a real network is naturally possible, and Internet support is unintentional, more like an accident.
Even though I’m targeting PCs, it’s not for their graphics power. When I see these HDMI PC Sticks and Windows PC Tablets, I don’t see something that’s too limited to work with, I see a challenge. Limitations have always pushed games in ways that they wouldn’t have taken otherwise. I’d like to see how much these platforms could handle. A HDMI PC Stick, plus a USB GameCube 4-player adapter, that sounds like a very inexpensive console platform. On top of that it turns your TV into a PC, which can do anything Windows can do, which is… anything.
Main Features of the JEOZ Engine:
- Written in Visual Basic Dot NET
- OpenTK OpenGL Graphics
- SlimDX DirectInput and DirectSound
- Lidgren Networking
- NAudio MIDI instrument support (soon)
- High Res Rendering, HDR, Bloom Lighting, Depth of Field, Depth-based Motion Blur
- Third Person Camera and Over Shoulder Aiming / Scanning System
- Camera Style profiles with automatic transitioning from 1st/3rd and human/vehicles
- Over 30 parameters i.e. Target Speed, Foresight, Shoulder, Glance Speed
- AimSlide/ZeroSlide – Active and passive joystick aiming speeds
- NullZone – Area to aim before rotating camera
- jeOS Hierarchical Event-based User Interface System
- Buttons, Checkboxes, Lists, Checklists, Tabs, Faders, Grids
- RGBHSL Color Selector, Open File Browser
- MegaPad – Event-based GamePad System
- Color-coded on-screen display for all console GamePads
- ButtonHit, ButtonHold, ButtonDouble, ButtonUp Events
- THUDBANG Integrated Music Programming System
- Trigger drum samples with Arcade Sticks, gas pedals, etc.
The Music system has an Intro and Outro for each MusicPiece, which will make transitioning between slices of music more natural. These vertical slices of music can have various presets, which will mute and unmute tracks to give variations on the same theme. Changes in game activity will trigger variations, or jumping to the Outro at just the right moment to trigger a MusicPiece change.
I’ve been toying around with Propellerheads Reason off-and-on since it came out in 2001, as well as Trackers back in 1999, and Noteworthy Composer around 96. Actually my music experience goes back to 1992 with SNES Mario Paint. By now I’ve learned enough to make a much simpler sequencer and sampler, perhaps even a built in synth someday. For now I’m using DirectSound, outdated as it may be, but I doubt it will ever be obsolete because too many apps use it. If I weren’t going PC-only I might get into OpenAL, but I already knew DirectSound from a long time ago. It has all of the standard effects built in: Equalizer, Reverb, Echo, Compression, Distortion, and Chorus.
The Camera System is set up with profiles for various characters and vehicles. When switching Camera Styles, it automatically transitions its 30+ parameters, preventing any sudden and jarring movements. The numerous parameters allow for a wide range of aiming types, I can imagine it controlling slow-moving turrets and tanks just as well as humans. It will also be able to zoom in to prevent being inside of walls or winding up inside the character.
I’m working with the possibility of optionally running the single-player game with a second copy of itself in the background as the “server” to handle the game logic. Right now I use this for my debug window, the server runs on my second monitor and the game sends log messages to it over the “network”. Usually the server does the game logic anyway, and I like the idea of running it in a separate process on the same machine. This forces Windows to separate the two processes completely, on a level higher than multi-threading.
As far as the more boring internals of the engine, there’s a system for timers and tracking statistics. Averaging out numbers over time is necessary to follow what’s going on at 60FPS. The Font Renderer does borders and drop shadows for easy reading. The text system has fixed and variable modes, and a tab system for getting lots of data on screen. Dot Net’s Reflection allowed me to see a surprising amount of data that normally I’d never take the time to set up debug screens for. Another recent feature is multi-threaded loading, so that sound effects and model data are loaded in background threads. I wish I had done that sooner, it cut the boot time down to a third of what it was.
As for making the engine programmable, I want to at least have some kind of scripting in VB and C#, and eventually have a built in color-coded text editor with autocomplete. It may even be possible for me to go as far as compiling code into games that can be released on their own, but I can’t promise that much. The engine will be scriptable though, I’m almost certain of that. In any case, the whole project will be open-source eventually, so building your own game out of it will be possible some day.
Anyway, I’m trying not to write a book here, so feel free to ask about any features JEOZ may or may not have.