MININIM
Menininho is the Brazilian Portuguese word for male kid, and mininim is how it’s informally pronounced throughout the country. Kid is the term used by Jordan Mechner1 when referring to the main character of his most famous game — Prince of Persia — in its source code and documentation, because the character’s movements were derived from rotoscoping footage of Mechner’s little brother. MININIM is the Advanced Prince of Persia Engine, written from scratch by computer programmer and free software activist Bruno Félix Rezende Ribeiro (
oitofelix
). Bruno had a childhood dream of deciphering the secrets of his favorite game that introduced him to computing — a dream dreamt when he was just a kid, a dream realized now that he’s still a mininim deep in his heart.2
MININIM is the Advanced Prince of Persia Engine — a childhood
dream, the free software implementation of Jordan Mechner’s
masterpiece game, developed from scratch by Bruno Félix Rezende
Ribeiro (oitofelix
). MININIM is free software; you can
redistribute it and/or modify it under the terms of the
GNU General Public License as
published by the Free Software Foundation; either version 3, or (at
your option) any later version.
In addition to being already a complete replacement for the original game with several improvements, MININIM aims to have detailed documentation on all matters concerning the original Prince of Persia world, ranging from its design concepts to the engine’s practical use and development. MININIM documentation is free; you can redistribute it and/or modify it under the terms of the GNU FDL (Free Documentation Licence) as published by the FSF — with no Invariant Sections; either version 1.3, or (at your option) any later version.
MININIM features various improvements over the original game, too many to make an exhaustive list here. Some of its noteworthy features currently implemented are:
- Portable to modern operating systems
- Generalized multi-room support
- Video, environment, hue and guard modes may be selected on-the-fly
- Screen mirroring mode (inverts screen and gamepad axis horizontally)
- Level mirroring mode (completely inverts level constructions horizontally on-the-fly)
- Joystick mapping and threshold configuration
- Haptics fully integrated into game mechanics
- Improved battle system based on upgradable skills, arbitrary number of simultaneous fighters and smarter enemy AI
- Any type of guard per level, styles applicable to any guard type and guard skills fine-tuned per guard
- Sword can be drawn at will, but it is drawn and kept automatically when appropriate
- Real-time responsiveness, higher world interaction accuracy, more stable animations, smoother collision and robust physics
- New useful movements: normal jump hang, normal jump turn, running jump hang, running jump turn, hanging fall, hanging turn, falling turn, take sword anywhere
- Complete level editor based on non-intrusive mode-line menus and mouse selection
- Unlimited undo/redo for level changes
- Integrated configuration system using multiple back-ends
- Native (fully expressive) level format
- Capability of loading level files in multiple formats: native, legacy, PLV and DAT
- Consistency level generator module
- Arbitrary combinations of foreground and background for constructions
- Generalized fake constructions
- Rich set of itemmizable constructions and items
- Supports triggering of any tile
- Screenshot capturing
- Replay recording, playing and chain validation.
- In MININIM, everybody screams!
The following additional features are planned to be implemented soon.
- Legacy semantics (in progress)
- Full compliance with the Standard Item Specification
- Save state
- Dynamic number of levels, rooms, guards and events
- Guile scripting
- Network play
- Rewind time
- Arbitrary resolution graphics set support
- On-the-fly multiple sound set support
- Level generator
- Android, iOS, Mac OS X ports
Media
The following videos demonstrate features that are already implemented and will come up in the next release. If you like MININIM and want to show your appreciation or enable oitofelix to spend more time on its development (so these features come out faster and better), PLEASE, CONSIDER SUPPORTING MININIM DEVELOPMENT!
PODebug has a podcast episode from august 2016 titled Recriando Prince of Persia: Dois Projetos Brasileiros (Recreating Prince of Persia: Two Brazilian Projects) for which Bruno Félix (oitofelix) was invited to talk about MININIM. Here’s a MP3 for download (Portuguese).
A Youtube playlist of a full walkthrough of the standard Prince of Persia legacy level set, using MININIM’s replay capabilities is also available at oitofelix’s channel.
MININIM has been included in Jordan Mechner’s 30th anniversary edition of “The Making of Price of Persia”. It appears in section “Legacy”, on page 321. Jordan sent a signed copy of the book to oitofelix, which you can see below.
It reads:
Bruno Félix “oitofelix” Rezende Ribeiro
Brazil
Attached is a screenshot of MININIM, the free software Advanced Prince of Persia Engine I wrote from scratch in C and Lua, using the Allegro low-level game library and the IUP widget tool kit.
Its features include Macintosh video mode (DOS VGA/EGA/CGA also availale) multiroom dsplay, real-time level editor GUI, and Lua REPL for on-the-fly scripting.
Download
MININIM is under constant and fast development. It uses a rolling release scheme, meaning that updated versions are often released as soon as new features have been implemented or bugs have been fixed. This way the latest developments are always available to an wider audience. Notice that its version number reflects the date of release.
Its user’s manual (in PDF format) is bundled in the hope that it might be useful, but keep in mind that it lags far behind the current development stage of MININIM and thus doesn’t describe several features thereof accurately or at all. The author plans to update MININIM’s documentation in a definitive manner when MININIM reaches reasonable feature-set stability. In case you’d like to help in speeding up this process by maintaining its documentation, you’re very welcome! Please, contact the MININIM community at its forum.
Windows
If you are under Microsoft Windows a MinGW build is readily available. No installation is required, just extract the zip archive and run ‘mininim.exe’.
mininim-201701122309-win32.zip
GNU/Linux
If you use GNU/Linux, you have to clone its VCS repository and build it yourself. It should be quite straightforward — just follow the advice given at its GitHub page. If you are planning to build Allegro from source consider using oitofelix’s fork for best results. It may have improvements brought to the library through MININIM.
Using MININIM
This briefly describes how to access most currently implemented
MININIM features. You can have access to other features using the
command-line. Use mininim --help
for a complete list of the
available options. In case you have any question about MININIM, the
best place to obtain help is at its
forum.
Key bindings
CTRL+R
: restart gameCTRL+A
: restart levelCTRL+G
: save gameCTRL+Q
: quit gameCTRL+V
: show MININIM versionCTRL+S
: enable/disable soundCTRL+J
: joystick mode/calibrate joystickCTRL+K
: keyboard modeCTRL+L
: load configurationCTRL+P
: save pictureF7
: load replayALT+F7
: record replayF9
: change hue paletteF10
: change guard modeF11
: change environment modeF12
: change video mdoeD
: change display modeF
/ALT+ENTER
: enable/disable fullscreen (desktop mode)SHIFT+I
: flip screenSHIFT+K
: flip gamepadSHIFT+B
: enable/disable room drawingESC
: pause gameSPACE
: display remaining time+
/=
: increase time limit-
/_
: decrease time limit(
: decrease time frequency)
: increase time frequencyR
: resurrect kidA
: alternate between kid and its shadowsK
: kill current enemyI
: enable/disable immortal modeSHIFT+S
: increase kid’s current livesSHIFT+T
: increase kid’s total livesSHIFT+W
: float kidTAB
: display skillCTRL+=
: increase counter attack skillCTRL+-
: decrease counter attack skillALT+=
: increase counter defense skillALT+-
: decrease counter defense skillF8
: enable/disable level editorCTRL+Z
: undo level modificationCTRL+Y
: redo level modificationSHIFT+L
: warp to next levelSHIFT+M
: warp to previous levelC
: show direct coordinatesSHIFT+C
: show indirect coordinatesHOME
: focus multi-room view on kidSHIFT+HOME
: center multi-room viewM
: change multi-room fit mode[
: decrease multi-room resolution]
: increase multi-room resolutionCTRL+[
: decrease multi-room width resolutionCTRL+]
: increase multi-room width resolutionALT+[
: decrease multi-room height resolutionALT+]
: increase multi-room height resolutionH
: select room at left (right if flipped horizontally)J
: select room at right (left if flipped horizontally)U
: select room above (below if flipped vertically)N
: select room below (above if flipped vertically)SHIFT+H
: move multi-room view one cell to left (right if flipped horizontally)SHIFT+J
: move multi-room view one cell to right (left if flipped horizontally)SHIFT+U
: move multi-room view one cell above (below if flipped vertically)SHIFT+N
: move multi-room view one cell below (above if flipped vertically)ALT+H
: move multi-room view one page to left (right if flipped horizontally)ALT+J
: move multi-room view one page to right (left if flipped horizontally)ALT+U
: move multi-room view one page above (below if flipped vertically)ALT+N
: move multi-room view one page below (above if flipped vertically)
Level Editor Chart
The following schematic chart documents MININIM’s level editor functionality.
Thanks to Gutxi Haitz Céspedes who designed and released it freely under the CC BY-SA 4.0 and GNU FDL v1.3+ licenses.
Links
Support MININIM development
MININIM development is voluntary. If you like this game and want to thank the author for the work he has done so far, or want to enable him to spend more time improving it, please make a donation! For values equal or greater than 50 US$ or 0.12 BTC your name will be acknowledged in the “Donors” section of the manual and in the donors page. If you decide to make recurrent donations, the total amount of your donations will be updated every month for all records. Thank you for your support.
PLEASE, SUPPORT MININIM DEVELOPMENT!
1 Jordan Mechner (born June 4, 1964) is an American video game designer, author, screenwriter, and filmmaker, best known for creating the Prince of Persia video game franchise and the 8-bit computer game Karateka.
2 Of course, none of this is reason enough to name a game engine “MININIM”, if not by the fact that it’s a really cool palindrome!