Szymon Ender's projects page

Launch MFD

Continuously developed Orbiter's Multifunctional Display which calculates a necessary azimuth with which you must launch and fly your spacecraft, to reach an orbit with certain parameters. Additional features of Launch MFD:

  • Powered Explicit Guidance algorithm by NASA - determines ship's currently required pitch to reach orbit of given shape
  • PID autopilot - points a ship smoothly to flight director's marker
  • Direct ascent algorithm - intercepting a satellite right at the moment of orbital insertion, without the need of performing orbital manouvers. Developed as my Master of Science thesis

Launch MFD is one of 20 most wanted files of all times on OrbitHangar Orbiter's addon list. As an Open Source project, Launch MFD has many contributors and 3 authors, including me.

Requires Orbiter to run.

Back to top

Launch MFD
Click on the image to enlarge it.

TransX

TransX is a flexible planning and navigation tool for interplanetary transfers and orbital operations.

I've temporarly taken over the legacy OSS project to implement exciting new features and fix some timely bugs. The new features include:

  • Automatic solution finder - binary search based (fast'n'precise!) optimization task solver: minimizing planet's closest approach
  • Automatic centering of vessel's nose to planned pre-burn target orientation - code reuse of Launch MFD's PID based autopilot
  • Increased valuable data feedback to the user

The solution finder has been implemented as an abstract algorithm, ready for reuse in other projects. For the solution finder to work fast, many original bottlenecks had to be removed. The bottlenecks were discovered during the process of profiling the code.

Requires Orbiter to run.

Back to top


TransX Auto-Min
Click on the image to see the solver in action.

HUD Drawer SDK

A library for Orbiter, which offers HUD drawing capabilities to any class, which implements a simple interface provided by the library. Registration and deregistration in the internal HUD drawing system is done automatically through exploitation of unique C++ features - constructor and destructor of the interface. The drawing system uses a hack called Virtual Table Hijacking, but the system's internals are fully encapsulated.

Requires Orbiter to run.

Back to top


HUDDrawerSDK

ModuleMessaging SDK

A library for Orbiter, which offers inter-module communication capabilities.
The abstraction imposes no limitations on the type of the module used (vessel or MFD) nor its purpose (source or sink of data).
I've implemented this capability in three Orbiter Open Source MFDs of different authors - Launch MFD, TransX and Burn Time MFD.

Requires Orbiter to run.

Back to top


ModuleMessaging SDK
Click on the image to enlarge it.

MDDClone-SDL

An SDL port of Mercenary games series (one of the first 3D games). SDL port means that the same code can be compiled on all platforms which support SDL. So far Windows, Mac OS X, GNU/Linux and FreeBSD ports have been created. The project is based on MDDClone's source code, but contains my own improvements, with OpenGL version being the most important one. For historical and compatibility reasons, a software rendering version is kept, using conditional compilation.

Back to top


Estate agency
Click on the image to enlarge it.

Killers Behind You

A 2D platform game, written in C++ language, using SDL and OpenGL libraries. The game is distinguished by its cartoon graphics, a dynamic and smooth camera and a realistic (in sanity boundaries) physics. Together with the project's artist, Paweł Zięcik, we've merged the best ideas from other platform games with our own into one game. The game works on Windows and GNU/Linux operating systems.

Back to top


Killers Behind You
Click on the image to enlarge it.

Killers Behind You level editor

Killers Behind You level editor written in C++ language, using wxWidgets library. The editor imports and exports XML formated level data, which are then used by the Killers Behind You game itself.

Back to top


Killers Behind You
Click on the image to enlarge it.

Database test programs

A collection of database programs, written in purpose of training of writing commercial programs. The created programs' types range from console client-server apps and graphical user interface apps in WinAPI and in the multiplatform wxWidgets library. The following database engines were used: MySQL and SQLite. The project is being developed together with Szymon Cichy thanks to Subversion version control system. Click on the image to enter project's gallery, where I introduce only my own programs.

Back to top


DB test programs
Click on the image to enter project's gallery.

Estate agency's database

A program which allows entering clients' estate purchase expectations into a database, then, in a handy search page, allows to search these clients, by providing information about a concrete sell offer.

A typical search may be carried out by searching entries that are of a certain type, places, parameters, and that have a certain feature or don't have a specific feature, that don't suit a given client.

Back to top


Estate agency
Click on the image to enlarge it.

Energy MFD mk2

Energy MFD mk2 is a tool which samples your kinetic (KE), potential (PE) energies, and their sum - mechanical energy (ME). The stored data is drawn on graphs, giving you a nice view of your energy states. The MFD is mainly an educational tool, which allows for carrying out some interesting physical experiments, described in documentation.

C++ source code and Windows binary.
Requires Orbiter to run.

Back to top


Launch MFD
Click on the image to enlarge it.

Orbitrader MFD

Multiplayer trading module in development for Orbiter. Allows to transfer cargo between bases and space stations in the Solar System for virtual money. All transactions and events are stored on the Orbitrader server developed by Pawel "She'da'Lier" Stiasny, where the transactions are recalculated and from which the last event is downloaded next time you run the module, so it can restore the simulation's state.

The project uses libxml2 library for data grouping, libcurl for the data transfers, and pthread, to provide non-blocking data transfers.

C++ code.
Requires Orbiter to run.

Back to top


OrbitraderMFD

Orbital Scenery

This is an orbital scenery generation module. It creates and moves objects as vessels, which act as asteroids, with random velocity and rotation.

Requires Orbiter to run.

Back to top


Roids
Click on the image to enlarge it.

Direct ascent calculator

This application serves as a visualisation of my direct ascent algorithm, used in Launch MFD. The ship's trajectory, being the calculations' result, is displayed in the graphical part of the program, while the flight's parameters in means of time are displayed in the right part of the program. The algorithm uses fuzzy logic (libFuzzyEngine++) to increase speed of numerical solving and, as such, is the subject of my Master Thesis. A detailed description is available in Launch MFD's documentation.

C++ source code and Windows binary.

Back to top


Launch MFD
Click on the image to enlarge it.

libFuzzyEngine++

My C++ port of Prof. Edward Sazonov's Fuzzy Engine for Java. Porting the Engine from Java to C++ required some thought on how to avoid reliance on garbage collector, typical in Java / C# programming. The library itself uses a developer friendly interface in form of function definitions and linguistic rules. I used the port in Launch MFD for direct ascent algorithm's numerical solving and fuzzy autopilot.

Back to top


Launch MFD
Click on the image to enlarge it.
Conceptual images © Prof. Edvard Sazonov.

Brain Party Windows port

I've helped Paul Hudson from Linux Format magazine in creating Windows port of his brainteaser game - Brain Party. Porting it required making some not so obvious changes in the code, and of course preparing the binary itself, using MinGW and MSYS

Home page of my port.

Back to top


Brain Party
Click on the image to enlarge it.
© 2008 Szymon Ender. Logo image comes from the Hubble site.