0.2.0.0 ( Saturday, 21 October 2017 )
Here we are. As you can see from the major branch version increase, we’ve jumped from 0.1.x to 0.2.x. This means a step closer to alpha. This patch is the first one to include all the technical work from the past months related to networking and refactoring the entire code to entity-component-systems ( ECS ).
Download link: https://inovaestudios.com/Battlescape/Access
Now let’s see in details what that means:
Networking
The entire code has been refactored to use client-side prediction and server-side lag compensation. This means that it’s now possible to hit targets, even with 100-250 ms of ping. The previous builds were performing client-side prediction, but not lag compensation, so it was next to impossible to hit anything unless it was directly in front of you ( or coming torwards you in a straight line ). This is no longer an issue, at least for lower absolute velocities.
Due to the way networking works ( in general, not specifically for Battlescape ), you still get inaccuracies are higher absolute velocities. In addition, due to client side prediction, interpolation ( and visualization ) of other entities than you happens slightly in the past compared to you. So it’s possible for two players to experience a situation that is a bit different. The higher in absolute velocities, the higher this becomes noticeable, for example if you’re flying in formation / sync. Other games that perform client-side prediction all suffer from this issue, but unlike us they cap speeds to very low values, so it’s not noticeable.
I want to stress again that our implementation is perfectly functionnal and these issues shouldn’t be a problem in a typical game scenario or in battle, only in extreme circumstances. All games have the same limitations, which come from the networking model design itself, not its implementation. You can read more about it here:
https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking#Entity_interpolation
An alternative networking model is to skip client-side prediction, like in World Of Tanks. This is only do-able if your entities are moving relatively slowly. This also means that when you hit a key ( like for turning your tank ), the client has to wait to receive the update from the server before it can display the change. In other words, the visible input lag depends on your ping. This is okay if you can guarantee that your players will always connect to a close server with < 50 ms of latency. This is not an okay model for players that have hundreds of ms of latency, or if entities are going to move pretty fast ( in Battlescape, this means it would be okay for capital ships for instance, but not for the interceptor ).
Overall the current networking implementation is pretty much complete. It’ll need a few tweaks here and there, tuning some parameters etc… but there’s currently no plan to make any significant reworking of the networking architecture.
Authoritative server and error correction
This new patch also moved away from the client to the server-authoritative model. Previously, clients were sending information about themselves ( such as position, orientation etc… ) and the server was trusting this data. This is no longer the case. Cheating is now impossible. The server is authoritative, which means that when the client and server disagree, the server has the last word, and the client gets “corrected”. Of course, it’s still possible to hack the client to ignore the error corrections sent by the server, but there would be a desync in the situations, and other players wouldn’t notice it, and would still be able to shoot at the hacking client. So for instance, hacks such as teleporting, increasing accelerations / speeds or similar, are by design impossible from now on.
Another benefit of running everything on the server side is that we were able to introduce bots controlled by the AI. More on that in a minute. We’ve also implemented collisions detection and physics on the server side, and stress tested various scenarios with a higher number of ships in a battle.
Bots / AI and large battles
In this version we’ve introduced experiment AI-controlled bots, that are flying around points of interest ( mostly space stations ) and attacking each other ( or attacking players ). They are killable, and some are pretty dangerous. Killing them will bring credits, which can in turn be used to upgrade to new ships.
The battlefield is controlled by what we call an “AI commander”. This commander controls the overall strategy of the game, chooses to spend some team credits in important battlefields and no others. It can also send reinforcements or scouts to isolated places, based on detection status / range. Finally, it assigns “missions” to players ( asking them to join a certain battlefield ), which at the moment is just for feedback / Information ( but later on, will bring credits bonuses ).
Due to the limited concurrent of players on the server, our current server ( located in US-East ) is pretty slow ( to keep our expenses down until as late as possible ). The virtual machine runs at 2 Ghz and has 3 GB of ram and slow HDs. We’re of course planning on upgrading it by the time release comes, however that means it currently underperforms a typical gaming machine by a factor of 5 ( in other words, its cpu computational power is 5 times lower than my own personal machine ). This puts a hard cap on the amount of bots + players the server can handle. This limit is currently set to around 120 bots/players.
The AI commander mostly concentrates on a single battle at a time ( although we’ve already seen occurances where 2-3 battles were occuring in different places ), which means it ipossible in this patch to experience a battle around a space station with 80+ ships. This number will increase once we optimize rendering and increase the server caps.
New control-scheme and radial menus
In this version we’ve introduced a new control scheme, based on the mouse cursor. It is similar to what you can experience in other modern space games, but we’ve balanced it in a way that should feel pretty good, especially for new players. The mouse location on screen determines the direction your ship tries to face. It turns slowere towards the center of the screen, and faster if you move your mouse on the periphery. The old “direct” control scheme is still available with the F4 key. The main advantage of the new control scheme is that you no longer need to roll your mouse over all the time during combat, which was putting a lot of pressure on your hands. It’s also more compatible with other game controllers / sticks.
Another new introduction are wheel-based menus. Hotkeys still exist, but now most ship systems can be found in those radial menus. Visual feedback is also part of these menus ( for example, you can see if a system is on or off, or damaged ). Three menus are currently available:
-
Ship systems ( V ): toggling power, warp, floodlights, auto-assist/reverse, and overcharging.
-
Weapons and formations ( X ): weapons are not functionnal yet, but here you can choose to chase a target, match its velocity etc…
-
and finally, the new Communications ( C ) menu which introduces voice-commands, to assign orders ( or request assistance ) to other players. An audio sound will get played ( and heard from distance ), as well as visual clues on the HUD.
UI / HUD
-
Indicators have been reworked. Out-of-screen indicators are now displayed in a ring-like shape around the center of the screen ( WIP ). A shields bar has been added, next to the hitpoints bar. These meters also display the amount of points and recharge rate at their bottoms.
-
The new detection / sensors system is in, more about it in the next section. The current emissions range is displayed on the top-right as a little graph. Enabling / disabling various systems will affect your emissions range. It shows up as neutral green if you’re currently undetected, and red/orange if an enemy is detecting you.
-
We’ve also introduced various text areas for information / missions objectives, and a global chat ( press ENTER to toggle it ).
-
We’ve introduced a leaderboard showing score for players ( kills / deaths ) per team. It also shows the scores of offline players. Note that credits and scores are persistent, so even if you disconnect and come back later, you’ll retrieve your credits and stats.
Energy emissions / sensors
-
We’ve reworked the way detection works. Each entity now has a base range of emissions, which is the distance at which other ships with a standard sensor can see you on their HUD. This range starts at 200 Km for the interceptor, and increases for more massive ships ( capital ships can be seen at thousands of Km away ).
-
The emissions range is not a constant, but adapts dynamically to your ship systems / actions. Using warp will massively increase your emissions range. Powering your ship down, howerver, will massively reduce your emissions.
-
Each ship also has a sensor power, starting at 1.0. These values increase for more massive ships or space stations. They’re currently a static value, but we’re planning on making those upgradable in a future patch. The sensor power acts as a modifier to the emissions range of a target entity. Let’s take an example: I’m flying in an interceptor with an emission range of 200 Km. A enemy capital ship, far away from me, has a sensor power of 4.0. Therefore it will detect me as soon as I fly within a range distance of 200*4 = 800 Km.
-
This emissions range and sensor power system is asymmetrical. Detecting an entity doesn’t necessarily mean that it’s detecting you back. Stealth approaches are now possible.
-
A team shares knowledge about detected entities instantly, and without consideration of distances. If a teammate is a million Km away from me and suddenly detects an enemy ship incoming 100 Km away from him, I will get notified immediately by a new hostile indicator appearing on my HUD, next to where I see my teammate is.
-
For this reason, it might be hard to locate other players that are far away when they’re in an enemy team and undetected. This is on purpose. If you want to test combat with other enemy players, use global chat to set a rendez-vous location.
-
In the future, this detection system will be key to making sneaky attacks on land bases / factories before the enemy team can call for reinforcements. We are hoping it will also make scouting / exploring on planets a viable activity, for players that do not wish to participate into massive combat, but want a more relaxed experience while avoiding fights.
Capital ships
-
Capital ships placeholders are now available to players ( and bots in battles ). At the moment they use the target-based control scheme, however in the future controls for capital ships will get better adapted.
-
Flying capital ships in atmospheres is possible but might be a bit tricky. Their vertical anti-gravity thrusters are pretty weak, and be aware that escaping some planets ( depending on their gravity or atmospheric density ) might be impossible.
-
Capital ships currently fire like small ships, in the forward direction only. It is possible to aim at and destroy other capital ships, however aiming at smaller faster ships is next to impossible, unless by accident. Obviously, this will be changed once we introduce auto-aiming turrets, targets selected and more weapon types in a future patch.
-
Capital ships spawn at docks around various space stations
-
The carrier will eventually act as a spawning point for players, but it is not implemented yet.
Planets
-
Atmospheric colors have been tweaked for many planets. The earth-like Sarake planet atmosphere is now blue.
-
The volcanic planet Cinder has received a desert sand-type layer for more color contrasts / variation as seen from space ( or ground ).
-
Gas giant Rethe Prime’s cloud layers have been tweaked and improvement, they’re now far less noisy / sparkly
-
A new planet has been introduced: Semny, an icy planet, my new personnal favorite one. Look up for nice reflections on the ice at sunset or night side
-
A giant asteroid, Gallia, has been added in orbit of Rethe prime. It doesn’t have an atmosphere. It will challenge your sense of scale, as it’ll feel pretty small, until you get closer to it. This asteroid actually has a mean radius of around 400 Km and a potatoe shape.
Assets
-
The destroyer’s geometry pass is around half way done. The shape of the ship is close to final, but the details and the bridge are still a WIP.
-
The cruiser and carrier’s are low-poly placeholders and currently look horrible - just ignore them for now
-
None of the ships ( including the small ones ) have had their texturing pass done yet. We’ve added a generic painting layer for the smaller ships though. This painting color is currently set to the team’s colors ( red / green / blue ), but code for customizing painting colors or material is already done - we just lack the UI for players to customize these -.
-
We’ve introduced the space-whale and the asteroid bobbleheads in the cockpits. Those are currently randomized, and not tied to your KS rewards yet.
-
Added placeholder for turrets on capital ships. The source of fire is still the center of the hardpoint though.
-
Space stations have received a new modeling detailing pass, as well as the first round of materials and textures. None of them but an experimental one have received their lights. Arcadia is the only station to have its windows / emissive pass.
-
The asteroid rings have been disabled in this build but will be reintroduced in a later patch.
-
Similarly, the old factories / bases have been disabled too. Art completion is underway for those and we are hoping to reintroduce them soon ( with static defenses ).
-
Props ( trees etc… ) have been disabled for planets. Will get reintroduced in a later patch with a higher density once we optimize them.
Bug fixes
-
This new version has for the most part, been completely rewritten. As a result, a lot of bugs might have appeared ( or re-appeared ).
-
Performance in battles scales a lot better thanks to our rendering and networking improvements. A few dozens ships battle shouldn’t stress out your framerate too much. Large battles will of course impact your framerate, but I can still reach 60-100 fps in 2.5K with 100-200 ships in the battle with a gaming computer. You’ll probably need a GTX 1080 in 4K to sustain 60+ fps, though.
-
We’ve fixed a couple of old-standing crash bugs
-
We’ve also fixed the problem in the old builds where performance was slowly degrading over time.
Misc
-
This patch also introduces a new camera system and effects.
-
It is now possible to look around your ship freely in third-person mode, or zoom in/out.
-
The HUD has 3 selection levels, off, exploration (default) and combat. In the combat mode, the only indicator visible is the one about your selected target, making the screen a lot more readable.
-
A debug menu is available on F10. You can toggle your frame stats ( framerate, bandwidth etc… ) here. Be careful not to disable error correction, or your client might end up in a desync state compared to the server’s.
-
The escape key no longer instantly exits the game. Instead it opens up a new radial menu which allows you to select the ship you want at respawn or to suicide.
-
Each ship has different credits costs. Kill enemies to get more credits to afford the bigger, capital ships. It is currently balanced to avoid grinding to be able to reach these ship categories with few kills, to make it easier to test.
-
Be careful, exiting the game is done through the left-most option of this menu - I know a few people have still been doing it by accident