Jump to content

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


Entian
 Share

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

Link to comment
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.

Link to comment
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 :)

Link to comment
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.

Link to comment
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.

 

Link to comment
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)

Link to comment
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.

Link to comment
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.

Link to comment
Share on other sites

  • 6 months later...
  • 11 months later...
On 5/10/2019 at 12:25 AM, Vincent Courtney said:

I really like this game but could you add some collision detection so you can't fly through the other ships?

Thank you! It is in the plans, although I did not have much time for development lately, so I cannot promise it will come soon. I have some changes already done for the next version (touchscreen controls and some important fixes for broken rendering on certain machines and more music tracks), which can be expected soon, but collision is not included yet. I do have some ideas for a solution that might work decently enough and would be fast enough for the browser, if that works out, I could push it out in the next months.

Link to comment
Share on other sites

  • 4 weeks later...

Hello,

"active development" is probably not the appropriate term, since I have last committed in March and the latest release is from last May. I have been busy with commissioned project work recently, but it is still on my mind almost every day, so it isn't abandoned in that sense. I want to put out at least one major update this year.

Feel free to create a fork for multiplayer and if you need any assistance or have questions, let me know. If it works out great, we can merge it back upstream.

Krisztián

Link to comment
Share on other sites

  • 7 months later...
  • 10 months later...

Hello everyone,

after some detours and feature-creep, here is the next version of the game: 0.4.6, complete with homing missiles, responsive menu layouts and the ability to create and play your own missions.

Experimental touch controls are added, too, though there is no tutorial for them as of yet and there are some bugs. There are no visible buttons, the screen is simply divided to 4 quadrants:

  • use bottom left of screen to turn (just press down and move the finger around)
  • top left to set speed (swipe up / down to accelerate / decelerate, tap to stop, swap right to change flight mode)
  • tap top right to switch target or tap with two fingers to change missile (if you have multiple types), long tap to target friendlies
  • press bottom right to fire primaries (tap with two fingers to launch missile, or hold and move the finger to move sideways while firing primaries)
  • tap top left with two fingers to engage the jump drive when the mission is complete, tap with three fingers for in-game menu.

See full release notes: https://github.com/nkrisztian89/interstellar-armada/releases/tag/v0.4.6-alpha

Wish you all happy holidays and joyful gaming,

Krisztián

1229791310_Kpernykperrl2020-12-2823-10-36.thumb.png.a0e797232a987924430421c27c81976f.png

1364440444_Kpernykperrl2020-12-2823-08-00.thumb.png.d550b7b99c705de73cb62f189a3e9e93.png

1456666616_Kpernykperrl2020-12-2823-15-20.thumb.png.8f6e7fcc82b4bf158eed717ec8c472e1.png

Link to comment
Share on other sites

  • 1 year later...

Hello everyone,

recently I have released a new update, 0.5.0! It includes a basic multiplayer (and I mean really basic, 2-4 player FFA last man standing), a lot of improvements and new capabilities for the mission editor and with it, a built-in feature in the game where custom missions can be uploaded and if I approve them, they can be played by anyone. I also improved the controller/joystick support (the active controller can now be selected in the menu; there are multiple mappings to choose from; if the controller is recognized as a gamepad, a default mapping I put together for gamepads is used by default; and on Chrome, vibration also works when the player is hit) There are also new spacecrafts and a new mission that takes place in a nebula (which has effects on the gameplay as well).

If you are on Ubuntu, you can now also install the game directly from the Software application, as it is packaged as a snap (with Electron). Note that for joystick/gamepad support, in this case you will need to open the permissions page and tick the missing two permissions about hardware and joystick access. If you are on other Linux distros, there is an appimage available as well on the release page.

As usual, the full release notes can be read here: https://github.com/nkrisztian89/interstellar-armada/releases/tag/v0.5.0-alpha

Enjoy!

Krisztián

1849669842_Kpernykperrl2022-03-2515-02-35.thumb.png.6ec12a5d0612dcba3f1a4a46a4ffceac.png

383636723_Kpernykperrl2022-03-2514-56-01.thumb.png.1e99b560790a6cdece24c0be383c65be.png

1319242848_Kpernykperrl2022-03-2611-54-20.thumb.png.d9d3b94095d7ad0e37e2f76fffb44343.png

433997099_Kpernykperrl2022-03-2611-47-12.thumb.png.c84bfa4b1975c39c6504114ccbdccb35.png

Link to comment
Share on other sites

  • 1 month later...

Hello everyone,

I have just released version 0.5.1, the biggest feature of which is the long awaited (e.g. by @Vincent Courtney :D) collision detection. I have added a ton of small optimizations to compensate, as collision detection can be quite costly. By reducing the amount of new memory allocated each frame, I managed to match or exceed the performance that I was measuring in the previous version. It is also my own custom implementation and definitely not perfect, but it still beats spaceships flying through each other. I might improve it in the future. There are also some fixes and smaller editor improvements included.

https://github.com/nkrisztian89/interstellar-armada/releases/tag/v0.5.1-alpha

Enjoy!

Krisztián

ezgif-4-f1c1c30a52-opt.gif.705d485af4df7809a041a9054790e6f3.gif

Link to comment
Share on other sites

  • 1 year later...

Hello people,

The game is still under development (I don't think I will ever stop). To those who are still interested: I have just released version 0.5.4 with a new mission (two if we count from 0.5.1 which was last announced here) and the first real space station as well as a much more complete tutorial and improvements for the mission editor (a lot if we count from 0.5.1).

https://github.com/nkrisztian89/interstellar-armada/releases/tag/v0.5.4-alpha

Enjoy!

Krisztián

image1-5.thumb.png.714a749568126e20e7610c7411554178.png

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...