<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to EGM</title><link>https://sourceforge.net/p/hpg-projects/wiki/EGM/</link><description>Recent changes to EGM</description><atom:link href="https://sourceforge.net/p/hpg-projects/wiki/EGM/feed" rel="self"/><language>en</language><lastBuildDate>Fri, 20 Jan 2023 12:15:16 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/hpg-projects/wiki/EGM/feed" rel="self" type="application/rss+xml"/><item><title>EGM modified by Hugh Greene</title><link>https://sourceforge.net/p/hpg-projects/wiki/EGM/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;This page explains the general concepts and proposals behind the EGM&lt;br/&gt;
format. For actual specifications and documentation of the implemented&lt;br/&gt;
format, please see &lt;a class="" href="../EGM_format" title="wikilink"&gt;EGM format&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;EGM generally stands for &lt;em&gt;Extensible Game Module&lt;/em&gt;. The name&lt;br/&gt;
intentionally resembles that of ENIGMA, without the NI and A.&lt;/p&gt;
&lt;p&gt;EGM is ENIGMA's new game format designed with speed in mind. One of the&lt;br/&gt;
faults of ENIGMA's competition, namely &lt;a class="" href="../Game_Maker" title="wikilink"&gt;Game&lt;br/&gt;
Maker&lt;/a&gt;, is the massive save and load time for&lt;br/&gt;
both the source and the executable. Those who run larger projects often&lt;br/&gt;
end up waiting for whole minutes for the compiler to save the game, and&lt;br/&gt;
then for the game to load. The wiser of them migrate to external&lt;br/&gt;
resource storage, but this idea isn't well-supported by the IDE.&lt;/p&gt;
&lt;p&gt;These applications likewise use their own, undocumented, proprietary&lt;br/&gt;
format, which is difficult for novices to navigate and understand (I&lt;br/&gt;
mean, especially when they encrypted it, and all).&lt;/p&gt;
&lt;p&gt;ENIGMA should meet these issues with an extensible, plain-text format&lt;br/&gt;
with a database-like runtime. Sun has demonstrated that ZIP is a viable&lt;br/&gt;
format for such, Zip, and similar archiving formats, allows for the&lt;br/&gt;
insertion of new items into the directory structure without modification&lt;br/&gt;
to the entire file. It is also recognized by all modern operating&lt;br/&gt;
systems (at least the latest several versions of each), meaning that&lt;br/&gt;
most anyone who can run ENIGMA can open a Zip file. Not to mention, it&lt;br/&gt;
saves hours on documentation. These in combination make it a good bet&lt;br/&gt;
for a structural format.&lt;/p&gt;
&lt;h2 id="basic-format"&gt;Basic format&lt;/h2&gt;
&lt;p&gt;As mentioned, the articles of information will be stored in a Zip&lt;br/&gt;
archive. Beyond that, we must consider what sorts of information we will&lt;br/&gt;
be saving. For ENIGMA's purposes, all such sets of information fall into&lt;br/&gt;
a package known as a resource, which typically comprises a set of&lt;br/&gt;
plain-text attributes, and a binary section, be it an image&lt;br/&gt;
(background), a set of images (sprite, font), or metric information&lt;br/&gt;
(such as room instances or path nodes).&lt;/p&gt;
&lt;h4 id="tracking-and-enumerating"&gt;Tracking and Enumerating&lt;/h4&gt;
&lt;p&gt;Since each of these resources has at least some amount of text&lt;br/&gt;
associated with it, they should be based on a plain-text "properties"&lt;br/&gt;
file, similar to the ones employed by Sun in the JAR format. The files&lt;br/&gt;
should not be restricted to one format, however. Limiting the format&lt;br/&gt;
hinders extensibility. At the same time, the files should be easy to&lt;br/&gt;
traverse, and so should meet one of the two criteria:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The files should be named, in any desired order, particular or&lt;br/&gt;
    otherwise, in a table-of-contents file (TOC) in the same directory.&lt;br/&gt;
    This is the ideal solution for ENIGMA resources; the TOC would list&lt;br/&gt;
    them in the order they will appear in the &lt;a class="" href="../Resource_tree" title="wikilink"&gt;Resource&lt;br/&gt;
    tree&lt;/a&gt;. Because of the simple linear&lt;br/&gt;
    fashion of the TOC, a simple text file will suffice - no need to use&lt;br/&gt;
    .properties.&lt;/li&gt;
