Free Hero Mesh

Check-in [956eb13fee]
Login
This is a mirror of the main repository for Free Hero Mesh. New tickets and changes will not be accepted at this mirror.
Overview
Comment:Add PORTING file (currently incomplete)
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 956eb13fee60174484eb5e13ffbff7cb0567f9bc
User & Date: user on 2022-06-30 06:01:45
Other Links: manifest | tags
Context
2022-06-30
06:37
More improvements to PORTING file. check-in: 65b8239f8b user: user tags: trunk
06:01
Add PORTING file (currently incomplete) check-in: 956eb13fee user: user tags: trunk
05:46
Implement the .saveSolutions.private option (and the SQL functions to work with it), and remove the unused .allowMouseWarp option. check-in: e71ea9875c user: user tags: trunk
Changes

Added PORTING version [7c1006dc5b].





























































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
This file describes considerations for anyone who will distribute the
program, include it in package managers, port it to other systems, etc.

(Many of the below sections are only partially written so far, and some
are not written at all, so far.)


=== Distribution ===

Dependencies of Free Hero Mesh include SDL1.x and SQLite.

If you are making a distribution of this program for UNIX-based systems
(including any Linux distribution), then you should ensure that you do:

* Link it with a recent version of SQLite. The version included in the
system might be too old, so ensure that you have a sufficiently new one.

* Install documentation files (*.doc) in some common directory.

* Edit the man6/heromesh.str file to specify the directory containing
the documentation files, and then install the man pages.

* Some GNU functions are used. If you are targeting a non-GNU system,
then you must modify the program appropriately.

* Some files may be referenced in the configuration file. When making
a distribution, ensure they specify the correct path to installed files.

Some operating system distributions have their own package conventions,
which apply additionally than the above.

The "har" program is independent and maybe it should be put into a
separate package, which should be recommended or suggested by this one.
It is useful in combination with Free Hero Mesh, but it is not really
specific to it (it might be of use with some other packages too, such
as OHRRPGCE, which "har" is also compatible with).

Anything in the "misc/" directory is not part of Free Hero Mesh, so
it should probably be excluded from the base package. You can decide
whether or not to include it in a separate package.

Free Hero Mesh uses argv[0] to determine whether to use home mode or
portable mode. A distribution may wish to change that default (it can
still be overridden by environment variables or by the -h switch).


=== Debian Packaging ===

Archive areas: The appropriate section should be "games", and the
appropriate priority should be "optional".

Architecture: Executable files must be compiled for a specific system (but
source codes should be able to compile on most or all systems without much
difficulty) (corresponding to "any" in Debian). Puzzle set files,
documentation files, and configuration files are architecture-independent
and are usable on any system (corresponding to "all" in Debian).

Version numbers: Currently there are no version numbers; if a release
version is made then that will be the version number.

Homepage: http://zzo38computer.org/freeheromesh/

Version Control: As of this writing, Fossil version control for packages
is not supported in Debian (or does not seem to be, as far as I can tell).
However, the web interface is available (see the home page for details).

Building: Currently there is no Makefile, but it can be added.

Dependencies: This program uses SDL1.x, the C standard library (with GNU
extensions), and anything that they might depend on. It also uses SQLite,
which can be linked either static or dynamic. Node.js (or a compatible
JavaScript run time) is used to rebuild some of the auto-generated source
files, and is not needed if you are not modifying Free Hero Mesh; Node.js
is also not required at run time.

Recommends/Suggests: The "har" program might be a separate package, which
might be recommended or suggested (but not required) by Free Hero Mesh.
(Other packages, such as OHRRPGCE, might also be capable of using it.)
An implementation of farbfeld is also helpful if you want to import or
export pictures (newest versions of ImageMagick have this feature, but
other packages also include this functionality; any one will do), and if
you want to use clipboard operations then xclip is also helpful.

Configuration files: The .heromeshrc file and .heromeshsession files are
configuration files; the latter is created automatically, but the former
must already exist. Use the default.heromeshrc from the source code and
customize the settings and paths as appropriate for the distribution. (The
program might be modified to use a system-wide configuration file if the
user-specific file does not exist, but it currently does not do that. An
alternative is to put the file in /etc/skel so that it is automatically
created when a user account is added.) As far as is known, no other
packages share configuration with Free Hero Mesh. There is possibility
that new versions of Free Hero Mesh might add new configuration settings,
especially default key bindings. This will need to be handled somehow
(possibly by documenting it in the upgrading system).

File names: Free Hero Mesh uses only ASCII file names. This conforms with
the requirement of Debian.

Permissions and owners: Puzzle sets (which may be included in a separate
package; another package might be used to install both the engine and the
puzzle sets together) may be shareable; in this case, they must be opened
read-only. Composite puzzle sets are probably best in this case since they
are always opened read-only. There is no need to restrict execution of any
file, or reading any installed file (even if the file is modified by the
system administrator).

Games: Debian policy has some specifications that are specific to game
programs. These probably apply normally to Free Hero Mesh. The set-group-id
mechanism is not needed; Free Hero Mesh does not share scores. It is OK to
install binaries in /usr/games and man pages in /usr/share/man/man6 but
the "har" program (which should probably be a separate package) should be
installed in /usr/bin instead, probably.

