Coder Social home page Coder Social logo

planeworld / pwng-server Goto Github PK

View Code? Open in Web Editor NEW
8.0 4.0 2.0 3.99 MB

Server component of Planeworld Next Generation

License: GNU General Public License v3.0

CMake 1.95% Shell 4.38% C++ 93.67%
entt game-development simulation simulator magnum

pwng-server's Introduction

branch state
master Build Status Codacy Badge Last commit
dev Build Status Codacy Badge Last commit

license

Head over to Planeworld Next Generation

This project evolved over round about two decades, one of them revisioned with svn and eventually git. But time went on, I made a lot of experiences, with Planeworld and with 3rdparty libraries, so head over to Planeworld Next Generation (PWNG)

planeworld

planeworld is a 2D simulation engine and a passion project. The main goal of its development is best explained by the following examplary scenerio: Start a rocket from a plantery surface with simulated physics, such as rigid body dynamics, fuel system, planetary atmosphere, etc. Reach another celestial body, like a moon, using realistic trajectory planning, incorporating n-Body dynamics for the star system. Land on the target body and drive around with a rover, which is also simulated with springs and dampers, suspension, tire flex and more. The engine should allow for (Lua) scripting and remote missions with simulated communication and patchable onboard computers.

Features

  • Universe
    • n-Body dynamics (done)
    • Procedurally generated planetary surfaces using noise functions (done)
    • Simulation of planetary atmosphere (done)
    • Different surface types, biomes,... (wip)
    • Procedurally generated universe (wip)
  • Components
    • Thrusters (done)
    • Fuel system (planned)
    • Hydraulics (planned)
    • Control units (planned)
  • Physics
    • Basic dynamics (done)
    • Automatic online calculation of inertia and center of mass (done)
    • Particle system and emitters (done)
    • Springs and Dampers (wip)
    • Continuous collision detection (wip)
    • Hard connections between objects (wip)
    • Constraint-based physics with several different joints (planned)
    • Rope physics (planned)
    • 2D tire physics (planned)
    • Drag and lift (planned)
    • Data communication (planned)
  • Graphics
    • OpenGL Core Profile (done)
    • Font manager (done)
    • Simple deferred-like rendering (done)
    • Different render targets, render-to-texture (done)
    • Different light sources, such as thrusters, headlights, stars (wip)
    • Shadow mapping (planned)
  • UI
    • Simple Window management (done)
    • Command console (done)
    • Virtual cameras (done)
    • Further widgets (planned)
  • System
    • Multi-threading (done)
    • Command interface with thread safe command queues (done)
    • Scripting API for command interface (done)
    • Separation of simulation and visualisation (done)
    • Handle manager (wip)
    • Client-server architecture (planned)

Dependencies

Installation

> git clone https://github.com/planeworld/planeworld.git
> mkdir planeworld/build
> cd planeworld/build
> cmake ../
> ccmake .
(To configure compile and install details)
> make install

Usage

> planeworld example.lua

Default Commands (see pw_input_default.lua)

Key/Mouse Description
0 Toggle timers on/off
1 Toggle timer 1 start/stop
2 Toggle timer 2 start/stop
3 Toggle timer 3 start/stop
f Toggle fullscreen
g Show grid
b Show bounding boxes
k Show kinematics states
c Cycle through cameras
l Load game state
m Show center of mass (COM)
n Show names
s Save game state
t Show object trajectories
u and LCTRL Toggle UID visuals on/off
w and LCTRL Show all windows
w and LALT Hide all windows
Home Toggle command console
TAB Tab completion in console mode
F2 Toggle debug info
F3 Toggle debug render
ESC Quit
+ / a Accelerate time (only key-pad +)
+ / a and CTRL ... and allow timestep increment
- / d Decelarate time
RETURN/ENTER Reset time
p Pause physics
SPACE Stepwise physics (when paused)
Mouse-Wheel Zoom
Right-Mouse + Move Up Zoom in
Right-Mouse + Move Down Zoom out
Right-Mouse + Move Left Rotate clockwise
Right-Mouse + Move Right Rotate counterclockwise
Left-Mouse + Move Translate

pwng-server's People

Contributors

bfeldpw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

pwng-server's Issues

Provide event driven subscriptions

Currently, the sim state (running/stopped) is included in the simulatin statistics. As the statistics is not that crucial for me, I would subscribe it with 0.1Hz.
However, the sim state is used for e.g. changing the UI (hide button for starting or stopping sim) and it might become annoying if the UI is wrong for almost 10 seconds.
Thus, it would be great if seldomly changing information is published differently only on change.

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.