Entian

|WIP] Open source 3D space sim Interstellar Armada: Galactic Ace

Recommended Posts

Hello everyone,

in late 2013 I started experimenting with what is possible using JavaScript/WebGL (coming from a computer engineering - C++/Java university background). Over time it grew into a game engine and then this game, as I worked on it in my free time next to full time jobs and more recently, contracting work.

So it is entirely custom code (the only library used is RequireJS to load the JS files themselves), and I made all the assets as well (models, textures, music, sound effects (using some free CC licensed sound samples as a base) - you can find details in the "About" page in the game. As a result, the engine features and asset quality are rather modest.

It is still heavily work in progress as the title suggests, but it has become quite playable recently, so I decided to share it here.

About the game

My goal is to create a fully fledged 3D space sim with procedurally generated missions that can be played on any computer with a modern browser. I am going for more of a softcore sim feel rather than an arcade one (there are many arcade options these days, but I prefer the more serious, elaborate controls of sims, without the time/hardware investment needed for something like Elite: Dangerous - which also doesn't run on my linux machine)

screen1.png.ba1b3c7d48deadb71ea0e2ace72435a6.pngscreen2.png.e86c0e6900af7ff9a1e9ac753ca4d29c.pngscreen3.jpg.c0acbf97848b05728aa755e4c2606564.jpgscreen4.png.c5c8c4a5eda6fdf2bb39f04f128d5056.png

Check out the facebook page, where I post updates and you can also find a recent gameplay teaser video.

Game features (so far):

  • full 3D, 6 degrees of freedom gameplay
  • Newtonian physics (with flight assist)
  • basic combat mechanics (primary weapons, shields, flight modes, targeting)
  • 11 simple, authored missions (+3 training missions) against AI
  • in-game database with info about the ships
  • detailed, persistent graphics and control settings
  • graphics settings automatically lowered if default settings are not supported by the hardware (high FPS is not ensured, only that it runs)
  • joystick support
  • an editor to mod the game (even more WIP/unstable than the game)

Planned (missing :)) features:

  • procedural missions, with ship upgrades in-between
  • advanced combat mechanics (missiles, jamming, boosting, communication with wingmen)
  • more content (ships, weapons, more detailed environments....)
  • multiplayer

Also a lot of polish, HUD changes, performance optimizations etc are planned. You can get a general idea by checking out the issues page of the game's github.

Please note! The download size for the game can be significant (tens of MBs - depends on graphics settings and the mission being loaded), so I do not recommend trying it with a plan where you pay based on the amount of data!

Play it here

Let me know what you think!

Technical info

You can check out the code at https://github.com/nkrisztian89/interstellar-armada. Feel free to fork it - since it is 100% client side code, you can just throw it into the public HTML folder of your server (e.g. Apache) and it should work locally right away. Then you can use the built-in editor in the tools folder (localhost/the_folder_you_put_the_game/tools) to see how the game data files are organized, play with them (to apply the changes just hit export and then overwrite the original with the exported file in the data folder). Note that you cannot create or export missions or edit config/settings from the editor (as of now)

Since this is a long project and I regularly revisit and update parts of the codebase that I might have not touched for a year or so, I try to keep it organized and nicely commented even if just for myself. However, this is not the number one priority, so there are parts of the codebase (which at this point grew above 60,000 lines) which are in terrible, terrible shape. I believe the best example of this currently is the code for the HUD.

screen5.png

Share this post


Link to post
Share on other sites

Thank you Stephan! Although the engine is nowhere near something like Unity, or even smaller, single-platform engines. It is specialized only for 3D, 6-DOF space shooters. The upside of that is the game runs on hardware as bad as my low-spec phone (although I haven't implemented touch controls, and the game by design is desktop-focused), while the Unity WebGL games (even simpler ones) just crash in the middle of the loading phase.

Share this post


Link to post
Share on other sites

Hey @Entian - This looks really cool. 

Got a few Questions though - 

1. You mentioned Joystick support in the main post but is there throttle support?
2. What 3D rendering engine is this using? Three.JS, Bablyon.JS, etc.
3. Are there plans for VR Support?

The Game looks awesome so far. Cannot wait to see more :)

Share this post


Link to post
Share on other sites

@Entian this looks really great and I'm looking forward to playing it but I've tried twice now and it's completely crashed my MacBook Pro, forcing a hard reboot each time. MacBook Pro 13" 2.3GHz Core i5, 8Gb RAM, Intel Iris 640 graphics. Tried basic training mission, all assets load and game starts. Looks like it registers keyboard input for about a second then everything freezes up. I think it might be overheating. Haven't had any issues with any other WebGL content as yet.

Share this post


Link to post
Share on other sites

@HeadClot Thank you! Good questions! Sorry if the answers turned out a bit long.

1. At the moment, only a single controller is supported. So if you have a throttle that is separate from your joystick, unfortunately there is no way to set it up (I plan to add support for this later). However, if you have a throttle axis built into your joystick (as with my Thrustmaster T.16000M) or have a HOTAS controller that is built as a single device, it should work. I have not yet added a way to change the default bindings from inside the game, so if it has a different mapping than my Thrustmaster, it will not work out of the box, but you can set it up if you download/clone the game, change the default joystick bindings in the config/settings.json file (can be opened with any text editor, joystick settings are at the very and, pretty straightforward - you will need the "forward" and "reverse" actions) and then start the game locally. You can find out which axis is your throttle by going here: http://luser.github.io/gamepadtest/. Axes start with 0 and are represented by the blue bars at the bottom. If you set up some good default bindings, you can send it to me along with your device info (the same as shown in the top at the linked page), so I can automatically set it up if that device is detected in a future version of the game.

2. I am using an entirely custom engine written from scratch, including for graphics (using the WebGL API directly). The graphics engine source files are js/modules/managed-gl.js and all the files in the js/modules/scene folder. I wrote it while learning WebGL, it is not the best/prettiest code and not as feature-rich as ThreeJS for example, but it is more optimized for some special things in this game.

3. Not in the near future. I don't have VR devices (or even a hardware that has enough performance for that) and the game has quite a lot of movement, even in 3D space, so as much as I know, it would not be a good candidate for VR because of motion-sickness.

 

Share this post


Link to post
Share on other sites

@inteja Thank you for the feedback! What browser have you used? I don't have a Mac available to test at the moment, but when I tested it quite a long time ago, there was a bug in Safari that caused similar symptoms to what you describe, while the game worked totally fine in Chrome (and in Opera, though terribly slowly). If it happens in all browsers, could you try to start the game (possibly in Chrome/Chromium) with the developer console open (cmd+shift+i in Chrome/Mac I believe) and send me what appears there before the game crashes? (try to get a screenshot before the freeze, or just take a photo of it with a phone if that is not possible)

Share this post


Link to post
Share on other sites

Cool project Entian :)
I'm in similar shoes, but I didnt dare create a 3D engine like you did. Impressive!

Just gave it a go. What I noticed was that I would really like a higher rate of fire and I found it quite confusing that I have to select a target to be able to shoot it. It would be nice if it didnt try to lock onto a target that is not even visible, allowing me to shoot straight in that case.

Share this post


Link to post
Share on other sites

Thanks for the compliment and the feedback, @marcgfx!

The targeting mechanic currently is the same as for classic space sims (like Freespace), but I plan to add auto-targeting and firing in the direction of the mouse as well in the future. The rate of fire is different for each weapon, but now that you mention it, for the training weapon it is indeed very low and only for obsolete reasons, so I raised it for the next version. The 4/sec of the basic weapon feels good to me as there is a specific class of weapons with high rate (8-10/sec) planned for the future for those who like that play style, the current gun is just the tier 1/starter weapon.

Share this post


Link to post
Share on other sites

I have updated the game with the 0.4.4 release, bringing some polish and fixes and basic analytics integration just so that I can see if anybody else actually plays it :D The low training weapon fire rate and loud menu click sounds are fixed, too :) 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.