X Window System: This is probably not applicable, because SDL is able to
use other video systems, although normally the X window system is used. If
the operating system doesn't use X window system, then the program should
still be capable of working if SDL is configured to work in such a case.
(Free Hero Mesh has its own implementation of the X Resource Manager, which
can run without the X window system.)

Documentation: The file must be changed so that the man page specifies
correctly where the files are stored, according to the distribution system.
It may be OK for documentation to be a separate package, but this should be
Recommended or Suggested, if so. Either way, the plain text documentation
files can be installed in the appropriate subdirectory of /usr/share/doc.
Debian seems to prefer HTML documentation. I disagree and am using plain
text files instead (which can be viewed without installing a web browser).
They also want UTF-8 encoding. I am using ASCII, which is a subset of UTF-8
so that should be acceptable, too.

Copyright: Free Hero Mesh is in the public domain. It depends on SQLite
which is also public domain, and SDL1 which is LGPL. Puzzle sets might have
any license.

Also see the above section about "Distribution"; many of the things listed
there will also apply to Debian.


=== Testing ===

Free Hero Mesh has a autotest feature which can test the game execution,
if you have puzzle sets with valid solutions recorded. However, this only
tests the behaviour of the game engine, and not any other features. Also,
it only tests valid solutions, and not parts of the code that should result
in error messages (although this possibility might be added in future).


=== Game execution and user interface ===

The exec.c and class.c files are the most important files, and can probably
be used with minor changes even if porting to different systems and/or user
interfaces. The other files could be omitted, but then those parts must be
rewritten (possibly in a different programming language); some parts of the
existing files could be copied if needed.


=== Character Encoding ===

Free Hero Mesh does not and will not use Unicode. As of this writing, it
only supports single-byte character codes, although in future it is
intended that multi-byte codes (e.g. EUC-JP) might also be implemented.


=== Touch screen ===

Free Hero Mesh is designed to be used with a keyboard and mouse; it is not
meant for use with a touch screen. (On a device with both a keyboard and a
touch screen, most functions can work as they are (changing the bindings
as needed to avoid needing multiple mouse buttons), while some functions
that are not configurable, might be changed (or configuration options might
be added to support this possibility).)

The small fonts are also potentially a problem with touch screens. It is
intended that in future support will be added for arbitrary font sizes,
but currently this is not implemented (as this document is being written).


=== HTML5 ===

If you intend to port the game engine to HTML5, then I would recommend to
include documentation and links to the puzzle set files that will work
even if JavaScripts and CSS are disabled (that will work with Lynx); the
game engine may need JavaScript (and/or WebAssembly) to run to work, but
if you want to read documentation or download puzzle sets separately, then
it should not require such things.

The MIME type for composite puzzle sets is:
  application/freeheromesh.composite+hamarc

The MIME type could, for example, be used in a <link rel="alternate">
or <a ref="alternate"> block, the type attribute can specify the MIME
type and the href can be the URL of the puzzle set file.

Most likely, a different user interface should be written if a HTML5
version of Free Hero Mesh is made up; the above section about game
execution and user interfaces has some information that may be useful.


=== TRON ===

(TODO)


=== DOS ===

The lack of long file names may be a problem with DOS. Many file names may
need to be changed (including configuration files and the files that make
up a puzzle set), although composite puzzle sets will still work OK.

Furthermore, switches in DOS are usually / instead of - and are usually
case-insensitive; this could be changed if wanted.

Also a home directory is not normally used in DOS; the home mode of Free
Hero Mesh could be disabled, and always using portable mode instead.

A DOS version of Free Hero Mesh could additionally be changed to use an
internal clipboard, or an optional device driver for clipboard.

It may be desirable to implement support for importing and exporting PCX
and Dr.Halo picture formats directly, either built-in or using a separate
program that is included with it, in the DOS version.


=== Amiga ===

(TODO)


=== Microsoft Windows ===

(TODO)


=== Mac OS X ===

(TODO)

Modified README from [4be476e41d] to [0d6caffb8e].

93
94
95
96
97
98
99



100
101
102
103
104
105
106

* ARCHITECTURE: Describes the source code of Free Hero Mesh. This is only
relevant if you wish to modify Free Hero Mesh, or if you want to look up
something in the code and want to know what file to look at.

* FAQ: Frequently questions.




* README: This file. Describes how to find the Fossil repository, the
installation, documentation, discussion/community.

* bindings.doc: Describes the configuration of key/mouse bindings.

* class.doc: This document describes the Free Hero Mesh programming
language. Read this if you want to define your own classes of objects.







>
>
>







93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109

* ARCHITECTURE: Describes the source code of Free Hero Mesh. This is only
relevant if you wish to modify Free Hero Mesh, or if you want to look up
something in the code and want to know what file to look at.

* FAQ: Frequently questions.

* PORTING: Describes considerations for anyone who will distribute the
program, include it in package managers, port it to other systems, etc.

* README: This file. Describes how to find the Fossil repository, the
installation, documentation, discussion/community.

* bindings.doc: Describes the configuration of key/mouse bindings.

* class.doc: This document describes the Free Hero Mesh programming
language. Read this if you want to define your own classes of objects.