Terra Zero

View previous topic View next topic Go down

Terra Zero

Post by the-anger on Mon Dec 14, 2015 12:48 am

old thread is old, with a lot of WIP posts that muddy things up. so i'll stop giving the dirty details except where it's worth mentioning.

that said.... MB is virtually dead, and in the last few months has not been even playable for me in terms of latency. i need my fix, and from what im hearing around, im not alone in that...

moonfix was a colossal failure on my part. i take full responsibility for that mess. at the same time.... i was out of line to announce something years earlier than i should have. the situation is starkly different now, however.

at this time, the issue of a game engine, customizing thereof is about to be resolved... 0Volt - a continuation of the original plan for an Lua-based game engine to power any MB replacement game i had in mind - is nearing the point where actual games can be done with it.

this engine is built with:

* SFML - easy interface to input (dual joystick-input anyone?), OpenGL & windowing, sound / music (via OpenAL), networking and primitive threading constructs (basic thread control and critical sections). custom source build used for static linking.

* Bullet - an open source physics library. custom source build used, dynamic link.

* Lua 5.2 - an efficient stack based scripting language. std build, dynamic link.

* variants - my own addition, a universal data container construct. necessary to make C++ <-> Lua communication painless (it most certainly is not otherwise). for this reason, it is _the_ building block of game objects and scriptable elements of the engine.

* 32bit gcc 4.8 / gnuc++11 standard, not fully c++0x11 compliant but close enough (lack of c11 headers due to compiler version mismatches, but c++0x11 language elements are all working). Boost was considered but in the end not really needed.


so at this point it's purely downhill. the hard parts are done / taken into account.

presently im building the engine pipeline and game object handling code.

in previous engine versions this was self-contained inside Lua - the idea being that Lua could script the entire engine and subsystems - this was folly, especially when parallel processing was deemed necessary. so 2 years of rewrites and more rewrites ensued. and here we are today. full circle, but this time around with all the tools necessary to keep going even further than ever before.

in this design, the engine has literally everything it needs within reach. it's entirely a matter of programming / coding / stitching together the subsystems, and basically writing out the engine architecture, as the low level aspects are, as of this weekend, more or less done and finished to a satisfactory point.


What happens now?


I'm very much on track to be at a point where i can work on actual games in 2-5 weeks from now. the window is deliberately wide because i have little to do, relative to how much has been done already, and after a minimum is reached, the engine and game(s) can be developed in parallel. i dont see more than about 3-4 weeks worth of effort, but i've also been making leaps more often than i thought i would.


because of this fast-approaching point, what i fear will happen is that i will get there, and not have the means to produce content for the game.

to be exact, that it wont be good content, because i've only toyed with the concepts and anything i produce will either take a long time or wont be very good. can't do both unfortunately. not talking about the mechanics of games, no, literally the asset-related work.

if anyone still, after all this time, is interested in working on this project, i am more than welcoming with any assistance on this. i dont know anything about arrangements yet, best talk to me privately about it re specifics.

that being said, there are three main areas i simply will not be able to cope with on my own - modeling, texturing, and audio. I also have a bottomless pit need for testers as the engine (and games in turn) get more complex, but i also have no shortage (relatively) of people wanting to test / play around with it without contributing anything otherwise, so testers are less of a priority.

but hey, maybe people want to play 'cube breakers' instead. im down with that... Wink

seriously though, any assistance will be much appreciated (and, probably, rewarded)


engine code (less SFML / bullet etc) is available with the exe (see sig).

current exe is non-graphical and just test-oriented. this will be changing this week, back to purely graphical, once the diagnostics are no longer required to verify internal IO / data flows.


other than that... will post again when theres something closer to a flight sim up and running.

- anger (slowly going insane from working on this round the clock, as always)
avatar
the-anger

Posts : 1247
Join date : 2012-07-05
Age : 28
Location : Australia (+10 GMT)

Back to top Go down

Re: Terra Zero

Post by the-anger on Tue Dec 15, 2015 6:06 pm

updates:

game objects coming along. couple of delays popping up due to planning ahead on critical sections and how to divvy out access to objects to the engine and Lua in a fair way.

however conceptually, the bare minimum is almost done with that.

what remains is the object pipeline ( zv::obj::process_updates(lua&) ) which will complete a script thread's work on game objects, given an Lua stack to work with. this implies the usage is stack-per-thread, and I may (likely will) go so far as to add a critical section to each Lua helper class instance to hammer that point across.

good news is the pipeline, being done this way, is going to be thread-pool-ready - when the time comes it wont take any effort to scale up the pipeline across multiple threads.

the pipeline wont even take long to build. im estimating 30-90 mins or around that ballpark - it's only 5-6 steps to code, and the prep work to allow it has been done over the last 2 days. the really interesting part is going to be testing this.

lastly, messages will not be specialized by object class for now. object class is a modular addition in this picture, and will come later. instead, messages for the time being will call a global function in Lua, with the first parameter being the object id it is working with, and the rest being the message args (or possibly a single table containing all of the args, idk which would be better yet, but could always write a std::vector<var> -specialized bulk-insertion if one was needed).

from here:

