Free Hero Mesh is a puzzle game engine for turn-based grid-based puzzle games. You can define your own classes of objects using the Free Hero Mesh programming language. It is also designed to be compatible with MESH:Hero puzzle sets, which must be converted to Free Hero Mesh using the provided "mbtofhm" program. However, Free Hero Mesh adds a lot of new features and bug fixes compared with MESH:Hero. It is available in a Fossil repository; there are two sources: * Main: http://zzo38computer.org/fossil/heromesh.ui * Mirror: http://chiselapp.com/user/zzo38/repository/freeheromesh (The main source is more often updated. The changes to the main copy will occasionally be pushed to the mirror. Contributions are not accepted at the mirror directly; they must be made in the main repository first.) There is also a mirror on GitHub: * Mirror: https://github.com/zzo38/freeheromesh (Note that I cannot accept pull requests on GitHub. You are free to write them, although they cannot be merged; however, they will be reviewed and then may be manually entered into the fossil repository.) === Installation === Currently, there isn't much of this; contributions will be accepted. There is a shell script for compiling it available, though. Requirements: * Linux (it should hopefully work on other POSIX systems, although this is untested; it might use some Linux-specific functions and/or GNU-specific functions; I may be willing to accept contributions if this can be fixed). * SQLite version 3 (a recent version). Add a symlink to the sqlite3.h and sqlite3.o files into the same directory with the source files (or you can compile it from source with the desired options; the default options will do, although it is safe (and is recommended) to omit the deprecated functions and to set SQLITE_DQS=0). * SDL1.x (the compatibility layers have not been tested with this software; if you have tested it please report it, and you may contribute patches to fix it). * A C compiler, with GNU extensions (tested with GCC; it has not been tested with Clang, but I expect it to work; report it if it doesn't work). * If you wish to alter some of the files, Node.js or a compatible JavaScript runtime is required for compiling these files (you do not need this if you do not wish to modify Free Hero Mesh). * Colour display, with resolution at least 640x480 (preferably more), and at least 256 colours. * Keyboard and mouse, with three mouse buttons (the mouse wheel is not needed and is not used, but it is OK if you have it). The distributor should edit man6/heromesh.str in order to correctly specify the directory containing the documentation files. (This does not affect the working of Free Hero Mesh itself; it only affects the man page.) Before using it, you must create a file called .heromeshrc in your home directory; you may use default.heromeshrc to start with, and then customize it as you wish. If compiled with "./compile p" then it is installed as "bin/heromesh" (relative to the current directory, which should be the directory where the source files are) and installs "bin/current.heromeshrc" as well (if it does not already exist; it won't overwrite an existing file). In this case, it can be used as a "portable app" mode. If compiled with "./compile" without "p", then it is installed in the "bin" subdirectory of your home directory, by default. You can set the EXE environment variable to override this. You may edit comconfig.h (based on details on comconfig.doc) if you wish to customize some of the compile options (other than those which are part of the compiler itself, and the options mentioned above). There are optional runtime features that may require other programs in order to use them, but that you can ignore if you do not use them. Such optional features include: * If you want to import/export pictures, you will need an implementation of farbfeld. ImageMagick 7 includes an implementation of farbfeld, so if you have that, then that will work. There are also other implementations, such as the original "farbfeld" package, and Farbfeld Utilities. * If you want to use the clipboard functions, you will need xclip or some other program to interact the clipboard with stdin/stdout. (The X window system is not necessarily required; you can use any system that can be used with SDL.) === Documentation === Free Hero Mesh includes the following documentation files (plain text): * 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. * codepage.doc: Describes the use of code pages and the file format of the codepage.har file. * comconfig.doc: Compile-time configuration options. * commandline.doc: Describes the command-line arguments. The man page also describes the command-line arguments, although the commandline.doc file has a more elaborate description. * config.doc: Describes the configuration options for Free Hero Mesh. * edit.doc: Describes the use of the level editor. * export.doc: The level export format is described in this file; it can be used for importing as well as exporting. * fileformat.doc: Documents the file formats. Most users will not need this document. * game.doc: Describes the game play and the controls for the game play. * man6/heromesh.6: Man page; includes information about command-line arguments, environment variables, and link to further documentation. (You should install this in your man pages directory.) * man6/heromesh.str: Must be installed in the same directory as the man6/heromesh.6 file. The distributor should change this to point to the correct directories where the files are stored; these directories will be mentioned in the man page * misc/compare/*.doc: Comparison with other puzzle game engines, such as Everett Kaser's MESH:Hero engine. (Read these files if you are used to other game engines and want to know the differences.) * misc/mbform.doc: Describes the .mb file format for Hero Mesh. (Not directly relevant to Free Hero Mesh. It contains information that was used for writing the converter, and may be of interest to some readers for other purposes, but is neither used nor does it contain anything that is needed for users or developers of Free Hero Mesh.) * picedit.doc: Describes the picture editor. * puzzleset.doc: Describes what makes up a puzzle set. * sql.doc: This file lists and documents each of the SQL functions and SQL tables that are available. This is not relevant to programming the rules of the game; it is used for user customization, and for performing batch operations when editing, and for producing reports. * tutorial.doc: Tutorial documentation. === Other files === Free Hero Mesh also includes the following other files, which are not the source code files, compilation files, or documentation files: * codepage.har: Contains fonts for code pages. Code page 437 is included inside of the executable file and does not need this file; this file is only needed for code pages other than 437. * default.heromeshrc: An example configuration file which you can customize for your own use. You should at least set the proper paths to the files. * hash.c and hash.h: A library for cryptographic hash calculation. This is compiled into Free Hero Mesh, but can also be used in other programs independently of Free Hero Mesh. (Note that some algorithms it implements are considered to be insecure, but are included for compatibility with formats/protocols that use them.) * imgtofhm.c: Converts pictures into the Free Hero Mesh format. The command line arguments are: the maximum number of pictures, the lump name prefix, and then the transparency colour (in hex format) (optional). It receives the pictures in farbfeld format in a vertical strip from stdin, and writes the Hamster archive to stdout (which can be appended to a .xclass file). * mbtofhm.c: Converter from Everett Kaser's MESH engine into Free Hero Mesh. Give the base name of the output files as the command-line argument, and receives the .mb file from stdin. * misc/har.c: A small C program for dealing with Hamster archives. This is not properly a part of Free Hero Mesh (and is not needed in order to use or compile Free Hero Mesh), but is included since it is likely to be useful for some users (e.g. to copy pictures/sounds between puzzle sets). * misc/sokoban.tar.gz: Example puzzle set. * smallxrm.c and smallxrm.h: This is an implementation of the X resource manager which is used in Free Hero Mesh but can also be used in other programs independently from Free Hero Mesh. (The files in the misc/ directory are not part of Free Hero Mesh nor are they needed by Free Hero Mesh, but are provided for convenience. They can safely be ignored or deleted if you are not using them.) === Community/discussion === For discussion of Free Hero Mesh, use the NNTP server. This is a newsgroup in the zzo38computer.org NNTP server, named: un2.org.zzo38computer.soft.freeheromesh You may use it for: * Announcements about Free Hero Mesh * Questions about the use of Free Hero Mesh * Questions about the implementation of Free Hero Mesh * If you made up your own puzzle sets, to link to them * To comment on other puzzle sets * Bug reports * Feature requests * Patches * Contributions to documentation, including this file * Anything else related to Free Hero Mesh, that I may have missed You may also post bug reports and feature requests using the ticketing system on the Fossil repository, or using the GitHub issues and pull requests. However, note that the GitHub can only be used by those who have a GitHub account, so the NNTP may be preferable. There is also the IRC channel #freeheromesh on Libera. Logs of this IRC are available at: https://logs.esolangs.org/libera-freeheromesh/ (There was previously a Matrix chat as well, but Libera has removed the Matrix chat for now. If someone else who uses Matrix sets up a plumbed Matrix chat to connect to the IRC (please contact me for details), then I will mention that here.) === License === Free Hero Mesh is public domain. See the LICENSE file for details.