Status Update: Native C++ FTW


#1

Hey Everyone.

As requested here is a general development update for Boundless. The aim is to make sure people know what is going on and what to expect in the near term.

I’ll also make a separate post (as championed by @heurazio, @Saint_X and @Stretchious) in the next few days that attempts to start answering a range of questions submitted by the community. There is still time to include additional questions here.

Beacons:

We released update 115 mid December. The aim of this release was the see how everyone used and responded to a reworking of the Beacon system. We sent out a survey to all players who’ve played with the new beacon system and specifically placed beacons in the world. We’ll crunch the survey results and get them posted soon. As ever, the data is really helpful in understanding the communities response to features.

JavaScript to C++:

First a little history. We initially released Boundless (then Oort Online) as an online game playable via the browser. The majority of the game was implemented in JavaScript which is the native programming language of modern browsers. The game relied on modern just in time (JIT) compilation to generate playable performance. There was huge demand by the game’s early adopters for the game to be made available via Steam. We had to switch from using the browser as the game’s application platform to our own native platform. Whilst the majority of the game code remained in JavaScript, we took the opportunity to port some of the more demanding code (specifically the conversion of the voxel chunks into meshes for rendering) into C++. Since this release we’ve maintained the browser based version and the native builds as a single hybrid code base. This architecture, layering game code in JavaScript on top of a native platform in C++, has some advantages but also some significant and unavoidable weaknesses.

When the opportunity arrived to bring Boundless to the PS4 we hit a technical roadblock. The security model on modern consoles doesn’t allow standard applications to generate and execute code. This means that we couldn’t run the JavaScript JIT to get semi decent performance. Without a JIT scripting languages fall back to the more common form of interpreted execution. But this delivers no where near enough performance. So triggered by the strict security model on the PS4 we’ve spent the last few months porting the entire game to C++ for PS4 and PC. (This was announced by Double Agent @Tahru :stuck_out_tongue_winking_eye: ).