after testing of the pipeline, it's onto graphics and physics. both will be highly simplified initially - spheres and boxes - but as i've said too many times by now, it's much easier to build a basic pipeline first for all these subsystems, and add to them as-needed. unfortunately, as much as I want to build a sort-of-robust graphics subsystem before having to use it (ditto sound, input, physics, etc) it would simply eat up months at a time on each subsystem in addition to preempting other subsystems' final designs.

latest code uploaded.
avatar
the-anger

Posts : 1247
Join date : 2012-07-05
Age : 28
Location : Australia (+10 GMT)

Back to top Go down

Re: Terra Zero

Post by the-anger on Sun Dec 20, 2015 11:25 pm


well... another week of delays to getting something visual ready. it will be worth the wait, i promise... i kept saying 'next week' (and will continue to do so) because assuming i dont think of anything else to abstract between now and then, it wouldn't be quite so wrong... alas, i cant stop the creative juices (and dont want to) lately so a good idea is a good idea, not putting it off just to reach a milestone that, in retrospect, i shouldn't have set....


it's taken a weekend of detouring but the object pipeline is ready, just about.

message handling needs to actually swap the outbox / inbox at the end, thought i'd sleep on it as to the best way to do it - 3am isn't the best time for lucid thinking. the object system is otherwise done to a minimum point, parallel processing included!

tonight ill start testing this aspect, which really, is just to prove the multi-threading code works and is stable (no memory leaks etc) though i'm quite confident of it just because of its design approach. where possible RAII has been used for locking. this is some of my best c++ abstraction yet (assuming it works).

the locking kind of seems overkill at the moment, but it's because i don't know yet fully, from where (and when) object data will be used by the engine. that said the lock states even are implemented as template-driven scoping-and-access constructs, permitting per-line access locking or per-scope with the exact same syntax.

the detour was needed because A) i took out the parallel processing constructs for pre-emption of design reasons, and B) it was a good move in hindsight because i did end up spending 3 days rewriting them into bare-minimum abstraction layers (to such a degree it should be as fast as manual lock / unlock code).


TODO:


1. finish & test ZVOS (zero-volt object system) - tonight / tomorrow night

* object system minimally done.
* objects can be processed in real time in parallel.
* objects' logic governed by Lua scripts (main event per object + object messages)


2. graphics loop integration with ZVOS pipeline (engine pipeline started) - midweek

* engine main pipeline taking shape.
* set up for other modules' inclusion.
* ZVOS will need to be broken into an update phase and a script phase - currently they are one stage.
* ZVOS script - messages, events (compatible with graphics loop)
* ZVOS update - destroy, create, update (not-compatible, modifies global object sets)


3. graphics integration with ZVOS (let objects be rendered & control it themselves) - late this week

* objects can define their visual properties - prefab objects or mesh
* initially just 'prefabs' with minor variations such as color / size.


4. physics integration with engine pipeline - xmas weekend

* bullet physics loop becomes a part of engine loop, with scripting and graphics.
* engine pipeline likely will be abstracted into thread-graph structures.
* basic integration (such as position & velocity reporting) with ZVOS


5. game script development - by new year's

* ZVOS to get updates from GORJ (a prototype game scripting API based on same principles / approaches)
* expansion on gfx api
* expansion on phys api
* input api started
* resource management api & subsystem


6. commencement of game - between xmas and new year's

* once the engine has visuals, game objects & physics, a game can be started.
* engine dev and game dev will happen cooperatively on a needs-basis



so there you go.... around new years, give or take, should be starting on the game itself. im hoping this weekend will have a mini tech demo - from above it's achievable... (if i dont decide to shove more features in before then)

and within 1-2 weeks will be starting on game dev \o/

code repo updated (every day) as always.
avatar
the-anger

Posts : 1247
Join date : 2012-07-05
Age : 28
Location : Australia (+10 GMT)

Back to top Go down

Re: Terra Zero

Post by the-anger on Fri Dec 25, 2015 11:55 pm

updates...

fell a bit behind, irl stuff and some code fixes re parallel processing constructs.

about an hour ago, finally got the engine to process objects in parallel properly. that in itself is a huge milestone for me - it was the point of all these rewrites, and now it's vindicated \o/

taking a short break before making a start on object api for lua (to actually interact with the objects instead of just running lua code for the hell of it) and then / at the same time, starting on graphics integration.

i've revised the bullet api again; i need to think on it a little but integration between physics, graphics and scripting (Lua + game object handling code) will need to be done at the same time - a 3-way bridge built from all ends at the same time. at the least i need to keep it in mind when doing graphics and the game object api at this point.

so mini tech demo wont happen this weekend. things got in the way, out of my hands, but im on-track (somehow) for the hours i could put in this week on this. new years weekend... maybe? you know the drill. cant promise anything, but more and more likely each week.
avatar
the-anger

Posts : 1247
Join date : 2012-07-05
Age : 28
Location : Australia (+10 GMT)

Back to top Go down

Re: Terra Zero

Post by the-anger on Sun Jan 03, 2016 8:10 am

update:

no graphical demo yet. by next week likely.

