Giter VIP home page Giter VIP logo

interstellar-armada's Introduction

Logo

Interstellar Armada: Galactic Ace is a free, Open Source browser-based 3D space combat simulator developed in JavaScript-WebGL by Krisztián Nagy ([email protected]).

It follows in the traditions of old classics like the FreeSpace series with a mission based gameplay and adds slightly more realism with a Newtonian mechanics based movement system. It has a desktop focused design, but can be played on mobile devices as well as it supports touchscreen input (next to mouse, keyboard, joystick and gamepad). It also has a mission editor and an online mission sharing service included.

Play now!

Though the game is not yet fully complete, it is already in a well playable state and its current development version is released in an "early access" fashion.

Web version

Just head to this page to launch the latest alpha release! Note: The perfomance greatly varies depending on the used browser. In my experience, on most configurations Chrome/Chromium provides the best experience (by far).

Snap version

If you are on Ubuntu or another Linux distribution with snap support, you can install the game from the Snap Store. This comes with the advantage that you will be able to play offline, as all the resources are included, and the game will automatically be updated to the latest version when I publish a new release.

Appimage

If you are on Linux but you don't use snaps, you can also download the appimage for the latest release. This also allows for offline play, but you will have to manually check here for updates.

Flatpak

Creating Flatpak builds is a little more complicated, because the build system I use does not support it out of the box, but I plan to add Flatpaks for future releases (from 0.6).

Windows and Max OS

If you are using these operating systems (or Android, iOS or anything else), just run the web version I linked as the first option, preferably from Chromium or Chrome. Currently I have no plans to add pre-packaged builds for these systems.

Performance

If you experience performance issues, adjust the level of graphics detail from the menu. Or if you have a powerful computer, you might want to increase the default settings. As this is an early version, the performance is subject to changes (and bugs).

For developers

I use NetBeans with its web development (+ ESLint and GLSL) plugins to develop this game. To build the game, you will need npm, Grunt and Sass.

After cloning the repository, in its main folder run

npm install
grunt build

to build the production version of the game. Then serve the game folder with your favorite server of choice and open index.html in the root folder to run locally. (the game uses XMLHttpRequests, so the file cannot be opened directly without a server)

Run grunt clean to remove the build files.

Run grunt dev-build to create a build for development / testing.

Run grunt watch while developing to automatically update dev-build files as you modify the sources.

Run grunt build-with-editor to create a production build that includes the game editor.

Editor

The game includes an editor (also written in JS, in fact it uses modules from the game itself to load / display game data). You can open it by serving and opening editor.html after making a dev-build or a build-with-editor (see the previous section). It is also accessible from the game itself under Single player / My missions. Please note that the editor is even less complete than the game, there are things that cannot be edited with it (most notably game configuration / settings and language files), and it has limitations for even the things it can edit (such as not being able to delete items). It is also fairly buggy. However, it can still be useful and more comfortable than dealing with the JSON files manually, and can be great for understanding how the game data is structured. To apply the changes you make in the editor, you need to download the game files to your computer and put them in your server's serving folder (or use Electron, as explained in the next chapter), export the files you changed with the editor (resources/classes/environments/mission), and overwrite the original game files with the exported ones.

Electron

The game can be run using Electron. To do this, just download a release of Electron suitable for your computer, make a build of the game (see above), and then copy the project files over to the appropriate folder of Electron (the app folder, which you will have to create within the resources folder). The project contains the necessary files for the Electron setup, so after this it can simply be run by starting the Electron executable. When run this way, the game has some small differences such as a Quit button in the menu to close the application and the lack of a fullscreen button (as it will run in fullscreen by default).

The last release of Electron tested with the game: 17.1.2

Snap packaging

Run npm run build-snap after you have created a game build to use electron-builder to package the build together with Electron into a Snap. The package file and other build artifacts will be generated in the dist folder.

To clean the folder up, run npm run clean-snap.

Appimage packaging

The same goes as for snaps, just use npm run build-appimage instead.

Latest versions tested:

Electron: 26.1.0

electron-builder: 24.6.3

License and copyright

Please see the LICENSE.txt file or the About page within the game for the details of licensing. In short, most of the source code of the game is released under the GNU GPLv3 license and most of the assets are released under the CC BY 4.0 license, but for exceptions, details and attributions please do check LICENSE.txt.

With game related questions, suggestions and feedback please contact me at [email protected].

Krisztián Nagy

02.09.2023.

interstellar-armada's People

Contributors

nkrisztian89 avatar pavanluca avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

interstellar-armada's Issues

Refactor scene.js

clean up / comment particle systems code
refactor Camera, Scene
add dynamic lights

Weapon positions update incorrectly

After a shot is fired, the weapons of the controlled ship start showing up at the wrong place, as their position is synchronized with the previous position of the ship.

Projectiles slow game down permanently

Firing projectiles slows the game down, which is natural due to the additional calculations, but the speed doesn't return to normal even after all projectiles time out and disappear.

Background changes

Part of the background suddenly changes when switching camera to a new ship, right when the camera stops moving.

Optimize scene render: reset function for objects

Call one reset function for each object in the beginning of the render to track what properties have already been calculated during the render and use that info to avoid redundant calculations.

Slow game slows down turning

If the game runs at a lower FPS, the ships turn slower as the turning acceleration is stopped before time. (they still accelerate with correct pace, both for movement and turning)

Thrusters ineffective

Sometimes thrusters do not seem to create the appropriate force to change the course of the ship in compensated flight mode. The visual signs correctly indicate, which thrusters are supposed to fire. I didn't manage to find a way to consistently reproduce this yet, though it happens fairly often.

Blurred render

At certain resolutions, parts of the rendered scene look a bit blurred, as if the resolution didn't match the viewport size.

Ships "tremble" as they cannot find balance

As the ships turning thrusters try to bring the ship to balance (stop turning), they continuously overcompensate a tiny bit (probably because of float inaccuracy), causing the ship to "tremble". The effect grows with the mass of the ship, being most visible with the Libra cruiser.

Background flickers

The background (FVQ) flickers after switching the camera to a new ship and then turning around along axis Y. After turning along axis X, flickering stops.

Dynamic lights for projectiles

muzzle flashes should also have dynamic lights assigned, with changing intensity
multiple projectiles can reference the same light source

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.