Technically speaking we’re porting Boundless to C++11 which is a fairly modern specification of C++. Whilst the porting is a bit of a detour and has slowed the development and release of features it will turbo charge the entire game for everyone. A pure native version of Boundless will greatly improve the performance of the game on the CPU (it’ll also have a minor effect on the performance on the GPU.) The game should have a much more stable framerate as we’ll no longer be hostage to JavaScript’s idiosyncratic [garbage collector](https://en.wikipedia.org/wiki/Garbage_collection_(computer_science). Other advantages include: reduced memory allocation overhead, access to the most modern graphics APIs, universal access to SIMD instructions, and native access to multi core execution.

Think of this process as winter training for Boundless. We’re in a training montage with Rocky racing up a mountain knee deep in snow, piling up rocks, hitting tires with a hammer, and menacingly crumpling up pictures of other voxel games. No pain! No pain!

We’re also porting the Server across to C++, which in turn will gain all the benefits of the client. This’ll mean that we can have more concurrent players and active entities (mainly creatures) per world.

Release plan:

  • Release an alpha and beta of the C++ version of Boundless as a beta via Steam. This will be a beta in the truest sense on Steam. It’ll likely crash and output annoying call stacks. But if you give this version a try you’ll help us track down all the mistakes we made during the porting process.
  • Officially release the C++ version of Boundless replacing the current hybrid build. Once the C++ version is stable we’ll replace the current official version. Then we’ll have everyone playing on a single version.
  • Major feature update + new worlds. Details below.

We’re still working on the porting so don’t expect the first Steam beta release soon. But as soon as we have we have a solid idea when it’ll be available we’ll let you know.

Next Feature update:

Whilst the engineers are busy it’s given the designers and artists a chance to prepare for the next significant feature update. Describing the features we have coming deserves it’s own dev update post but I want to give you a general feel for it here. Since we launched Boundless (née Oort Online) the game was largely a sophisticated engine where the main gameplay was building. We gave you the beginnings of combat, crafting and trading, but ultimately player engagement was defined by how satisfying everyone found creative building and exploring other player’s builds. The next major feature update is going to fix this - as it will include the main central core of the game. This includes the initial player progression and a new set of final quality wrapped worlds containing all the collectable resources and world regeneration. To support this core gameplay the artists have been focused on concepting and creating all the assets required for these new features. For example, we want to have a complete set of block textures, props, items, tools, and machines - as you can probably imaging from all the concept art we’ve been posting.

The feature update will also contains the beginnings of Boundless’ original sound track :musical_score: composed by the crazily talented Peter Gregson. Maybe we’ll share something more about this soon.

We realise that the majority of players are desperate for updates and new features - as are we. All the development we’re doing is to make sure that the final 1.0 release will be the absolute best game we’ve all been dreaming of.

As ever - thanks for your wonderful support.


Private Server still planned?
Question Appeal - Community questions for the next devlog update - WIKI post
Long term game funding
Are those animations already in the game?
#2

WOW that’s cool, id love to have this update soon, I’m very exited to see al that stuff in the game. You guys are making an awsome work! hope we can see more sson also about character creation. but first the important things matter


#3

I am looking forward to test the C ++ version


#4

This is my dream come true. Can’t wait.

And even though you didn’t mention it specifically, I’m guessing containers are part of this?


#5

Wow, amazingly nice news update :slight_smile: can’t wait to read the update post with detailed description of all the new features. Must be quite a novel if you want to tell us about all of that and their mechanics. Already writing it? :stuck_out_tongue:


#6

I am not so much looking forward to it but you can be damn sure I will test it anyway so we can get those bugs smashed.


#7

My reaction to this post

But on a more serious note: Awesome! Can’t wait to see what lies ahead. :smile:


#8

C++ 11 is fairly modern? What, you know of a C++ 17 compiler yet? Or, for that matter, a full C++ 14 compiler?

It’s modern, @James, it’s modern. (I’m on the CppCon review committee. I’ve seen some code, bro.)

“Fairly” modern. No respect, I’m tellin’ ya. No respect!


#9

Just because Space Empires V is the latest part of the series doesn’t make it a modern version of the game. :wink:


#10

I just can’t wait to see a native C++ build. The game runs rather poorly on my high end PC. Added performance will be a balm to my soul :stuck_out_tongue:

Super psyched to see some of the gameplay elements start to make it in too. I like building games, but Boundless’ RPG elements are what enticed me to drop $250 for a pioneer pack for me and my wife, not the building aspects.


#11

Cant wait for it


#12

Can’t wait to sink into the Soundtrack - … Damn, now you have me again … screw you! ^^


#13

Happiness overflowing


#14

I have absolutely no idea what you mean by that. The current, most-extant version of C++ is C++11. That doesn’t make it “fairly modern”–that makes it modern. C++ 17 is (very much) yet to be–although Microsoft is taking a stab at it, and C++ 14 is mostly not implemented. (I’m still waiting for automatic function type deduction and generic lambdas. drool)

I have no idea what GNU is doing, I have to admit. (Okay, I just looked it up. The features are apparently still experimental, and there aren’t a lot of them. It’s a complex language, and these things take time. They do have some support for automatic function return type deduction, though.)

So I stand by my earlier statement. (Like this is worth arguing over. Can we just order pizza instead? With :bacon:? )


#15

I was pointing out that being the newest part of a series does not necesarily mean being modern. (As space empires is a rather old discontinued series) as C++11 was released soem time ago it can easily be defined a fairly modern specification.

From what you said it seems to be inarguably the most functional version though.

And I stand with mine, can I get a standard margarita instead?


#16

@james: For the sake of completeness … could you publish the status update as news on the webside ? it looks much better if people can see you are working on something :slight_smile:


#17

Actually I was hoping to update the website to automatically pull the items from the devlog + announcements categories. This would stop us needing to post them twice, and also get all user comments into a single location.

Either way I agree that we need to keep the news updated.


#18

PS4 beta confirmed after steam c++ beta???


#19

Looks like i will have to buy a PC Beta version too to try out the game pretty soon :wink:


#20

Are you moving all game logic off of JS, or just engine bits? Seems hard to avoid some level of (interpreted or compiled) scripting in a game (monster AI, ???)