Moondust Engine

The PGE Engine is part of the PGE project, and will allow users to play episodes and levels.

Developement

 * 0.0.1-pre-alpha....0.0.6-pre-alpha, The first test application had the basic physics system and is able to read and play levels, and can display blocks, BGOs, and backgrounds, but without NPCs and effects. Engine development started with usage of Box2d physics engine. It is possible to use warps, but was no visual entering/exiting effect. The player's character was represented by a blue rectangle. It is also possible to travel between levels by using level-to-level warps. There also was implemented a message box system, which able to display special characters and different languages.
 * Into 0.0.7-pre-alpha has been added partial support of world map without rendering of textures.
 * Starts from 0.0.8-pre-alpha engine finally can render animation of playable characters and has partial implementation of sound and music system. Engine can play sounds on world map and can play musics.
 * On the level some sounds are plays but music was implemented since 0.0.9-pre-alpha.
 * Starts from 0.0.10 completely supports render of world map and has been improved some physics parts.
 * 0.0.11 finally can render NPC graphics and do iteration of their movements.
 * 0.1-Alpha finally got a new coded from scratch physical engine which completely replaces Box2d.
 * 0.2-alpha has basic NPC-AI system where NPCs are can be coded in a lua and has a support of placing items from editor into the engine.
 * 0.2.2.2-alpha got a forked SDL Mixer library named as "SDL2_Mixer_ext" which adds support of OGG files with looped fragment
 * 0.2.2.4-alpha has working events system include better auto-scrollig, except "Game end", "Player controls" and "Layer movement" event actions.
 * 0.2.4-alpha has full features world map path opener which will open paths on level completion, has more advanced NPC-AI system with adding of new things like to ContactDetector, ability to spawn any other NPC, full-featured transforming of NPC's, etc.
 * 0.2.5-alpha is a bugfix update which also includes internal optimizations and performance boost
 * 0.2.5.1-alpha contains big update of Lua-API: here introduced Player API which allows to make lua controller for playable character to make it more interactive, added new functions and events for NPCs, onHarm and onKill events are exchanged, fixed a lot of bugs. Since this version, roles of 7, 8, 9, 0 keys are changed: 7 decreases number of playable character, 8 increases, 9 decreases number of playable character state, 0 increases. Introduced cannon-exiting pipe.
 * 0.2.6-alpha got a new physical engine which completely resolving slopes physics. Added lua API which allows loading external images and added support of the HUD drawing, added API to spawn better effects, and NPCs are finally can get information about spawning way.

Planned Features

 * Improvement of start menu screen
 * Save/load of game save, episode intro screen to choice character and file with recent game save.
 * Better camera and ability to switch playable character and state in real time

Improvements in comparison with original SMBX Game engine

 * PGE Engine has configurable TPS which can be used with V-Sync
 * less CPU load which gives ability to play games on PGE Engine together with background works or on slow PC's.
 * Cross-platform support: Linux, Windows, Mac OS X. SMBX works on Windows only.
 * World maps are supports music boxes with plugged custom music files
 * After saving on the HUB-based episode, player resumes game from recent warp instead of start point of hub level.
 * Autoscroll can work in multiple sections and can be launched from any event and from any section independent to level begin. Autoscroll can be launched inside another section while player starts from non-scrollable section. Player repeats whole path inside autoscrollable sections when it enter into them again.
 * Screen fade effects between sections and between different screens of game: level<->world map<->main menu
 * Unicode-supported message boxes which can print text in any available language, but requires additional font maps to have fine render of raster text.
 * Message boxes, menu boxes are have fade effects when appears/disappears.
 * True semi-transparency support with alpha-channel
 * Built-in usage of OpenGL to render stuff
 * Built-in support of lua scripts to have customized levels, NPC-AI, custom gameplay features, etc.
 * Less usage of memory because PGE Engine loads stuff dynamically by first request of specific object (NPC, block, BGO, Effect, background, playable character sprite).
 * Almost instant loading of game than SMBX.
 * Built-in support of command line features: you can run playing of any level by opening of that file by opening with pge_engine application or run any episode by same way.
 * With SDL Mixer, PGE Engine supports many various music formats which can be used as built-in or custom in-game musics.
 * Support of musics with looped fragment (OGG only).

Command line arguments
PGE Engine supports command line which allows you launch debug mode, start playing of the level or episode. (Also via drag&drop of the file into PGE Engine application icon in a file managers which are supports that)

Command syntax:
 * --config="{path}" - allow you to define a specific configuration pack with escaping a selection screen
 * --render-auto - automatically detect possible renderer in sequence: OpenGL 3, OpenGL 2, and then software render if both OpenGL tests are failed [works by default]
 * --render-gl3 - Use OpenGL 3.1 renderer (May bot work on OS X)
 * --render-gl2 - Use OpenGL 2.1 renderer (Supports video cards which are not supports non-pow-of-two textures)
 * --render-sw - Use software renderer (may overload CPU)
 * --render-vsync - Toggle on VSync if supported on your hardware
 * --num-players=X - Start game with X number of players (Currently 1 or 2, later 4 max players will be supported. 4-players limitation is going for standalone Split screen game mode)
 * --pXc=Y - Set character Y for player X (for example --p1c=2 will set character with ID 2 to first player)
 * --pXs=Y - Set character state Y for player X (for example --p2s=4 will set character state with ID 4 to second player)
 * --debug  - Enables debug mode (Game result will not be saved, and special debug features are will be allowed). This argument requires for any --debug-* argument.
 * --debug-physics - Enables debug of the physics hitboxes of all objects are will be shown:
 * Blocks [green]
 * BGO [blue]
 * NPC [magenta]
 * NPC's in-area detector trap [red]
 * Playable characters [pink]
 * Warp entrances [light-red filled]
 * Physical environment zones [yellow filled]
 * --debug-print=[yes|no]  - Enables/Disables printing of the debug information (Debug information is possible to toggle on/off with F3 key)
 * --debug-pagan-god - Enables god mode
 * --debug-superman - Enables unlimited flying up
 * --debug-chucknorris - Enables ability to playable character destroy any object
 * --debug-worldfreedom - Enables ability to walk everywhere on the world map
 * filename - actual file path

Examples: Start testing of a level file (UNIX-Like: Linux, Mac OS X, etc.)

Start testing of a level file (Microsoft Windows)

Start testing of a level file with specified configuration package (UNIX-Like: Linux, Mac OS X, etc.)

Start testing of a level file with specified configuration package (Microsoft Windows)

Start PGE Engine with interprocessing mode Note: Interprocessing using to commnuicate with PGE Editor to receive file data without saving to the disk, and also accepting special commands from editor which are allows you to place additional elements into the game

Print current version of PGE Engine

Videos

 * First demonstration
 * Warps and level wrap Functions Demo
 * Test walkthrough of hub-based episode on 0.0.2-pre-alpha
 * Long test of 0.0.7-pre-alpha
 * Gameplay Footage of 0.0.8-pre-alpha made by Bossedit8
 * Playthrough of v0.0.10 pre-alpha made by Bossedit8