Git Product home page Git Product logo

lentokonepeli's Introduction

Lentokonepeli

Fly your planes to victory as you re-create the aerial battles of the First World War!

This is a modern remake of the competitive 2D multiplayer airplane game Lentokonepeli (Literal translation from Finnish: "airplane game", also known in English as Dogfight).

NOTE

⚠️ CURRENTLY IN DEVELOPMENT ⚠️

I am remaking this codebase for the fourth(!) time, starting March of 2024.

Lots of planned features are in mind, including a website with accounts, leaderboards, and statistics tracking.

Discord

Join us on Discord if you are interested in staying up to date on the remake of this game and interact with the community.

History

The game was originally created in 2005 by the Finnish game studio Playforia (Aapeli). Their gaming website was built in 2002 entirely on Java. As web browsers would begin to treat Java as a security risk, their website became less and less accessible until it was permanently shut down in 2019.

With the death of Playforia, Dogfight should have died too. Fortunately, I was able to download a copy of the client-side jar file before the site went offline. This jar file contained game assets such as images and audio. It is now possible to recreate the game using these assets, along with reverse engineering the physics through captured video and other documentation.

The purpose of this project is to bring this nostalgic game back to life and keep it alive forever.

Development

Repo Structure:

Game/Server

  • ./dogfight: The Rust source code for the game's logic
    • Build by running cargo build --release
    • Generate Types for the TypeScript library by running cargo test
  • ./dogfight/dogfight-macros/: The procedural macros used by the game.
    • Build by running cargo build --release
  • ./dogfight/dogfight-web/: A WASM <---> JS interface for the dogfight game, which exports a package enabling dogfight to run in the browser.
    • Build by running wasm-pack build

Web Client

  • ./client/renderer/: A pure TypeScript library with logic for rendering logic to render a game world.
    • npm install
    • run npm run copy to copy the types generated from ./dogfight/ into the appropriate folder so they can be used in this project.
    • Build with tsc or in watch mode with tsc --watch
  • ./client/ui/: A React web user interface
    • npm install
    • Run with npm run dev

Acknowledgments

  • Aapeli (Playforia) for creating decades of entertainment and friendships through their internet gaming platform.
  • Pyry Lehdonvirta, the original programmer of Lentokonepeli.
  • Pallosalama for his many high quality recordings and documentation of maps and other important game information.
  • Members of Munkkiliiga (and everyone else in the discord server) for being such dedicated fans to the game, and having the patience to work with me. Their passion and enthusiasm for the game inspired me greatly.

lentokonepeli's People

Contributors

mattbruv avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

lentokonepeli's Issues

Boxer & Pallosalama Testing

Bugs and stuff to do:
Bullets:

  • 1. Bullets not going the way where the plane model points
  • 2. Super fast bullets in engine-off turning
  • 3. Bullet model “blurry” when starting to shoot, gets better at the end of the screen
  • 4. Plane hitboxes with bullets not working properly, bullets going through
  • 5. Bullet speed differences are too big between going slow and going fast
  • 6. Bullets not colliding

Bombs and explosions:

  • 1. Bomb dropping starting point is wrong, needs to be adjusted (little bit lower, look for old video frame by frame)
  • 2. Bombs need to drop faster
  • 3. Explosion damage duration way too long
  • 4. Explosion damage range way too long
  • 5. Explosion damage too much
  • 6. You cant bomb other bombs or shoot bombs with bullets

Trooper autoaim:

  • 1. Targeting too slow
  • 2. When there is no target available, trooper doesn’t shoot straight up
  • 3. Walking should not affect to auto-aim
  • 4. Auto aim in ground: range should be screen size
  • 5. Auto aim to air: range should be a little bigger than screen size
  • 6. Targeting system not working on other troopers
  • 7. Bullets not colliding, should collide
  • 8. Trooper aim prioritize order example: Do it the same way as original game or make it that it targets the closest human or closest active plane with a human in it, after those it should target hangar if close enough, then no target going straight up

Map elements:

  • 1. Visual ground not matching the actual level of ground (visual level should be lower)
  • 2. Hangars
  • 3. Water death level too high, visual is fine
  • 4. Max height not working properly (this is partially plane physics stuff)
  • 5. When walking to edge of the green ground, troopers drops a little bit and dies, should instantly just disappear when hitting the kill spot

Dead planes:

  • 1. Dead planes are taking damage, they should be at 0 hp and not change smoke
  • 2. When jumping out of plane, the “plane corpse” should instantly start to smoke

Inputs:

  • 1. Cant dance with trooper!
  • 2. Cant turn off/on engine holding down arrow
  • 3. Cant spin with planes holding up arrow (helicopter!)
  • 4. The amount of inputs the game should accept (talking point)
  • 5. Switching hangars is inverted (allied side)
  • 6. – keyboard Nordic layout shooting

Prevent manually changing canvas size to obtain a bigger view

The game screen is currently limited to the original size of 740x565px.
The game screen can be changed by using Inspect Element to increase the canvas width/height HTML values, resulting in a bigger game view.

This can probably be patched by creating a rectangular mask in PIXI which only goes over the 740x565 game view, thus hiding anything outside of this view.

If that doesn't work, perhaps drawing giant solid color rectangles outside the bounds of the game camera would work.

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.