&lt;li&gt;As a lighter-weight alternative, the files can be stored in a&lt;br/&gt;
    predictable sequence as specified in the documentation of the&lt;br/&gt;
    application that will be using this format. For example, if ENIGMA&lt;br/&gt;
    were to use INI, we would look in the Sprites/ directory of the&lt;br/&gt;
    archive to find spr_0.ini, spr_1.ini, spr_2.ini. (Wherein 'ini'&lt;br/&gt;
    is just a familiar extension. The actual extension would more likely&lt;br/&gt;
    be .properties or &lt;a class="" href="../EYAML" title="wikilink"&gt;.ey&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In the second case, this specification does not call for a particular&lt;br/&gt;
prefix, or that the static characters be a prefix or even that there are&lt;br/&gt;
static characters in the sequence at all. The sequence must, however, be&lt;br/&gt;
easily generated by starting at a given index and incrementing by a&lt;br/&gt;
small, positive integer. Hence, [1, 2, 3], [a, b, c], and [J, K,&lt;br/&gt;
L] are acceptable, while [i, ii, iii, iv, v] is not. Numbering in&lt;br/&gt;
alternative bases is also acceptable, even where leading digits (plural)&lt;br/&gt;
are in a different base than the trailing digit (singular). For example,&lt;br/&gt;
A1, A2, A3... A8, A9, B1. But people will hate you if you do that. Note&lt;br/&gt;
that, when omitting leading zeroes, whether there is an implied 0 there&lt;br/&gt;
is application specific - so if you use spr_0 through spr_9, and then&lt;br/&gt;
spr_10, it is up to the application as to whether spr_10 will appear&lt;br/&gt;
before spr_2 or after spr_9. To guarantee ordering, you should either&lt;br/&gt;
use a TOC, or include leading zeroes, or ensure that the application&lt;br/&gt;
used handles this consistently.&lt;/p&gt;
&lt;p&gt;The extensions are mandatory and must be consistent, and in the prior&lt;br/&gt;
case, the TOC must always have a set name, such as "toc.txt". A program&lt;br/&gt;
attempting to read this spec to populate the tree would first begin by&lt;br/&gt;
attempting to locate the TOC. If it exists, it will use that. It is&lt;br/&gt;
undecided at this time what the specification should do with entries&lt;br/&gt;
with no corresponding properties file (either discard or use a default&lt;br/&gt;
set of attributes). Properties files not listed in the TOC shall be&lt;br/&gt;
appended to the tree in aforementioned sequential order after the TOC&lt;br/&gt;
entries. Resultantly, there is no difference between an empty TOC and a&lt;br/&gt;
missing/omitted one.&lt;/p&gt;
&lt;p&gt;This specification does not yet specify how to handle &lt;a class="" href="../Resource_tree#Nodes" title="wikilink"&gt;Secondary&lt;br/&gt;
Groups&lt;/a&gt; of resources.&lt;/p&gt;
&lt;h4 id="binary-data"&gt;Binary Data&lt;/h4&gt;
&lt;p&gt;Resources requiring binary data should store ONLY binary sequences under&lt;br/&gt;
512 bytes in with text attributes. In such a case, the format must be&lt;br/&gt;
hexadecimal, but spacing and capitalization are at the discretion of the&lt;br/&gt;
implementing application.&lt;/p&gt;
&lt;p&gt;In cases of binary data in excess of, or likely to be in excess of, 512&lt;br/&gt;
bytes, this data should be stored in a separate file, and the relative&lt;br/&gt;
path to that file should be referenced in the text-attributes file&lt;br/&gt;
mentioned in the subsection above.&lt;/p&gt;
&lt;h2 id="egm-anthem"&gt;EGM Anthem&lt;/h2&gt;
&lt;p&gt;''&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nt"&gt;вздор&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ерунда&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;нонсенс&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;чепуха&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;абсурдность&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;EGM&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nt"&gt;сумасбродство&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;абсурд&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;нонсенс&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;EGM&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nt"&gt;пустяки&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;бессмыслица&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;EGM&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;

&lt;span class="nt"&gt;Cosa&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;diavolo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;sto&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cantando&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nt"&gt;Non&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ho&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;indizio&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="nt"&gt;Ma&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;l&lt;/span&gt;&lt;span class="s1"&gt;'ho cantare per uno: EGM!&lt;/span&gt;

&lt;span class="s1"&gt;‫‏;מה חרא, עכשיו אני לשיר עברית&lt;/span&gt;
&lt;span class="s1"&gt;‬‏‬אז אני אשיר על אהבה אמיתית שלי: EGM!&lt;/span&gt;

&lt;span class="s1"&gt;Sottises, balivernes, inepties, plus sur d'&lt;/span&gt;&lt;span class="nt"&gt;EGM&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;''&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Hugh Greene</dc:creator><pubDate>Fri, 20 Jan 2023 12:15:16 -0000</pubDate><guid>https://sourceforge.netbae943d9ca056941b36290bbb9ad5dc860b8066a</guid></item></channel></rss>