milestone reached moments ago - game objects now being processed in parallel and have their properties updated via Lua script with IO caching for the duration of Lua's control. this was a necessary requisite so that game scripts can actually affect objects, otherwise the engine just processes objects aimlessly.

im finishing up message passing between objects, which relied on that working too, and am commencing on the Lua-side API - the entry points for games to manipulate the engine. from here there is enough high level code to make this quick, it will take longer to decide what to expose and how rather than actually doing it.

in reaching this point it's not going to be possible to meaningfully test the engine anymore without adding graphics, and in turn the beginnings of physics, which is why im so sure it will happen in the next few days; the "scripting" element is essentially ready to a rudimentary degree, to build on/from confidently.

in three weeks or sooner (im betting 2 if not 1) ill have started on the game itself.
avatar
the-anger

Posts : 1247
Join date : 2012-07-05
Age : 28
Location : Australia (+10 GMT)

Back to top Go down

Re: Terra Zero

Post by the-anger on Mon Jun 06, 2016 12:55 am

life happened and i've had to take a break for a few months. back now.

refer to other thread, but TL;DR - Lua-side API is in a good place to move on (i've added all the state and game object class logic there so it doesn't clutter the engine too much).

zvos scripting pipeline is more or less finalized, just finishing up a cleanup / rewrite of it.

ETA around 2 weeks for the engine alpha.
ETA around 4-8 weeks for a playable game (that's far from the final thing but can be worked on rapidly and/or collaboratively).

at this point, i am officially giving the call out for:

engine testers.

early game testers.

content creators - modeling, texturing mainly at this stage.


there will be a dropbox / box.com area where the engine and game will be shared (binaries only, no engine code excepting Lua scripts). this will be by invite only so please let me know if interested. i will be setting this up in the next few days.
avatar
the-anger

Posts : 1247
Join date : 2012-07-05
Age : 28
Location : Australia (+10 GMT)

Back to top Go down

Re: Terra Zero

Post by Loki on Mon Jun 06, 2016 5:54 am

My "free" time has basically disappeared, but can probably sit in as a game tester.
avatar
Loki
Admin

Posts : 1315
Join date : 2012-06-03
Location : Ontario, Canada

http://moonbreakers.forumotion.com/t48-this-is-the-part-where-i-

Back to top Go down

Re: Terra Zero

Post by the-anger on Mon Jun 06, 2016 11:35 pm

sweet. as i say it's still a month or two off from needing game testers.

my main concern right now is the engine simply wont run on others' computers. i've had 2 other people all in all run any version of the engine at all, and no issues then - nevermind the engine is using tech that ought to be 5-10 years old hence supported by just about everything (hardware wise anyway; it's strictly a windows-based engine).

similarly i don't know the specific opengl version i'll be using or which gfx extensions - things like that will change down the track as needed. appropriately i'll need it tested on various rigs to ensure it still all works right. etc

for now just be mindful i'll be programming for hardware similar to mine - 3930K with ht disabled and +10% turbo clock above stock (reasons), GTX660Ti 4gb stock, 32gb ram. ofc lol i wont be relying on these specs for the engine to run or a game to work smoothly, at the same time be mindful that what runs fine on my PC might crawl on yours, maybe - good news is it's less likely as time goes on.

that said -

pipeline rewrite is done as of last night.
commencing object api's and such.

i recon 2-4 days to do the object api to a basic point, give or take, so friday or this weekend i should be nose-deep in resource and module code.

"basic point" = game scripts will be able to create, destroy and query objects by their class. (if anyone wants i can give some depth to how game scripting will work with this engine). part of implementing this means i'll need to modify the pipeline slightly but that's taken into account as part of these 2-4 days.


ill be setting up a box.com account tonight, screw dropbox. (see for yourself, imo better, even the free plan)

https://app.box.com/v/0volt - dont worry, it is in fact empty except for a test note.

when the time comes (soon tm) i'll make a similar one for the actual game; i may / may not supply the engine with the game, there's only 10gb of storage with the free plan. but while the engine in itself will be < 50MB ill be working on the two separately, so idk yet - easier to keep them separate with instructions in the engine for how to run games through it. if i go down that path, it will probably be as simple as startup parameters. eg, 0Volt.exe -game terra_zero

or something like that


PS - i dont mind gitlab (where i'm hosting the engine now) but i'll be moving things elsewhere. i dont need a code repo quite as much as i need the other features - documentation and binary hosting. had sourceforge in mind but i hear mixed things about it lately, and am not a fan of github (the UI it sets up on your computer should be called sh ithub - git minus git - otherwise i have no problems with it). suggestions welcome if anyone's seen something appropriate...

OR.

code hosting aside, because i can always find something, the project needs a home. i have mixed feelings about having it here (im sure im not alone) so im shopping around for a forum host that wouldn't mind hosting something as big and suss as a game engine and/or game. again, suggestions much appreciated Smile
avatar
the-anger

Posts : 1247
Join date : 2012-07-05
Age : 28
Location : Australia (+10 GMT)

Back to top Go down

Re: Terra Zero

Post by Sponsored content


Sponsored content


Back to top Go down

View previous topic View next topic Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum