MININIM 0.10

A free software implementation of Prince of Persia 1.

Moderator: English Moderator Team

User avatar
oitofelix
Wise Scribe
Wise Scribe
Posts: 202
Joined: February 17th, 2016, 1:59 pm
Contact:

Re: MININIM 0.10

Post by oitofelix » April 14th, 2016, 5:25 pm

Norbert wrote:If I'm not mistaken during this beta testing phase, we should convert the input Texinfo file(s) to PDF ourselves, correct?
That's correct.
Norbert wrote:I'm trying to use texi2pdf
MININIM uses GNU autotools, thus the build system takes care of building the documentation.

Code: Select all

cd doc && make mininim.pdf
Norbert wrote:Perhaps you could provide us with a basic textual overview in a forum post of the most relevant commands and key combinations that will allow us to access and test the new features.
MININIM's manual has doubled in size. I'm not sure I could fairly explain the level editor operations in a succinct forum post, specially when there is complete and detailed documentation available.

Thank you, Norbert, for your interest.

Code: Select all

 88888  FFFFF Bruno Félix Rezende Ribeiro (oitofelix) [0x28D618AF]
 8   8  F     http://oitofelix.freeshell.org/mininim/
 88888  FFFF  mailto:oitofelix@gnu.org
 8   8  F     irc://chat.freenode.org/oitofelix
 88888  F     Please, support my work: http://oitofelix.freeshell.org/funding.html

User avatar
Norbert
The Prince of Persia
The Prince of Persia
Posts: 3169
Joined: April 9th, 2009, 10:58 pm
Contact:

Re: MININIM 0.10

Post by Norbert » April 15th, 2016, 12:41 am

This gives me:

Code: Select all

norbert@ren ~/Desktop/mininim-master/doc $ make mininim.pdf
  TEXI2PDF mininim.pdf
/usr/bin/texi2dvi: pdfetex exited with bad status, quitting.
make: *** [mininim.pdf] Error 1
I've tried running "pdfetex mininim.texi". It reports release.texi is missing. I copied that file into the directory, but then it reports that epsf.tex cannot be found, and it doesn't seem to create a PDF file. What should I do?

User avatar
oitofelix
Wise Scribe
Wise Scribe
Posts: 202
Joined: February 17th, 2016, 1:59 pm
Contact:

Re: MININIM 0.10

Post by oitofelix » April 15th, 2016, 1:42 am

Norbert wrote:What should I do?
You probably don't have TeX Live installed. Try

Code: Select all

make V=1 mininim.pdf
to make sure that's the case.

In affirmative case,

Code: Select all

sudo apt-get install texlive
should solve the issue.

Code: Select all

 88888  FFFFF Bruno Félix Rezende Ribeiro (oitofelix) [0x28D618AF]
 8   8  F     http://oitofelix.freeshell.org/mininim/
 88888  FFFF  mailto:oitofelix@gnu.org
 8   8  F     irc://chat.freenode.org/oitofelix
 88888  F     Please, support my work: http://oitofelix.freeshell.org/funding.html

User avatar
Norbert
The Prince of Persia
The Prince of Persia
Posts: 3169
Joined: April 9th, 2009, 10:58 pm
Contact:

Re: MININIM 0.10

Post by Norbert » April 15th, 2016, 11:44 am

The command "make V=1 mininim.pdf" ends in an error, but the verbosity might give you more useful data:

Code: Select all

norbert@ren ~/Desktop/mininim-master/doc $ make V=1 mininim.pdf
TEXINPUTS="../build-aux:$TEXINPUTS" \
        MAKEINFO='/usr/bin/makeinfo -I /home/norbert/Desktop/mininim-master/build-aux -I /home/norbert/Desktop/mininim-master/doc -I /home/norbert/Desktop/mininim-master/doc/release -I /home/norbert/Desktop/mininim-master/doc/philosophy -I /home/norbert/Desktop/mininim-master/doc/www -I /home/norbert/Desktop/mininim-master/doc/release  -I .' \
        texi2dvi  -I /home/norbert/Desktop/mininim-master/build-aux -I /home/norbert/Desktop/mininim-master/doc -I /home/norbert/Desktop/mininim-master/doc/release -I /home/norbert/Desktop/mininim-master/doc/philosophy -I /home/norbert/Desktop/mininim-master/doc/www -I /home/norbert/Desktop/mininim-master/doc/release --pdf --batch  --build-dir=mininim.t2p -o mininim.pdf  \
        mininim.texi
This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013/Debian)
 restricted \write18 enabled.
entering extended mode

(/home/norbert/Desktop/mininim-master/doc/./mininim.texi
(/home/norbert/Desktop/mininim-master/build-aux/texinfo.tex
Loading texinfo [version 2013-09-11.11]: pdf, fonts, markup, glyphs,
page headings, tables, conditionals, indexing, sectioning, toc, environments,
defuns, macros, cross references, insertions, localization, formatting,
and turning on texinfo input format.)
(/home/norbert/Desktop/mininim-master/doc/release/release.texi)
(/home/norbert/Desktop/mininim-master/doc/copying.texi
(/home/norbert/Desktop/mininim-master/doc/release/release.texi))
/home/norbert/Desktop/mininim-master/doc/./mininim.texi:77: epsf.tex not found,
 images will be ignored.
@image ...f.tex not found, images will be ignored}
                                                  @global @warnednoepsftrue ...
<argument> ...@image {mininim-figures/mininim,2in}
                                                  @unskip @hfil 
@centersub ...enalty @fi @line {@kern @leftskip #1
                                                  @kern @rightskip }
@\center ...{@hfil @ignorespaces #1@unskip @hfil }
                                                  @let @centersub @relax 
l.77 @center @image{mininim-figures/mininim,2in}
                                                
[1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2] [-1] (Preface)
(/home/norbert/Desktop/mininim-master/doc/release/description.texi) Chapter 1
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] Chapter 2 [11] [12]
Cross reference values unknown; you must run TeX again. [13] [14] [15] [16]
[17] [18] [19] Chapter 3 [20] [21] [22] [23] Chapter 4 [24] [25] [26] [27]
[28] [29] Chapter 5 [30] [31] [32] [33] [34] [35] Chapter 6 [36] [37] [38]
[39] [40] [41] [42] [43] [44] [45] [46] [47]
Overfull \hbox (4.73459pt too wide) in paragraph at lines 3780--3780
 @textbf Style| 

Overfull \hbox (2.37599pt too wide) in paragraph at lines 3780--3781
   @textbf FAT[]GUARD| 

Underfull \hbox (badness 10000) in paragraph at lines 3789--3790
 

Underfull \hbox (badness 10000) in paragraph at lines 3796--3797
 

Underfull \hbox (badness 10000) in paragraph at lines 3803--3804
 

Underfull \hbox (badness 10000) in paragraph at lines 3810--3811
 

Underfull \hbox (badness 10000) in paragraph at lines 3817--3818
 

Underfull \hbox (badness 10000) in paragraph at lines 3824--3825
 

Underfull \hbox (badness 10000) in paragraph at lines 3831--3832
 
[48] [49] [50] [51] [52] [53] Chapter 7 [54] [55] [56] [57] [58] Chapter 8
[59] (/home/norbert/Desktop/mininim-master/doc/release/README.texi
(/home/norbert/Desktop/mininim-master/doc/release/release.texi) [60]
(/home/norbert/Desktop/mininim-master/doc/release/donating.texi
Underfull \hbox (badness 10000) in paragraph at lines 16--27

) [61]
Underfull \hbox (badness 10000) in paragraph at lines 422--425
 []@textrm Install the pack-ages: `@texttt mingw32-base[]@textrm '[], `@texttt 
mingw32-gcc-g++[]@textrm '[], `@texttt msys-base[]@textrm '[],
) Appendix A [62]
(/home/norbert/Desktop/mininim-master/doc/release/ANNOUNCEMENT.texi
(/home/norbert/Desktop/mininim-master/doc/release/release.texi)
(/home/norbert/Desktop/mininim-master/doc/release/description.texi)
(/home/norbert/Desktop/mininim-master/doc/release/latest-news.texi [63])
[64]
Underfull \hbox (badness 10000) in paragraph at lines 87--88
[][][]@texttt https://github.com/oitofelix/mininim/releases/download/v0.10.0.1/


Underfull \hbox (badness 10000) in paragraph at lines 96--97
[][][]@texttt https://github.com/oitofelix/mininim/releases/download/v0.10.0.1/


Underfull \hbox (badness 10000) in paragraph at lines 121--122
 [][][]@texttt https://github.com/oitofelix/mininim/releases/download/v0.10.0.1
/

Underfull \hbox (badness 10000) in paragraph at lines 122--123
 [][][]@texttt https://github.com/oitofelix/mininim/releases/download/v0.10.0.1
/
[65] (/home/norbert/Desktop/mininim-master/doc/release/todo-items.texi)
(/home/norbert/Desktop/mininim-master/doc/release/donating.texi
Underfull \hbox (badness 10000) in paragraph at lines 16--27

)) Appendix B [66]
(/home/norbert/Desktop/mininim-master/doc/release/DONORS.texi
(/home/norbert/Desktop/mininim-master/doc/release/release.texi)) Appendix C
[67]
(/home/norbert/Desktop/mininim-master/doc/philosophy/gnu-free-documentation-lic
ense.texi
(/home/norbert/Desktop/mininim-master/doc/philosophy/essay-header.texi
(/home/norbert/Desktop/mininim-master/doc/release/release.texi)) [68] [69]
[70] [71] [72] [73] [74]) Appendix D [75]
(/home/norbert/Desktop/mininim-master/doc/philosophy/linux-and-the-gnu-system.t
exi (/home/norbert/Desktop/mininim-master/doc/philosophy/essay-header.texi)
[76] [77]) (Index) [78] [79] )
(see the transcript file for additional information)</usr/share/texlive/texmf-d
ist/fonts/type1/public/amsfonts/cm/cmb10.pfb></usr/share/texlive/texmf-dist/fon
ts/type1/public/amsfonts/cm/cmbx12.pfb></usr/share/texlive/texmf-dist/fonts/typ
e1/public/amsfonts/cm/cmcsc10.pfb></usr/share/texlive/texmf-dist/fonts/type1/pu
blic/amsfonts/cm/cmmi10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/a
msfonts/cm/cmr10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts
/cm/cmr7.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8
.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr9.pfb></u
sr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsl10.pfb></usr/sha
re/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsl9.pfb></usr/share/texl
ive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsltt10.pfb></usr/share/texlive/
texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/share/texlive/texmf-
dist/fonts/type1/public/amsfonts/cm/cmsy9.pfb></usr/share/texlive/texmf-dist/fo
nts/type1/public/amsfonts/cm/cmti10.pfb></usr/share/texlive/texmf-dist/fonts/ty
pe1/public/amsfonts/cm/cmti9.pfb></usr/share/texlive/texmf-dist/fonts/type1/pub
lic/amsfonts/cm/cmtt10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/am
sfonts/cm/cmtt12.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts
/cm/cmtt9.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/latxfo
nt/lcircle1.pfb>
Output written on mininim.pdf (82 pages, 459609 bytes).
Transcript written on mininim.log.
/usr/bin/texi2dvi: pdfetex exited with bad status, quitting.
make: *** [mininim.pdf] Error 1
I already have the texlive package installed:

Code: Select all

norbert@ren ~/Desktop/mininim-master/doc $ sudo apt-get install texlive
Reading package lists... Done
Building dependency tree       
Reading state information... Done
texlive is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 36 not upgraded.
Thanks for trying to help.

[Edit: I found here that for Ubuntu-like systems, "the file, epsf.tex, is in the package texlive-generic-recommended". I've installed that package and I'm retrying. Okay, now it works.]

lvcabral
Vizier
Vizier
Posts: 89
Joined: March 11th, 2016, 10:34 pm

Re: MININIM 0.10

Post by lvcabral » May 17th, 2016, 6:04 am

Hey Bruno,

I saw that you're implementing a multi-room mode! That's cool, I want to have that in my computer as well!

Looking forward to see how it will look like. Some of your features, like the guard being aware of the kid regardless of the room is a perfect fit for this mode.

I decided to change back (automatically) to 1 room mode on Level 14, because it's a single layer and it blends better with the final scene.

User avatar
oitofelix
Wise Scribe
Wise Scribe
Posts: 202
Joined: February 17th, 2016, 1:59 pm
Contact:

Re: MININIM 0.10

Post by oitofelix » May 18th, 2016, 2:52 am

Hello Marcelo,
lvcabral wrote:I saw that you're implementing a multi-room mode! That's cool, I want to have that in my computer as well!
:D You already can! Just build from the VCS. The multi-room implementation is overall finished, I'm now making the in-game level editor work seamlessly with it.
lvcabral wrote:Looking forward to see how it will look like.
MININIM uses a quite generic multi-room implementation. Its resolution (number and layout of rooms displayed at once) can be any rectangle equal or greater than 1x1: 2x3, 10x1, 7x9, 10x10, etc... Thus they don't need to be square and there is no theoretical upper limit. They are also independent of the physical screen's resolution. It doesn't matter how many pixels your screen can display or your video card's textures can hold. Roughly, MININIM uses an array of real-size (320x200) bitmaps and applies software-based linear transformations for translation and stretch in the late rederization steps.

Furthermore the multi-room resolution can be changed while the game is running in any state, on-the-fly, without need to restart. The keys controlling this manual change are:
  • [: -1 room in width and -1 room in height
    ]: +1 room in width and +1 room in height
    CTRL+[: -1 room in width
    CTRL+]: +1 room in width
    ALT+[: -1 room in height
    ALT+]: +1 room in height
The related command line option (for invocation time) is --multi-room=WxH. The default multi-room resolution is 2x2.

MININIM uses smart algorithms for traversing the level room graph and providing the most convenient level visualization, maximizing the number of displayed rooms and centering the level within the visualization, in case the multi-room resolution gets bigger than the level. In MININIM all rooms have a defined link (there is no null link, like in the original game). Thus rooms at level borders are delimited by room 0 (that delimits itself in all directions, and is all walls). Therefore, for sufficiently high multi-room resolutions it's possible to see the entire level surrounded by walls ad infinitum.

MININIM can also fit the level automatically to the screen using one of two modes: STRETCH and RATIO. The former uses the minimum rectangular resolution that displays the whole level (often distorted), while the latter uses the minimum squared resolution that does the same (no distortion). The multi-room fit mode can be changed in-game by the M key. The fit mode is applied at the start of each level or at mode change. It can also be configured from command line using the --multi-room-fit-mode=MODE option.

MININIM's multi-room implementation can renderize levels with arbitrary linking between rooms (broken links, recursive links, or any chaotic arrangement) properly. Even the fit mode algorithms work right with levels of infinite visualization size like a room linked to itself. It's very interesting to use it to see how levels look in their entirety, specially when there are non-regular links. To render the level room graph structure, which is impossible to properly represent at once on a flat surface, MININIM renders the level mapping according to the currently selected rooms perspective. The currently selected room is indicated by a red rectangle surrounding it. It can be changed using the keys:
  • H: select room at left
    J: select room at right
    U: select room above
    N: select room below
It the selection reaches the multi-room resolution boundaries, it scrolls the visualization accordingly (1 page, that is, 1 time the full resolution in the direction given) and selects the next room. The multi-room view can also be scrolled manually one room at a time.
  • SHIFT+H: scroll multi-room view 1 room to left
    SHIFT+J: scroll multi-room view 1 room to right
    SHIFT+U: scroll multi-room view 1 room above
    SHIFT+N: scroll multi-room view 1 room below
Or 1 page at a time
  • ALT+H: scroll multi-room view 1 page to left
    ALT+J: scroll multi-room view 1 page to right
    ALT+U: scroll multi-room view 1 page above
    ALT+N: scroll multi-room view 1 page below
The multi-room rendering allows for perfect space continuity at room boundaries. There is no blind-spot where a frame may disappear when transitioning from room to room or otherwise when placed between rooms. Not even at corners of a room linked to itself from all directions (the worst possible scenario, where a single world-point maps to four distinct points in the euclidean visualization).

MININIM graphical rendering algorithms have been heavily optimized for multi-room support. Several layers of caching and other optimization techniques are in-place so legacy levels can be played in full-view using low-end (somewhat old) hardware. In fact, the development version of MININIM now renders orders of magnitude faster than the releasead ones. I can play at 12x12 resolutions on this 7 years old Intel Atom-based netbook (my main development machine) with no delay, using more or less the same processing power needed to render just one room by previous versions of MININIM.

For some reason MININIM runs not so optimally in Windows (of course, I use GNU/Linux for developing MININIM). Thus I've implemented in the development version of MININIM support for any native video card's resolution, in contrast with the default (and previously sole available) desktop mode which uses the desktop resolution for fullscreen and runs windowed for lower resolutions. To print the display modes supported by your video-card use the command line option: --print-display-modes. After choosing a mode, invoke MININIM with the command line option --display-mode=M, where M is the index of the selected mode. The game will be started at the given native display resolution, that may be changed in-game by the D key binding. Native resolutions may speed-up the engine's renderization while providing a convenient full-screen mode.
lvcabral wrote:Some of your features, like the guard being aware of the kid regardless of the room is a perfect fit for this mode.
Indeed. However, in my opinion the most appealing feature to use with a multi-room implementation of such capability is the in-game level editor. The level editor integrates greatly with the multi-room support. Imagine the ability to view every corner of an entire level, change anything you want in there, get immediate visual feedback, test your modifications in-place (live and real time), with no fear of messing things up (by playing or editing) because of unlimited undo/redo capability, and no worries about any arbitrary limitation imposed by the original game (number, type or combination of tiles, or guards...), and much more...

MININIM offers a level modding environment like no other I know about.

All I've described in this post until this point is not planned, but actually implemented and available right now in the development version of MININIM.
lvcabral wrote:I decided to change back (automatically) to 1 room mode on Level 14, because it's a single layer and it blends better with the final scene.
For MININIM the multi-room resolution is an user setting and therefore must be honored by principle. So MININIM never changes the multi-room resolution automatically unless asked to, like with the multi-room fit mode. However, when Guile scripting gets implemented, there will be an API for programming the multi-room services offered by the engine (among many other APIs).

This post is only the tip of the iceberg, I can't really manage to describe all available MININIM features, and combinations thereof.

Code: Select all

 88888  FFFFF Bruno Félix Rezende Ribeiro (oitofelix) [0x28D618AF]
 8   8  F     http://oitofelix.freeshell.org/mininim/
 88888  FFFF  mailto:oitofelix@gnu.org
 8   8  F     irc://chat.freenode.org/oitofelix
 88888  F     Please, support my work: http://oitofelix.freeshell.org/funding.html

User avatar
oitofelix
Wise Scribe
Wise Scribe
Posts: 202
Joined: February 17th, 2016, 1:59 pm
Contact:

Re: MININIM 0.10

Post by oitofelix » May 20th, 2016, 1:49 am

Here is a video I recorded to show MININIM multi-room features, and a little bit of its level editor capabilities:

Code: Select all

 88888  FFFFF Bruno Félix Rezende Ribeiro (oitofelix) [0x28D618AF]
 8   8  F     http://oitofelix.freeshell.org/mininim/
 88888  FFFF  mailto:oitofelix@gnu.org
 8   8  F     irc://chat.freenode.org/oitofelix
 88888  F     Please, support my work: http://oitofelix.freeshell.org/funding.html

salvadorc17
Calif
Calif
Posts: 527
Joined: August 27th, 2011, 2:04 am

Re: MININIM 0.10

Post by salvadorc17 » May 31st, 2016, 9:27 pm

Very cool the multiroom feature, what do you say about multiplayer? It is possible using the engine?

User avatar
oitofelix
Wise Scribe
Wise Scribe
Posts: 202
Joined: February 17th, 2016, 1:59 pm
Contact:

Re: MININIM 0.10

Post by oitofelix » May 31st, 2016, 10:20 pm

salvadorc17 wrote:what do you say about multiplayer? It is possible using the engine?
Network play is a planned feature since day one. :)

Code: Select all

 88888  FFFFF Bruno Félix Rezende Ribeiro (oitofelix) [0x28D618AF]
 8   8  F     http://oitofelix.freeshell.org/mininim/
 88888  FFFF  mailto:oitofelix@gnu.org
 8   8  F     irc://chat.freenode.org/oitofelix
 88888  F     Please, support my work: http://oitofelix.freeshell.org/funding.html

User avatar
Norbert
The Prince of Persia
The Prince of Persia
Posts: 3169
Joined: April 9th, 2009, 10:58 pm
Contact:

Re: MININIM 0.10

Post by Norbert » November 25th, 2016, 6:08 pm

Currently, with the GitHub master branch, "make V=1 mininim.pdf" complains that various .texi files are missing.
Adding "release/" here and there fixes some of these errors.
However, new errors keep showing up, which makes me think perhaps the command to create a PDF file has changed altogether.
Perhaps it would be wise to modify MININIM to also create the PDF document when users run "make" to create the executable?
Either way, please advise.

Also, I'm wondering. When I use "F8 CE O backspace backspace L S" with LEVELS.DAT, it says "native level module only". Maybe it's possible to pick DOS tile+modifier combinations for all extended tiles MININIM supports, and then also allow usage of these tiles with LEVELS.DAT? It's not totally necessary for MININIM to save to LEVELS.DAT. What I have in mind is that I would use apoplexy to create and save custom tiles that will then be understood by MINIMIN as its extended tiles. (It might be best not to pick tile+modifier combo 10+7 for new potions, since Secrets of the Citadel's shadow potion already uses that.)

User avatar
oitofelix
Wise Scribe
Wise Scribe
Posts: 202
Joined: February 17th, 2016, 1:59 pm
Contact:

Re: MININIM 0.10

Post by oitofelix » November 25th, 2016, 10:11 pm

Norbert wrote:Currently, with the GitHub master branch, "make V=1 mininim.pdf" complains that various .texi files are missing.
I've cloned, bootstrapped, configured it and then built the documentation using the aforementioned command with no issue. I'm using Debian Jessie 8.6. I'd like to track your problem down, so you can build the documentation and I can find out whether it's possible to fix something in MININIM's side as to prevent people from running into the same problem again.

As a side note, I'd like to warn you that the documentation is out of date. I've added many features since I last worked on it. In fact, it's practically the only thing that needs to be worked on before the third release candidate gets ready. This semester I got busy with university, and I'm waiting the next break to bring that release into light.
Norbert wrote:Adding "release/" here and there fixes some of these errors.
What are the exact error messages? Could you post them?
Norbert wrote:However, new errors keep showing up, which makes me think perhaps the command to create a PDF file has changed altogether.
That's not the case. The build system for the documentation didn't change at all.
Norbert wrote:Perhaps it would be wise to modify MININIM to also create the PDF document when users run "make" to create the executable?
Building documentation requires TeXLive which is a huge dependency (hundreds of MB) not required for building the executable. In particular, people building under MinGW likely don't have (and probably wouldn't want) that package installed. I've since the last release migrated from building under MinGW to cross-compiling under GNU/Linux and building my own MinGW version of Allegro and its dependencies, though.
Norbert wrote:Also, I'm wondering. When I use "F8 CE O backspace backspace L S" with LEVELS.DAT, it says "native level module only".
Just for the record, that message shows up whenever the current level module is not native and the user tries to save a level using the "E>LS" command. The correct procedure is to export the levels to the native format using the option --convert-levels and then running MININIM with the native level module, using --level-module=native.
Norbert wrote:Maybe it's possible to pick DOS tile+modifier combinations for all extended tiles MININIM supports, and then also allow usage of these tiles with LEVELS.DAT?
MININIM has three distinct fields for describing each construction (tile): foreground, background and extension. Currently there are 25 possible foregrounds, 9 possible backgrounds and depending upon construction the extension can be in almost 100 different states. Therefore it's necessary at least a 16 bit field to record all possible variations (MININIM internally uses three architecture dependent integers, while the native level format uses C integer ASCII representation). I think that in principle the foretable and backtable of the legacy format could accommodate that, but since it has to be backwards compatible, I'm not sure.
Norbert wrote:It's not totally necessary for MININIM to save to LEVELS.DAT.
If we could come up with a consistent specification for extending the legacy format to become as expressible as MININIM's native level format (at least in practice, because I think MININIM's native format is theoretically more extensible), it'd be my pleasure to support it for reading and saving as well.
Norbert wrote:What I have in mind is that I would use apoplexy to create and save custom tiles that will then be understood by MINIMIN as its extended tiles.
I'm glad you've found some use for MININIM. :) May I ask what your motivations are? Perhaps we could come up with something useful for both of us and the community as well.

Code: Select all

 88888  FFFFF Bruno Félix Rezende Ribeiro (oitofelix) [0x28D618AF]
 8   8  F     http://oitofelix.freeshell.org/mininim/
 88888  FFFF  mailto:oitofelix@gnu.org
 8   8  F     irc://chat.freenode.org/oitofelix
 88888  F     Please, support my work: http://oitofelix.freeshell.org/funding.html

User avatar
Norbert
The Prince of Persia
The Prince of Persia
Posts: 3169
Joined: April 9th, 2009, 10:58 pm
Contact:

Re: MININIM 0.10

Post by Norbert » November 25th, 2016, 11:38 pm

oitofelix wrote:[...]prevent people from running into the same problem again.
Unfortunately, now I cannot replicate the problem.
It did say the same thing that "texi2pdf mininim.texi" says.
./mininim.texi:23: I can't find file `release.texi'.
I then added "release/" on line 23, and so on.
Maybe I'm just confused and only ran texi2pdf, but I'm pretty sure I didn't.
Let's just forget about this. :)
oitofelix wrote:Building documentation requires TeXLive [...]
Could you maybe check for the availability of texlive/texi2dvi/...?

-----
I don't understand what "./mininim --convert-levels" should do.
For me, this command gives no output and no files are being added.
Maybe you could have it say something like "Exported x in format y to z/."
And, if it's not doing so already, if it cannot do its job throw an error message.
-----

Tiles. I just want to use apoplexy to place big poison potions here and there to fool around and play with things unique to MININIM. If MININIM loads LEVELS.DAT, it reads tile+modifier combos, I think. Maybe pick a tile+modifier combo for tiles unique to MININIM. For now, there's just the big poison potion, right?

Related to this is that I think we should allow native implementations that a) feature extended tiles, and b) can work with LEVELS.DAT, to "reserve" tile combos that everyone respects. This way we can continue to identify tiles by just their ('legacy') combos. Currently, there are 12 fake tiles (from SDLPoP), 1 shadow potion (from Secrets of the Citadel), potentially 1 big poison potion (from MININIM). Who knows what else will arrive, there are lots of combos left (especially with the random and modifier bits), but some kind of standard would be useful. Again, I mean with the legacy LEVELS.DAT format, what that file can already tell us about tiles. You know what I mean? I was thinking about the shadow potion and the big poison potion and was thinking: "Uh oh, these don't have the same combo, do they?" Because the regular potions (group 10) end with modifier 6, so perhaps both potions use 10+7 and that would be unfortunate. Not at all that each implementation should implement all these combos, just that they don't use the same combos for different tiles.

User avatar
oitofelix
Wise Scribe
Wise Scribe
Posts: 202
Joined: February 17th, 2016, 1:59 pm
Contact:

Re: MININIM 0.10

Post by oitofelix » November 26th, 2016, 1:45 am

Norbert wrote:Unfortunately, now I cannot replicate the problem.
But after all, did the documentation build successfully?
Norbert wrote:Could you maybe check for the availability of texlive/texi2dvi/...?
In principle I could, but that doesn't mean it would be sensible to build the documentation automatically in case TeXLive is found. As you've experienced, the documentation build is a lot more delicate than the executable build. I think people trying to build MININIM are mainly interested in the executable, thus risking to fail the build procedure because of optional documentation is not good IMHO. Therefore, people looking for documentation should build it themselves by executing a simple make invocation (if everything goes well).

Just to be clear, only people building from VCS need to build the documentation. All release tarballs and builds automatically come along with documentation, so only people changing the documentation will need to worry about that build procedure. Commit a3492e2 ensures this is the case for "make dist".
Norbert wrote:I don't understand what "./mininim --convert-levels" should do.
For me, this command gives no output and no files are being added.
Partial quote from --help: "Batch convert levels 1 to 14 accessible by the current level module to the native format and exit. The levels are saved in the user data directory, where they take precedence over levels in every other location."

Partial quote from --print-paths: "User data: ~/.local/share/mininim/"

Therefore the levels should be written to the above listed directory (in my system at least; have to verify yours), after a successful invocation of --convert-levels.

While you are at it, try: "./mininim --mirror-level --convert-levels", to enjoy all legacy levels truly mirrored horizontally.
Norbert wrote:Maybe you could have it say something like "Exported x in format y to z/."
You are right, MININIM owns the user some info on what's going on. Commit 038498e implements a helpful message when converting level files. For instance, invocation "./mininim --le=l --c" yields "Levels have been converted using module LEGACY into native format at ~/.local/share/mininim/". Thank you for your suggestion. :)
Norbert wrote:And, if it's not doing so already, if it cannot do its job throw an error message.
If the conversion fails for any reason, MININIM already prints a hopefully helpful message and exits with code -1.
Norbert wrote:Tiles. I just want to use apoplexy to place big poison potions here and there to fool around and play with things unique to MININIM. If MININIM loads LEVELS.DAT, it reads tile+modifier combos, I think. Maybe pick a tile+modifier combo for tiles unique to MININIM. For now, there's just the big poison potion, right?
It depends on how you define "tiles". For MININIM, "tiles" are constructions, therefore discounting extensions, in MININIM we have at least 225 different tiles resulting from all different combinations of foregrounds and backgrounds. Messing around with its level editor one can make numerous combinations not possible in the legacy game. For example, one can put a torch or window behind a door (gate). That would be a new tile in the legacy game's sense. Now considering extensions, one can for example put items (potions and sword) on several different kinds of floors and pillar bases, what is not allowed in the legacy game in which any given item defines a unique tile. The crucial difference here is that MININIM defines a "tile" as an entity which is the combination of three parts, while the legacy game consider those as somewhat irreducible.

Said that, if we are speaking of "tile" as each component of a construction separately, as opposed to their possible combinations, MININIM defines the following two extra ones: "HIDDEN_FLOOR" (foreground) and "BIG_POISON_POTION" (extension).

PS: Do you think there is something wrong with MININIM's level editor? You can use it to explore the full extent of MININIM's unique features in real time. Or are you talking about supporting features unique to MININIM within apoplexy?
Norbert wrote:Related to this is that I think we should allow native implementations that a) feature extended tiles, and b) can work with LEVELS.DAT, to "reserve" tile combos that everyone respects. This way we can continue to identify tiles by just their ('legacy') combos. Currently, there are 12 fake tiles (from SDLPoP), 1 shadow potion (from Secrets of the Citadel), potentially 1 big poison potion (from MININIM). Who knows what else will arrive, there are lots of combos left (especially with the random and modifier bits), but some kind of standard would be useful. Again, I mean with the legacy LEVELS.DAT format, what that file can already tell us about tiles. You know what I mean? I was thinking about the shadow potion and the big poison potion and was thinking: "Uh oh, these don't have the same combo, do they?" Because the regular potions (group 10) end with modifier 6, so perhaps both potions use 10+7 and that would be unfortunate. Not at all that each implementation should implement all these combos, just that they don't use the same combos for different tiles.
I think your point is a valid one, but don't worry because MININIM doesn't attribute any "combo" tile ids for constructions not already registered for use by the legacy level file format, because it doesn't expect to read from nor save those tiles to legacy files. This would only make sense for MININIM, in case there was an established universal standard for those additional tiles.

Code: Select all

 88888  FFFFF Bruno Félix Rezende Ribeiro (oitofelix) [0x28D618AF]
 8   8  F     http://oitofelix.freeshell.org/mininim/
 88888  FFFF  mailto:oitofelix@gnu.org
 8   8  F     irc://chat.freenode.org/oitofelix
 88888  F     Please, support my work: http://oitofelix.freeshell.org/funding.html

User avatar
Norbert
The Prince of Persia
The Prince of Persia
Posts: 3169
Joined: April 9th, 2009, 10:58 pm
Contact:

Re: MININIM 0.10

Post by Norbert » November 26th, 2016, 3:05 am

oitofelix wrote:But after all, did the documentation build successfully?
Yes.
oitofelix wrote:Commit 038498e implements a helpful message when converting level files.
Thanks.
oitofelix wrote:are you talking about supporting features unique to MININIM within apoplexy?
I wanted (and want) to use apoplexy, the editor I'm most familiar with, to place big poison potions - and now also hidden floors ;) - here and there to fool around and playtest with MININIM a bit. This means I'm using MININIM with LEVELS.DAT, and I was trying to figure out which combo I had to enter on apoplexy's custom tiles screen to make MININIM recognize its own unique tiles in LEVELS.DAT.
oitofelix wrote:[...], in case there was an established universal standard for those additional tiles.
Well, who better to lay the first bricks towards such a standard than you and Falcury? :)
To quote from Prometheus, "big things have small beginnings".
We could, for instance, start with establishing that a 10+8 combo in LEVELS.DAT refers to a potion that kills instantly?
And, should it always be a big potion with blue bubbles? Things like that.

[Edit: Or perhaps it's time to move away from basic editors altogether. Although it's nice to not have to learn a new editor to work with a new PoP1 implementation.]

User avatar
oitofelix
Wise Scribe
Wise Scribe
Posts: 202
Joined: February 17th, 2016, 1:59 pm
Contact:

Re: MININIM 0.10

Post by oitofelix » November 26th, 2016, 6:20 am

Norbert wrote:I wanted (and want) to use apoplexy, the editor I'm most familiar with, to place big poison potions - and now also hidden floors ;) - here and there to fool around and playtest with MININIM a bit. This means I'm using MININIM with LEVELS.DAT, and I was trying to figure out which combo I had to enter on apoplexy's custom tiles screen to make MININIM recognize its own unique tiles in LEVELS.DAT.
I see. Nothing like a tool we are really familiar with! ;) By the way, I think we (the modding community) would very much appreciate an update to apoplexy including new tiles that happen to become standard.
Norbert wrote:Well, who better to lay the first bricks towards such a standard than you and Falcury? :)
I'm very open to it. Come on, Falcury, join us! :) Anyway, I think you (Norbert) play a pivotal role in this process, because aside from starting it, you are the author of one of the most widely used PoP level editors. In particular, if we are going to make this standard happen, I think the best way to validate it besides documenting it, is to implement it in independent reference projects, like MININIM, SDLPoP and apoplexy (if possible or applicable).

As soon as we agree upon any single tile specification, I'll make those available for use from MININIM's legacy level module. By the way, I think we could start listing the proposed new tiles that are already validated by a current implementation, like SDLPoP or MININIM, including their ids, expected behavior and any additional relevant information. I'm particularly interested in new tiles supported by SDLPoP.
Norbert wrote:We could, for instance, start with establishing that a 10+8 combo in LEVELS.DAT refers to a potion that kills instantly?
That's fine with me! To demonstrate my commitment in validating the standard, commit 2ca31ad extends the legacy level module to implement the big poison potion as combo 10+8 as you suggested (reserving 10+7 for the "shadow potion") and also implements hidden floor as [1]1, that is, foretable's floor with its random bits field set to 1. I've chosen that particular combination because:
  1. HIDDEN_FLOOR is floor-like.
  2. Modifier bit should be let alone for a possible future feature that affects most if not all tiles under the floor umbrella. We could, of course, double the number of possible floor-like tiles by considering it as an additional bit to the random bits field, since AFAIK, it's only used by loose floors. However that's not a decision to make on my own, because that would break the established canonical (albeit quite theoretical) meaning of that bit.
  3. It's desirable that HIDDEN_FLOOR be modifiable with usual floor backgrounds from the "free" group, thus it should not be introduced as a backtable extension.
However, there is one thing to consider. The format specification document says those random bits may be ignored. Therefore, theoretically it's possible that some level files out there may have them set to values other than 0. In this case those levels may not work as originally intended. The random bits with value 0 under the foretable's floor umbrella is then the new "normal floor", since we are defining meaning for the other values, and this is usually its ad-hoc value, judging by apoplexy's custom tile interface. MININIM is paranoid enough and considers any non-defined value as defaulting to the originally documented behavior.

For documentation purposes, here it's HIDDEN_FLOOR's description found in MININIM's documentation:

"This is rendered as NO_FLOOR, but as soon as the kid presses it, it’s replaced by FLOOR. This is depressible and uses no extension."

I think that the fact that it's replaced by FLOOR as soon as the kid presses it should be meant as "it behaves like floor", whether implementations internally replace it in memory by a FLOOR (MININIM does) should be implementation specific. MININIM has internally a relatively complex and general concept of "pressing a floor", however I think that should be meant to the equivalence of "pressing an opener (or closer) floor" in the target implementation.

Speaking about behavior descriptions, what is that 10+7 "shadow potion" about?
Norbert wrote:And, should it always be a big potion with blue bubbles?
Perhaps we should not enter too much on style or graphical details. Those might be implementation dependent, and maybe we should standardize only the fundamental behavior? What do you think? (I think there should be an implicit preference for following reference implementations, though)
Norbert wrote:[Edit: Or perhaps it's time to move away from basic editors altogether. Although it's nice to not have to learn a new editor to work with a new PoP1 implementation.]
I think people should use which implementation they like the most, as long as they are aware of the pros and cons of each one. In any case, having an implementation agnostic basic level editor is advantageous on its own, providing an easy entry point for people who want to make mods for multiple implementations, or don't want or aren't ready for using an advanced implementation specific one.

PS: Congratulation on legbop! That's very interesting and appreciated.

Code: Select all

 88888  FFFFF Bruno Félix Rezende Ribeiro (oitofelix) [0x28D618AF]
 8   8  F     http://oitofelix.freeshell.org/mininim/
 88888  FFFF  mailto:oitofelix@gnu.org
 8   8  F     irc://chat.freenode.org/oitofelix
 88888  F     Please, support my work: http://oitofelix.freeshell.org/funding.html

Post Reply