https://enigma-dev.org/docs/wiki/api.php?action=feedcontributions&user=Josh+%40+Dreamland&feedformat=atomENIGMA - User contributions [en]2024-03-28T16:20:52ZUser contributionsMediaWiki 1.38.4https://enigma-dev.org/docs/wiki/index.php?title=Install:Windows&diff=32160Install:Windows2019-06-03T05:36:18Z<p>Josh @ Dreamland: /* The parser isn't happy */</p>
<hr />
<div>[[File:Windows.png|thumb|200px|The official logo of Windows based operating systems and environments.]]<br />
<br />
=== MSYS2 ===<br />
These steps will help you configure an ENIGMA setup using the modern MSYS2 project. This setup better facilitates both 32-bit and 64-bit compilation.<br />
<br />
* First, you will want to download and install MSYS2 by following these instructions ('''all the way to step 8'''): http://www.msys2.org/<br />
:- '''NOTE:''' The x86_64 download button will support compilation of both 32-bit and 64-bit games.<br />
<br />
=== Dependencies ===<br />
* Reopen <code>MSYS2 MinGW 64-bit</code> to use the included Pacboy to obtain the packages used by ENIGMA for building games, which includes things like OpenAL. You will also need to install Git using Pacboy so you can clone the ENIGMA source code from GitHub to complete this installation.<br />
:- '''NOTE:''' You do not need to type the entire command below. Both Command Prompt and MSYS2 have a right-click menu option that allows you to just paste the command from this wiki page.<br />
:- '''NOTE:''' These packages are for 64 bit, if you want 32 bit then you need to install the same packages but replace <code>:x</code> with <code>:i</code> in the name of each package. Packages that are virtual (e.g, <code>git</code>) need only the colon after their name to install them with Pacboy.<br />
:- The Pacboy command you will need to run is (just press Enter when prompted): <syntaxhighlight lang="bash">pacboy -S git: make: gcc:x boost:x protobuf:x libpng:x rapidjson:x pugixml:x yaml-cpp:x openal:x dumb:x libvorbis:x libogg:x flac:x mpg123:x libsndfile:x zlib:x libffi:x box2d:x glew:x glm:x alure:x grpc:x pkg-config:x</syntaxhighlight><br />
:- Or for 32 bit you'd need to run: <syntaxhighlight lang="bash">pacboy -S git: make: gcc:i boost:i protobuf:i libpng:i rapidjson:i pugixml:i yaml-cpp:i openal:i dumb:i libvorbis:i libogg:i flac:i mpg123:i libsndfile:i zlib:i libffi:i box2d:i glew:i glm:i alure:i grpc:i pkg-config:i</syntaxhighlight><br />
:- Misc packages you may optionally install for some extensions include: <syntaxhighlight lang="bash">libgme sfml bullet gtk2</syntaxhighlight><br />
* '''NOTE:''' If you want to use DirectX for graphics, instead of OpenGL, you'll want to make sure you have the DirectX 9.0 or higher End User Runtime installed.<br />
:- https://www.microsoft.com/en-us/download/details.aspx?id=35<br />
<br />
=== Get ENIGMA ===<br />
* Use the change directory command (<code>cd path/to/directory</code>) to change MSYS2 to the directory you want ENIGMA installed in. <br />
* Then simply run this command: <code>git clone https://github.com/enigma-dev/enigma-dev.git</code><br />
* Change directories into the cloned enigma-dev folder now using <code>cd enigma-dev</code><br />
* Now simply run <code>make</code> to build the compiler and its backend into compileEGMf.dll, which is used by the [[CLI]] and any IDE for ENIGMA.<br />
* '''Optional:''' You can then run <code>make emake</code> if you also intend to use the [[CLI]] for building games.<br />
<br />
=== Configure an IDE ===<br />
* Finally, you will want [[LateralGM]] for editing games which you can obtain by running <code>./install.sh</code> from your MSYS2 terminal.<br />
* You will need to install a Java version to use LateralGM that is the same architecture as the packages you installed for ENIGMA (x64/64 bit or x86/32 bit);<br />
:- Once Java is installed you would most likely want to set up your PATH variable in msys2 (this is one of several ways to fix java command not found)<br />
:- Edit the file <code>C:\msys64\etc\profile</code> and add the following <syntaxhighlight lang="bash">if [[ $MSYSTEM = "MINGW32" ]] && [[ $(arch) = "x86_64" ]]; then<br />
export PATH=/c/Program\ Files\ \(x86\)/Java/jre1.8.0_181/bin:$PATH<br />
else<br />
export PATH=/c/Program\ Files/Java/jre1.8.0_181/bin:$PATH<br />
fi</syntaxhighlight><br />
:- This will check your MSYS2 install's arch (which will be 32 bit if you're on 32 bit) in addition to checking the MINGW platform you are using to determine whether to try to load 32 bit or 64 bit jre.<br />
:- '''NOTE:''' Make sure you change the '''Java version''' to the one you have installed; the easiest way to check this is to navigate to C:\Program Files\Java and checking the version.<br />
* Once you have LateralGM setup you can simply run it using: <code>java -jar lateralgm.jar</code>.<br />
:- '''NOTE:''' This method of launching LGM using MSYS2 is recommended over double-clicking the jar because the environment will be configured correctly so that it includes MinGW for ENIGMA to find it.<br />
<br />
=== Troubleshooting ===<br />
<br />
==== Cannot find libcompileEGMf ====<br />
<br />
Nine times in ten, this is because you are running 32-bit Java and 64-bit ENIGMA/MinGW, or vice-versa. If the DLL actually exists in your ENIGMA directory, check your Java architecture.<br />
<br />
If the file actually doesn't exist, there was probably a build error.<br />
<br />
==== Compiler build errors ====<br />
<br />
Compiler build errors should essentially never happen. They likely mean ENIGMA is so old, C++ no longer allows for what it's doing... or you misconfigured MSys.<br />
* Did you modify files locally? You can check by issuing <code>git status</code> in the MSys prompt from within your ENIGMA directory. If git says "working directory clean," then no, you didn't modify anything; your issue is elsewhere.<br />
* Is MSys installed correctly? This is harder to verify, but if you know how to build a C++ application, you can try testing MSys yourself, or building ENIGMA using <code>make all</code> from within its directory.<br />
<br />
==== The parser isn't happy ====<br />
<br />
<code>ERROR in parsing engine file: The parser isn't happy. Don't worry, it's never happy.</code><br />
<br />
As long as the C++ parser ([[JDI]]) has been around, it's had various problems with reading various different C++ standard libraries. It surfaces those problems as non-fatal errors, and continues reading. Normally, this is perfectly fine. You just get a stream of garbage like this:<br />
<br />
<syntaxhighlight lang="text">Creating swap.<br />
Dumping whiteSpace definitions...<br />
Opening ENIGMA for parse...<br />
ERROR(D:/msys/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../include/c++/8.3.0//bits/stl_multimap.h,70,14): Expected opening triangle bracket for template definition before ';' token<br />
ERROR(__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1,3,26): Expected return type for template function at this point<br />
ERROR(__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2,3,19): Expected return type for template function at this point<br />
...<br />
ERROR(__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3,3,19): Expected return type for template function at this point<br />
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,44,11): Expected namespace name here.<br />
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,44,11): Premature abort caused by '{' token here; relaunching<br />
</syntaxhighlight><br />
<br />
There is nothing to worry about, above. But some errors are more erroneous than others:<br />
<br />
<syntaxhighlight lang="text"><br />
Creating swap.<br />
Dumping whiteSpace definitions...<br />
Opening ENIGMA for parse...<br />
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,22,34): Could not find map<br />
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,23,33): Could not find vector<br />
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,24,29): Could not find cstring<br />
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,25,19): Could not find cstddef<br />
</syntaxhighlight><br />
<br />
Those errors are bad. They mean ENIGMA has no idea how to talk to GCC, and they'll likely lead to engine build errors. If you don't see "Could not find ..." errors, though, rest assured; the normal onslaught of a few dozen errors is fine. If you ''are'' getting "could not find..." errors, something is probably wrong.<br />
<br />
[[File:LateralGM-Codegen-Directory-Options.png|thumb|right|How to change your export directories in LateralGM (if your username isn't Unix-friendly).]]<br />
<br />
A likely cause of these errors on Windows is, unfortunately, your username. On Windows, your fully-decorated username appears in most paths, and <code>C:/Users/↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵⍝Conway's "Game of Life"/AppData/ENIGMA/</code> cannot be used with GNU make, [https://savannah.gnu.org/bugs/?712 because it contains spaces.]<br />
<br />
To work around that bug, please change the ENIGMA output directories to point to somewhere on your main drive, with no spaces in the path. I recommend <path>C:/ENIGMA/Temp/</path>. You can update that output directory in the LateralGM Build Settings dialog. See the image to the right for details.<br />
<br />
==== Engine build errors ====<br />
<br />
If the build error is in a game, this could be bad code or could indicate an installation or ENIGMA problem. EDL does not share complete feature parity with any one version of Game Maker. It's possible the feature you are using is not implemented. If you are getting severe build errors, you can check the other troubleshooting steps, but feel free to file a bug or contact us on the [https://enigma-dev.org/forums Forums] or [https://github.com/enigma-dev/enigma-dev GitHub], or more directly over [[IRC]], or [[Discord]].<br />
<br />
==== Antiviruses ====<br />
<br />
It is possible for antivirus applications to interfere with ENIGMA's installation. For example, [https://forum.avast.com/index.php?topic=219993.0 Avast is known to destroy MSys installations.] If ENIGMA isn't functioning properly on your machine, please make sure your antivirus is not interfering with it or the toolchain (MSys). So far, we have no reported incidents of this nature. If the compiler build is failing, this is a possibility to consider.<br />
<br />
<br />
{{DISPLAYTITLE:Windows Installation}}</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Install:Windows&diff=32159Install:Windows2019-06-03T05:29:24Z<p>Josh @ Dreamland: /* The parser isn't happy */</p>
<hr />
<div>[[File:Windows.png|thumb|200px|The official logo of Windows based operating systems and environments.]]<br />
<br />
=== MSYS2 ===<br />
These steps will help you configure an ENIGMA setup using the modern MSYS2 project. This setup better facilitates both 32-bit and 64-bit compilation.<br />
<br />
* First, you will want to download and install MSYS2 by following these instructions ('''all the way to step 8'''): http://www.msys2.org/<br />
:- '''NOTE:''' The x86_64 download button will support compilation of both 32-bit and 64-bit games.<br />
<br />
=== Dependencies ===<br />
* Reopen <code>MSYS2 MinGW 64-bit</code> to use the included Pacboy to obtain the packages used by ENIGMA for building games, which includes things like OpenAL. You will also need to install Git using Pacboy so you can clone the ENIGMA source code from GitHub to complete this installation.<br />
:- '''NOTE:''' You do not need to type the entire command below. Both Command Prompt and MSYS2 have a right-click menu option that allows you to just paste the command from this wiki page.<br />
:- '''NOTE:''' These packages are for 64 bit, if you want 32 bit then you need to install the same packages but replace <code>:x</code> with <code>:i</code> in the name of each package. Packages that are virtual (e.g, <code>git</code>) need only the colon after their name to install them with Pacboy.<br />
:- The Pacboy command you will need to run is (just press Enter when prompted): <syntaxhighlight lang="bash">pacboy -S git: make: gcc:x boost:x protobuf:x libpng:x rapidjson:x pugixml:x yaml-cpp:x openal:x dumb:x libvorbis:x libogg:x flac:x mpg123:x libsndfile:x zlib:x libffi:x box2d:x glew:x glm:x alure:x grpc:x pkg-config:x</syntaxhighlight><br />
:- Or for 32 bit you'd need to run: <syntaxhighlight lang="bash">pacboy -S git: make: gcc:i boost:i protobuf:i libpng:i rapidjson:i pugixml:i yaml-cpp:i openal:i dumb:i libvorbis:i libogg:i flac:i mpg123:i libsndfile:i zlib:i libffi:i box2d:i glew:i glm:i alure:i grpc:i pkg-config:i</syntaxhighlight><br />
:- Misc packages you may optionally install for some extensions include: <syntaxhighlight lang="bash">libgme sfml bullet gtk2</syntaxhighlight><br />
* '''NOTE:''' If you want to use DirectX for graphics, instead of OpenGL, you'll want to make sure you have the DirectX 9.0 or higher End User Runtime installed.<br />
:- https://www.microsoft.com/en-us/download/details.aspx?id=35<br />
<br />
=== Get ENIGMA ===<br />
* Use the change directory command (<code>cd path/to/directory</code>) to change MSYS2 to the directory you want ENIGMA installed in. <br />
* Then simply run this command: <code>git clone https://github.com/enigma-dev/enigma-dev.git</code><br />
* Change directories into the cloned enigma-dev folder now using <code>cd enigma-dev</code><br />
* Now simply run <code>make</code> to build the compiler and its backend into compileEGMf.dll, which is used by the [[CLI]] and any IDE for ENIGMA.<br />
* '''Optional:''' You can then run <code>make emake</code> if you also intend to use the [[CLI]] for building games.<br />
<br />
=== Configure an IDE ===<br />
* Finally, you will want [[LateralGM]] for editing games which you can obtain by running <code>./install.sh</code> from your MSYS2 terminal.<br />
* You will need to install a Java version to use LateralGM that is the same architecture as the packages you installed for ENIGMA (x64/64 bit or x86/32 bit);<br />
:- Once Java is installed you would most likely want to set up your PATH variable in msys2 (this is one of several ways to fix java command not found)<br />
:- Edit the file <code>C:\msys64\etc\profile</code> and add the following <syntaxhighlight lang="bash">if [[ $MSYSTEM = "MINGW32" ]] && [[ $(arch) = "x86_64" ]]; then<br />
export PATH=/c/Program\ Files\ \(x86\)/Java/jre1.8.0_181/bin:$PATH<br />
else<br />
export PATH=/c/Program\ Files/Java/jre1.8.0_181/bin:$PATH<br />
fi</syntaxhighlight><br />
:- This will check your MSYS2 install's arch (which will be 32 bit if you're on 32 bit) in addition to checking the MINGW platform you are using to determine whether to try to load 32 bit or 64 bit jre.<br />
:- '''NOTE:''' Make sure you change the '''Java version''' to the one you have installed; the easiest way to check this is to navigate to C:\Program Files\Java and checking the version.<br />
* Once you have LateralGM setup you can simply run it using: <code>java -jar lateralgm.jar</code>.<br />
:- '''NOTE:''' This method of launching LGM using MSYS2 is recommended over double-clicking the jar because the environment will be configured correctly so that it includes MinGW for ENIGMA to find it.<br />
<br />
=== Troubleshooting ===<br />
<br />
==== Cannot find libcompileEGMf ====<br />
<br />
Nine times in ten, this is because you are running 32-bit Java and 64-bit ENIGMA/MinGW, or vice-versa. If the DLL actually exists in your ENIGMA directory, check your Java architecture.<br />
<br />
If the file actually doesn't exist, there was probably a build error.<br />
<br />
==== Compiler build errors ====<br />
<br />
Compiler build errors should essentially never happen. They likely mean ENIGMA is so old, C++ no longer allows for what it's doing... or you misconfigured MSys.<br />
* Did you modify files locally? You can check by issuing <code>git status</code> in the MSys prompt from within your ENIGMA directory. If git says "working directory clean," then no, you didn't modify anything; your issue is elsewhere.<br />
* Is MSys installed correctly? This is harder to verify, but if you know how to build a C++ application, you can try testing MSys yourself, or building ENIGMA using <code>make all</code> from within its directory.<br />
<br />
==== The parser isn't happy ====<br />
<br />
<code>ERROR in parsing engine file: The parser isn't happy. Don't worry, it's never happy.</code><br />
<br />
This is true, but some errors are more erroneous than others:<br />
<br />
<syntaxhighlight lang="text"><br />
Creating swap.<br />
Dumping whiteSpace definitions...<br />
Opening ENIGMA for parse...<br />
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,22,34): Could not find map<br />
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,23,33): Could not find vector<br />
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,24,29): Could not find cstring<br />
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,25,19): Could not find cstddef<br />
</syntaxhighlight><br />
<br />
Those errors are bad. They mean ENIGMA has no idea how to talk to GCC, and they'll likely lead to engine build errors. If you don't see "Could not find ..." errors, though, rest assured; the normal onslaught of a few dozen errors is fine.<br />
<br />
[[File:LateralGM-Codegen-Directory-Options.png|thumb|right|How to change your export directories in LateralGM (if your username isn't Unix-friendly).]]<br />
<br />
A likely cause of build errors on Windows is, unfortunately, your username. On Windows, your fully-decorated username appears in most paths, and <code>C:/Users/↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵⍝Conway's "Game of Life"/AppData/ENIGMA/</code> cannot be used with GNU make, [https://savannah.gnu.org/bugs/?712 because it contains spaces.]<br />
<br />
==== Engine build errors ====<br />
<br />
If the build error is in a game, this could be bad code or could indicate an installation or ENIGMA problem. EDL does not share complete feature parity with any one version of Game Maker. It's possible the feature you are using is not implemented. If you are getting severe build errors, you can check the other troubleshooting steps, but feel free to file a bug or contact us on the [https://enigma-dev.org/forums Forums] or [https://github.com/enigma-dev/enigma-dev GitHub], or more directly over [[IRC]], or [[Discord]].<br />
<br />
==== Antiviruses ====<br />
<br />
It is possible for antivirus applications to interfere with ENIGMA's installation. For example, [https://forum.avast.com/index.php?topic=219993.0 Avast is known to destroy MSys installations.] If ENIGMA isn't functioning properly on your machine, please make sure your antivirus is not interfering with it or the toolchain (MSys). So far, we have no reported incidents of this nature. If the compiler build is failing, this is a possibility to consider.<br />
<br />
<br />
{{DISPLAYTITLE:Windows Installation}}</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Install:Windows&diff=32158Install:Windows2019-06-03T05:27:56Z<p>Josh @ Dreamland: </p>
<hr />
<div>[[File:Windows.png|thumb|200px|The official logo of Windows based operating systems and environments.]]<br />
<br />
=== MSYS2 ===<br />
These steps will help you configure an ENIGMA setup using the modern MSYS2 project. This setup better facilitates both 32-bit and 64-bit compilation.<br />
<br />
* First, you will want to download and install MSYS2 by following these instructions ('''all the way to step 8'''): http://www.msys2.org/<br />
:- '''NOTE:''' The x86_64 download button will support compilation of both 32-bit and 64-bit games.<br />
<br />
=== Dependencies ===<br />
* Reopen <code>MSYS2 MinGW 64-bit</code> to use the included Pacboy to obtain the packages used by ENIGMA for building games, which includes things like OpenAL. You will also need to install Git using Pacboy so you can clone the ENIGMA source code from GitHub to complete this installation.<br />
:- '''NOTE:''' You do not need to type the entire command below. Both Command Prompt and MSYS2 have a right-click menu option that allows you to just paste the command from this wiki page.<br />
:- '''NOTE:''' These packages are for 64 bit, if you want 32 bit then you need to install the same packages but replace <code>:x</code> with <code>:i</code> in the name of each package. Packages that are virtual (e.g, <code>git</code>) need only the colon after their name to install them with Pacboy.<br />
:- The Pacboy command you will need to run is (just press Enter when prompted): <syntaxhighlight lang="bash">pacboy -S git: make: gcc:x boost:x protobuf:x libpng:x rapidjson:x pugixml:x yaml-cpp:x openal:x dumb:x libvorbis:x libogg:x flac:x mpg123:x libsndfile:x zlib:x libffi:x box2d:x glew:x glm:x alure:x grpc:x pkg-config:x</syntaxhighlight><br />
:- Or for 32 bit you'd need to run: <syntaxhighlight lang="bash">pacboy -S git: make: gcc:i boost:i protobuf:i libpng:i rapidjson:i pugixml:i yaml-cpp:i openal:i dumb:i libvorbis:i libogg:i flac:i mpg123:i libsndfile:i zlib:i libffi:i box2d:i glew:i glm:i alure:i grpc:i pkg-config:i</syntaxhighlight><br />
:- Misc packages you may optionally install for some extensions include: <syntaxhighlight lang="bash">libgme sfml bullet gtk2</syntaxhighlight><br />
* '''NOTE:''' If you want to use DirectX for graphics, instead of OpenGL, you'll want to make sure you have the DirectX 9.0 or higher End User Runtime installed.<br />
:- https://www.microsoft.com/en-us/download/details.aspx?id=35<br />
<br />
=== Get ENIGMA ===<br />
* Use the change directory command (<code>cd path/to/directory</code>) to change MSYS2 to the directory you want ENIGMA installed in. <br />
* Then simply run this command: <code>git clone https://github.com/enigma-dev/enigma-dev.git</code><br />
* Change directories into the cloned enigma-dev folder now using <code>cd enigma-dev</code><br />
* Now simply run <code>make</code> to build the compiler and its backend into compileEGMf.dll, which is used by the [[CLI]] and any IDE for ENIGMA.<br />
* '''Optional:''' You can then run <code>make emake</code> if you also intend to use the [[CLI]] for building games.<br />
<br />
=== Configure an IDE ===<br />
* Finally, you will want [[LateralGM]] for editing games which you can obtain by running <code>./install.sh</code> from your MSYS2 terminal.<br />
* You will need to install a Java version to use LateralGM that is the same architecture as the packages you installed for ENIGMA (x64/64 bit or x86/32 bit);<br />
:- Once Java is installed you would most likely want to set up your PATH variable in msys2 (this is one of several ways to fix java command not found)<br />
:- Edit the file <code>C:\msys64\etc\profile</code> and add the following <syntaxhighlight lang="bash">if [[ $MSYSTEM = "MINGW32" ]] && [[ $(arch) = "x86_64" ]]; then<br />
export PATH=/c/Program\ Files\ \(x86\)/Java/jre1.8.0_181/bin:$PATH<br />
else<br />
export PATH=/c/Program\ Files/Java/jre1.8.0_181/bin:$PATH<br />
fi</syntaxhighlight><br />
:- This will check your MSYS2 install's arch (which will be 32 bit if you're on 32 bit) in addition to checking the MINGW platform you are using to determine whether to try to load 32 bit or 64 bit jre.<br />
:- '''NOTE:''' Make sure you change the '''Java version''' to the one you have installed; the easiest way to check this is to navigate to C:\Program Files\Java and checking the version.<br />
* Once you have LateralGM setup you can simply run it using: <code>java -jar lateralgm.jar</code>.<br />
:- '''NOTE:''' This method of launching LGM using MSYS2 is recommended over double-clicking the jar because the environment will be configured correctly so that it includes MinGW for ENIGMA to find it.<br />
<br />
=== Troubleshooting ===<br />
<br />
==== Cannot find libcompileEGMf ====<br />
<br />
Nine times in ten, this is because you are running 32-bit Java and 64-bit ENIGMA/MinGW, or vice-versa. If the DLL actually exists in your ENIGMA directory, check your Java architecture.<br />
<br />
If the file actually doesn't exist, there was probably a build error.<br />
<br />
==== Compiler build errors ====<br />
<br />
Compiler build errors should essentially never happen. They likely mean ENIGMA is so old, C++ no longer allows for what it's doing... or you misconfigured MSys.<br />
* Did you modify files locally? You can check by issuing <code>git status</code> in the MSys prompt from within your ENIGMA directory. If git says "working directory clean," then no, you didn't modify anything; your issue is elsewhere.<br />
* Is MSys installed correctly? This is harder to verify, but if you know how to build a C++ application, you can try testing MSys yourself, or building ENIGMA using <code>make all</code> from within its directory.<br />
<br />
==== The parser isn't happy ====<br />
<br />
<code>ERROR in parsing engine file: The parser isn't happy. Don't worry, it's never happy.</code><br />
<br />
This is true, but some errors are more erroneous than others:<br />
<br />
<syntaxhighlight lang="text"><br />
Creating swap.<br />
Dumping whiteSpace definitions...<br />
Opening ENIGMA for parse...<br />
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,22,34): Could not find map<br />
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,23,33): Could not find vector<br />
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,24,29): Could not find cstring<br />
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,25,19): Could not find cstddef<br />
</syntaxhighlight><br />
<br />
Those errors are bad. They mean ENIGMA has no idea how to talk to GCC, and they'll likely lead to engine build errors.<br />
<br />
[[File:LateralGM-Codegen-Directory-Options.png|thumb|right|How to change your export directories in LateralGM (if your username isn't Unix-friendly).]]<br />
<br />
A likely cause of build errors on Windows is, unfortunately, your username. On Windows, your fully-decorated username appears in most paths, and <code>C:/Users/↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵⍝Conway's "Game of Life"/AppData/ENIGMA/</code> cannot be used with GNU make, [https://savannah.gnu.org/bugs/?712 because it contains spaces.]<br />
<br />
==== Engine build errors ====<br />
<br />
If the build error is in a game, this could be bad code or could indicate an installation or ENIGMA problem. EDL does not share complete feature parity with any one version of Game Maker. It's possible the feature you are using is not implemented. If you are getting severe build errors, you can check the other troubleshooting steps, but feel free to file a bug or contact us on the [https://enigma-dev.org/forums Forums] or [https://github.com/enigma-dev/enigma-dev GitHub], or more directly over [[IRC]], or [[Discord]].<br />
<br />
==== Antiviruses ====<br />
<br />
It is possible for antivirus applications to interfere with ENIGMA's installation. For example, [https://forum.avast.com/index.php?topic=219993.0 Avast is known to destroy MSys installations.] If ENIGMA isn't functioning properly on your machine, please make sure your antivirus is not interfering with it or the toolchain (MSys). So far, we have no reported incidents of this nature. If the compiler build is failing, this is a possibility to consider.<br />
<br />
<br />
{{DISPLAYTITLE:Windows Installation}}</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=File:LateralGM-Codegen-Directory-Options.png&diff=32157File:LateralGM-Codegen-Directory-Options.png2019-06-03T05:23:08Z<p>Josh @ Dreamland: Graphical aid for changing the ENIGMA codegen directories in LGM.</p>
<hr />
<div>Graphical aid for changing the ENIGMA codegen directories in LGM.</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Discord&diff=32156Discord2019-06-03T03:37:21Z<p>Josh @ Dreamland: Created page with "Graphical instructions for the short of patience ENIGMA has a Discord server, now! It would be linked here, but we don't want a flo..."</p>
<hr />
<div>[[File:Forums-discord.png|thumb|640px|right|Graphical instructions for the short of patience]]<br />
<br />
ENIGMA has a Discord server, now! It would be linked here, but we don't want a flood of spam bots. A link will appear on the forums '''''after you have logged in.'''''<br />
<br />
If you prefer not to create an account on the forums, you can contact one of the developers or other users via [https://github.com/enigma-dev/enigma-dev GitHub], and they will more than likely be happy to invite you.</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=File:Forums-discord.png&diff=32155File:Forums-discord.png2019-06-03T03:29:15Z<p>Josh @ Dreamland: uploaded a new version of &quot;File:Forums-discord.png&quot;: Upload file was stale.</p>
<hr />
<div>Explicit instructions for accessing the Discord.</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=File:Forums-discord.png&diff=32154File:Forums-discord.png2019-06-03T03:28:19Z<p>Josh @ Dreamland: uploaded a new version of &quot;File:Forums-discord.png&quot;: Firefox cached the original...</p>
<hr />
<div>Explicit instructions for accessing the Discord.</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=File:Forums-discord.png&diff=32153File:Forums-discord.png2019-06-03T03:27:36Z<p>Josh @ Dreamland: Explicit instructions for accessing the Discord.</p>
<hr />
<div>Explicit instructions for accessing the Discord.</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Template:DevTeam&diff=31996Template:DevTeam2018-11-23T14:52:27Z<p>Josh @ Dreamland: </p>
<hr />
<div>{| cellpadding=5 cellspacing=0 align=right style="margin-bottom: 12px; border: 1px solid gray;"<br />
!colspan="2" style="{{linear-gradient|top|#295A8C, #0A2138}}; color:white;"|Mission Control<br />
|-<br />
| [[User:JoshDreamland|Josh Ventura]] || Started the ENIGMA project. Primary developer; wrote most major systems including the parsers.<br />
|-<br />
| [[User:IsmAvatar|IsmAvatar]] || Started the [[LateralGM]] project. Also wrote the XLib code that enables ENIGMA to work on Linux, a BBox-based collision system, and a Berkeley sockets-based networking system for ENIGMA. Sponsored a large portion of the funds to getting a dedicated server for the project.<br />
|-<br />
| [[Goombert]] || Works on the core game engine, author of the Box2D and Bullet physics extensions, also a designer of this Wiki and has documented it a lot, also the lead developer of the C++ rewrite of LateralGM. Goombert is a network, graphics, physics and collision, and just a general developer for ENIGMA, and can also do web and interface development.<br />
|-<br />
!colspan="2" style="{{linear-gradient|top|#295A8C, #0A2138}}; color:white;"|WYSIWYG<br />
|-<br />
| [[User:JoshDreamland|Josh]] || Creator of JoshEdit the syntax highlighting code editing component used in [[LateralGM]]<br />
|-<br />
| [[User:IsmAvatar|IsmAvatar]] || [[LateralGM]] project founder and lead developer, also maintains its current repository.<br />
|-<br />
| [[Goombert]] || Lead developer for [[wxENIGMA]] and the founder of its C++ rewrite.<br />
|-<br />
| [[User:egofree|egofree]] || A number of contributions to [[LateralGM]] including various room editor features.<br />
|-<br />
| [[User:DaSpirit|TheSpiritXII]] || [[NaturalGM]] project founder and lead developer, a cross-platform alternative IDE with advanced capabilities and an abstract approach.<br />
|-<br />
!colspan="2" style="{{linear-gradient|top|#295A8C, #0A2138}}; color:white;"|The Architects<br />
|-<br />
| [[User:Tgmg|TGMG]] || Wrote a large number of ports for ENIGMA to different operating systems, including Android and iPhone. Helped kick off some resources, including backgrounds.<br />
|-<br />
| [[User:HaRRiKiRi|TheExDeus]] || Completed the set of sprite functions, the majority of the background functions, path functions, surfaces using fbo and most of the draw_text_* functions.<br />
|-<br />
| [[User:Polygone|Polygone]] || Forum administrator and a main wiki administrator. Actively involved in ENIGMA development. Likes to bug test/debug and contribute towards full GM compatibility. Aims to set ENIGMA in stride for world domination.<br />
|-<br />
| [[User:Forthevin|Forthevin]] || Has fixed various problematic issues in ENIGMA and implemented several major systems including pixel perfect collisions, and the particle system.<br />
|-<br />
!colspan="2" style="{{linear-gradient|top|#295A8C, #0A2138}}; color:white;"|The Matrix<br />
|-<br />
| a2h || Site creator, manager and designer. He claims to be able to dream in code (although it's highly doubted).<br />
|-<br />
| [[User:MahFreenAmeh|Gary "MahFreenAmeh" Warman]] || sysadmin, web dev, music connoisseur, hacker d-luxe; ready for work at any time. Designed several components of the site that "just needed to work".<br />
|-<br />
| Zane "Obelisk" || The god of the original ENIGMA logo (A PNG version of the current vector).<br />
|-<br />
| Mitch || Works on the ENIGMA Community (the one with the blogs and games). He also made the original version of the bugtracker.<br />
|-<br />
| Owen "Zekian" Delahoy ||The blogs and games side of the ENIGMA Community is also improved on by Owen, who lovingly(?) squeezes more goodness out of it.<br />
|-<br />
| Noodle || Redesigned the third iteration of the ENIGMA site design. This design, the fourth one, retains only one thing from his redesign. The text color.<br />
|- <br />
| Sir Xemic/C-Ator9 || Designed the original ENIGMA ambigram<br />
|-<br />
| Juju || Potential author of the help file.<br />
|-<br />
!colspan="2" style="{{linear-gradient|top|#295A8C, #0A2138}}; color:white;"|Desperados<br />
|-<br />
| [[User:Daz|Dazappa]] || Contributed a Java-written e-YAML parser so IsmAvatar could read ENIGMA's ey files. Also fixed a few LateralGM tasks/bugs.<br />
|-<br />
| [[User:RetroX|RetroX]] || Contributed a few movement functions and designed Linux install packages.<br />
|-<br />
| [[User:Datzach|Datzach]] || Went through a phrase of adding a load of remaining GM functions, mainly Winapi related functions for Windows.<br />
|-<br />
| [[User:R9k|r9k]] || Author of ENIGMA's soon-to-exist polygon-based collision system.<br />
|-<br />
| Dave || Contributed the skeleton of the surface system, as well as a dysfunctional font system he wrote without compiling it even once. Quite impressive.<br />
|-<br />
| Serprex || A brilliant coder, knowing all there is to know about optimization. His sense of motivation is screwy, and he has screwed some functions up (which Josh will remember always), but he's redone several key functions.<br />
|-<br />
| [[User:Rusky|Rusky]] || The poor guy who got datastacks pushed onto him. (Pun) Though he did finish stacks, the rest are yet to be done (So they'll probably be redone by someone else). Rusky strives to keep everyone else in line.<br />
|- <br />
| Sir Xemic/C-Ator9 || Drafted several mathy functions in GML, including draw_ellipse, draw_roundrect, and make_color_hsv.<br />
|- <br />
| [[User:Fede-lasse|"fede-lasse"]] || Contributed small strings of functions here and there.<br />
|-<br />
| [[User:Cheeseboy|Cheeseboy]] || Maintains packages and constructed the Windows Portable ZIP which is maintained by [[Goombert]], also good to ask if you have trouble setting the program up on uncommon platforms, and also for help with compiling things.<br />
|-<br />
| Everyone else || Thank you for all the help!<br />
|}</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Template:DevTeam&diff=30803Template:DevTeam2016-02-18T05:48:03Z<p>Josh @ Dreamland: Remove fede from this list because he's on some sort of luddite kick</p>
<hr />
<div>{| cellpadding=20 cellspacing=0 style="width:100%"<br />
|-<br />
|<br />
{| cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|16px 16px 8px 8px}}"<br />
| align=center style="{{linear-gradient|top|#295A8C, #0A2138}}; color:#FFFFFF; {{border-radius|16px 16px 0px 0px}}"|<br />
'''Mission Control'''<br />
|- valign=top <br />
| border=0 style="{{border-radius|0px 0px 8px 8px}}"|<br />
{|cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%;"<br />
|-<br />
| [[User:JoshDreamland|Josh Ventura]] || Started the ENIGMA project. Primary developer; wrote most major systems including the parsers.<br />
|-<br />
| [[User:IsmAvatar|IsmAvatar]] || Started the [[LateralGM]] project. Also wrote the XLib code that enables ENIGMA to work on Linux, a BBox-based collision system, and a Berkeley sockets-based networking system for ENIGMA. Sponsored a large portion of the funds to getting a dedicated server for the project.<br />
|-<br />
| [[User:RobertBColton|Robert B Colton]] || Works on the core game engine, author of the Box2D and Bullet physics extensions, also a designer of this Wiki and has documented it a lot, also the lead developer of the C++ rewrite of LateralGM. Robert is a network, graphics, physics and collision, and just a general developer for ENIGMA, and can also do web and interface development.<br />
|}<br />
|}<br />
|-<br />
|<br />
{| cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|16px 16px 8px 8px}}"<br />
| align=center style="{{linear-gradient|top|#295A8C, #0A2138}}; color:#FFFFFF; {{border-radius|16px 16px 0px 0px}}"|<br />
'''WYSIWYG'''<br />
|- valign=top <br />
| border=0 style="{{border-radius|0px 0px 8px 8px}}"|<br />
{|cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%;"<br />
|-<br />
| [[User:JoshDreamland|Josh Ventura]] || Creator of JoshEdit the syntax highlighting code editing component used in [[LateralGM]]<br />
|-<br />
| [[User:IsmAvatar|IsmAvatar]] || [[LateralGM]] project founder and lead developer, also maintains its current repository.<br />
|-<br />
| [[User:RobertBColton|Robert B Colton]] || Lead developer for [[LateralGM]] and the founder of its C++ rewrite.<br />
|-<br />
| [[User:egofree|egofree]] || A number of contributions to [[LateralGM]] including various room editor features.<br />
|-<br />
| [[User:DaSpirit|Daniel Hrabovcak]] || [[NaturalGM]] project founder and lead developer, a cross-platform alternative IDE with advanced capabilities and an abstract approach.<br />
|}<br />
|}<br />
|-<br />
|<br />
{| cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|16px 16px 8px 8px}}"<br />
| align=center style="{{linear-gradient|top|#295A8C, #0A2138}}; color:#FFFFFF; {{border-radius|16px 16px 0px 0px}}"|<br />
'''The Architects'''<br />
|- valign=top <br />
| border=2 style="{{border-radius|0px 0px 8px 8px}}"|<br />
{|cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%;"<br />
|-<br />
| [[User:Tgmg|TGMG]] || Wrote a large number of ports for ENIGMA to different operating systems, including Android and iPhone. Helped kick off some resources, including backgrounds.<br />
|-<br />
| [[User:HaRRiKiRi|Harijs Grīnbergs]] || Completed the set of sprite functions, the majority of the background functions, path functions, surfaces using fbo and most of the draw_text_* functions.<br />
|-<br />
| [[User:Polygone|Polygone]] || Forum administrator and a main wiki administrator. Actively involved in ENIGMA development. Likes to bug test/debug and contribute towards full GM compatibility. Aims to set ENIGMA in stride for world domination.<br />
|-<br />
| [[User:Forthevin|Forthevin]] || Has fixed various problematic issues in ENIGMA and implemented several major systems including pixel perfect collisions, and the particle system.<br />
|}<br />
|}<br />
|-<br />
|<br />
{| cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|16px 16px 8px 8px}}"<br />
| align=center style="{{linear-gradient|top|#295A8C, #0A2138}}; color:#FFFFFF; {{border-radius|16px 16px 0px 0px}}"|<br />
'''The Matrix'''<br />
|- valign=top <br />
| border=2 style="{{border-radius|0px 0px 8px 8px}}"|<br />
{|cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%;"<br />
|-<br />
| a2h || Site creator, manager and designer. He claims to be able to dream in code (although it's highly doubted).<br />
|-<br />
| [[User:MahFreenAmeh|Gary "MahFreenAmeh" Warman]] || sysadmin, web dev, music connoisseur, hacker d-luxe; ready for work at any time. Designed several components of the site that "just needed to work".<br />
|-<br />
| Zane "Obelisk" || The god of the original ENIGMA logo (A PNG version of the current vector).<br />
|-<br />
| Mitch || Works on the ENIGMA Community (the one with the blogs and games). He also made the original version of the bugtracker.<br />
|-<br />
| Owen "Zekian" Delahoy ||The blogs and games side of the ENIGMA Community is also improved on by Owen, who lovingly(?) squeezes more goodness out of it.<br />
|-<br />
| Noodle || Redesigned the third iteration of the ENIGMA site design. This design, the fourth one, retains only one thing from his redesign. The text color.<br />
|- <br />
| Sir Xemic/C-Ator9 || Designed the original ENIGMA ambigram<br />
|-<br />
| Juju || Potential author of the help file.<br />
|}<br />
|}<br />
|-<br />
|<br />
{| cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|16px 16px 8px 8px}}"<br />
| align=center style="{{linear-gradient|top|#295A8C, #0A2138}}; color:#FFFFFF; {{border-radius|16px 16px 0px 0px}}"|<br />
'''Desperados'''<br />
|- valign=top <br />
| border=2 style="{{border-radius|0px 0px 8px 8px}}"|<br />
{|cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%;"<br />
|-<br />
| [[User:Daz|Dazappa]] || Contributed a Java-written e-YAML parser so IsmAvatar could read ENIGMA's ey files. Also fixed a few LateralGM tasks/bugs.<br />
|-<br />
| [[User:RetroX|RetroX]] || Contributed a few movement functions and designed Linux install packages.<br />
|-<br />
| [[User:Datzach|Datzach]] || Went through a phrase of adding a load of remaining GM functions, mainly Winapi related functions for Windows.<br />
|-<br />
| [[User:R9k|r9k]] || Author of ENIGMA's soon-to-exist polygon-based collision system.<br />
|-<br />
| Dave || Contributed the skeleton of the surface system, as well as a dysfunctional font system he wrote without compiling it even once. Quite impressive.<br />
|-<br />
| Serprex || A brilliant coder, knowing all there is to know about optimization. His sense of motivation is screwy, and he has screwed some functions up (which Josh will remember always), but he's redone several key functions.<br />
|-<br />
| [[User:Rusky|Rusky]] || The poor guy who got datastacks pushed onto him. (Pun) Though he did finish stacks, the rest are yet to be done (So they'll probably be redone by someone else). Rusky strives to keep everyone else in line.<br />
|- <br />
| Sir Xemic/C-Ator9 || Drafted several mathy functions in GML, including draw_ellipse, draw_roundrect, and make_color_hsv.<br />
|- <br />
| [[User:Fede-lasse|"fede-lasse"]] || Contributed small strings of functions here and there.<br />
|-<br />
| [[User:Cheeseboy|Cheeseboy]] || Maintains packages and constructed the Windows Portable ZIP which is maintained by [[User:RobertBColton]], also good to ask if you have trouble setting the program up on uncommon platforms, and also for help with compiling things.<br />
|-<br />
| Everyone else || Thank you for all the help!<br />
|}<br />
|}<br />
|}</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Template:DevTeam/it&diff=30719Template:DevTeam/it2015-08-20T00:58:46Z<p>Josh @ Dreamland: </p>
<hr />
<div>{| cellpadding=20 cellspacing=0 style="width:100%"<br />
|-<br />
|<br />
{| cellpadding=3.5 cellspacing=0 border=1 align=right style="width:100%; {{box-shadow|0.1em|0.1em|0.5em|rgba(0,0,0,0.75)}}; {{border-radius|16px 16px 16px 16px}}"<br />
| align=center style="{{linear-gradient|left|#295A8C, #0A2138}}; color:#FFFFFF; border: 2px; border-style: solid; border-color:black; {{border-radius|16px 16px 0px 0px}}"|<br />
'''Controllo missione'''<br />
|- valign=top <br />
| border=2 style="{{border-radius|0px 0px 16px 16px}}"|<br />
{|cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%;"<br />
|-<br />
| [[User:JoshDreamland|Josh Ventura]] || Iniziatore del progetto ENIGMA. Sviluppatore primario; Ha scritto codice inclusi i parser.<br />
|-<br />
| [[User:IsmAvatar|IsmAvatar]] || Iniziatore del progetto [[LateralGM]]. Ha scritto il codice Xlib che consente ad ENIGMA di lavorare anche sotto Linux, un sistema basato su BBox per la gestione delle collisioni, un sistema di gestione reti basato su socket. Ha sponsorizzato gran parte dei server del progetto ENIGMA.<br />
|-<br />
| [[User:RobertBColton|Robert B Colton]] || Lavora al cuore del compilatore per il motore di gioco , è il designer di questo wiki favoremdo molta documentazione, inoltre è lo sviluppatore di testa di wxENIGMA ,un'interfaccia alternativa a LateralGM, multipiattaforma.<br />
|}<br />
|}<br />
|-<br />
|<br />
{| cellpadding=3.5 cellspacing=0 border=1 align=right style="width:100%; {{box-shadow|0.1em|0.1em|0.5em|rgba(0,0,0,0.75)}}; {{border-radius|16px 16px 16px 16px}}"<br />
| align=center style="{{linear-gradient|left|#295A8C, #0A2138}}; color:#FFFFFF; border: 2px; border-style: solid; border-color:black; {{border-radius|16px 16px 0px 0px}}"|<br />
'''Gli architetti'''<br />
|- valign=top <br />
| border=2 style="{{border-radius|0px 0px 16px 16px}}"|<br />
{|cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%;"<br />
|-<br />
| [[User:Tgmg|TGMG]] || Ha scritto un largo numero di portali per ENIGMA a altri systemi operativi, inclusi Android e Iphone. Ha aiutato con alcune risorse come gli sfondi.<br />
|-<br />
| [[User:HaRRiKiRi|Harijs Grīnbergs]] || Ha completato il set delle funzioni relative alle sprites, agli sfondi , alle path, alle surfaces e al testo (draw_text_*).<br />
|-<br />
| [[User:Polygone|Polygone]] || Amministratore del forum e del wiki principale. Ha contribuito alle strutture di dati relative a GM , molte funzioni di Windows, molte funzioni d3d relative a GM e altri bits di codice qua e là ,come ad esempio in relazione a bug testing e debug. <br />
|-<br />
| [[User:Forthevin|Forthevin]] || Implemented pixel perfect collisions and has sorted out various issues that were in enigma.<br />
|}<br />
|}<br />
|-<br />
|<br />
{| cellpadding=3.5 cellspacing=0 border=1 align=right style="width:100%; {{box-shadow|0.1em|0.1em|0.5em|rgba(0,0,0,0.75)}}; {{border-radius|16px 16px 16px 16px}}"<br />
| align=center style="{{linear-gradient|left|#295A8C, #0A2138}}; color:#FFFFFF; border: 2px; border-style: solid; border-color:black; {{border-radius|16px 16px 0px 0px}}"|<br />
'''Web Developers/Graphics Artists'''<br />
|- valign=top <br />
| border=2 style="{{border-radius|0px 0px 16px 16px}}"|<br />
{|cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%;"<br />
|-<br />
| a2h || Site creator, manager and designer. He claims to be able to dream in code (although it's highly doubted).<br />
|-<br />
| [[User:MahFreenAmeh|Gary "MahFreenAmeh" Warman]] || sysadmin, web dev, music connoisseur, hacker d-luxe; ready for work at any time. Designed several components of the site that "just needed to work".<br />
|-<br />
| Zane "Obelisk" || The god of the original ENIGMA logo (A PNG version of the current vector).<br />
|-<br />
| Mitch || Works on the ENIGMA Community (the one with the blogs and games). He also made the original version of the bugtracker.<br />
|-<br />
| [[User:Fede-lasse|"fede-lasse"]] || Designed an ENIGMA resource pack for free use.<br />
|-<br />
| Owen "Zekian" Delahoy ||The blogs and games side of the ENIGMA Community is also improved on by Owen, who lovingly(?) squeezes more goodness out of it.<br />
|-<br />
| Noodle || Redesigned the third iteration of the ENIGMA site design. This design, the fourth one, retains only one thing from his redesign. The text color.<br />
|- <br />
| Sir Xemic/C-Ator9 || Designed the original ENIGMA ambigram<br />
|-<br />
| Juju || Potential author of the help file.<br />
|}<br />
|}<br />
|-<br />
|<br />
{| cellpadding=3.5 cellspacing=0 border=1 align=right style="width:100%; {{box-shadow|0.1em|0.1em|0.5em|rgba(0,0,0,0.75)}}; {{border-radius|16px 16px 16px 16px}}"<br />
| align=center style="{{linear-gradient|left|#295A8C, #0A2138}}; color:#FFFFFF; border: 2px; border-style: solid; border-color:black; {{border-radius|16px 16px 0px 0px}}"|<br />
'''Desperados'''<br />
|- valign=top <br />
| border=2 style="{{border-radius|0px 0px 16px 16px}}"|<br />
{|cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%;"<br />
|-<br />
| [[User:Daz|Dazappa]] || Contributed a Java-written e-YAML parser so IsmAvatar could read ENIGMA's ey files. Also fixed a few LateralGM tasks/bugs.<br />
|-<br />
| [[User:RetroX|RetroX]] || Contributed a few movement functions and designed Linux install packages.<br />
|-<br />
| [[User:Datzach|Datzach]] || Went through a phrase of adding a load of remaining GM functions, mainly Winapi related functions for Windows.<br />
|-<br />
| [[User:R9k|r9k]] || Author of ENIGMA's soon-to-exist polygon-based collision system.<br />
|-<br />
| Dave || Contributed the skeleton of the surface system, as well as a dysfunctional font system he wrote without compiling it even once. Quite impressive.<br />
|-<br />
| Serprex || A brilliant coder, knowing all there is to know about optimization. His sense of motivation is screwy, and he has screwed some functions up (which Josh will remember always), but he's redone several key functions.<br />
|-<br />
| [[User:Rusky|Rusky]] || The poor guy who got datastacks pushed onto him. (Pun) Though he did finish stacks, the rest are yet to be done (So they'll probably be redone by someone else). Rusky strives to keep everyone else in line.<br />
|- <br />
| Sir Xemic/C-Ator9 || Drafted several mathy functions in GML, including draw_ellipse, draw_roundrect, and make_color_hsv.<br />
|- <br />
| [[User:Fede-lasse|"fede-lasse"]] || Contributed small strings of functions here and there.<br />
|-<br />
| [[User:Cheeseboy|Cheeseboy]] || cheeseboy (noun): One fat cheeseball that relentlessly tortures unwilling victims (josh) into submission until they get what they want. Often ideal for parser testing due to their horrendous coding habits.<br />
|-<br />
| Everyone else || Thank you for all the help!<br />
|}<br />
|}<br />
|}</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Template:DevTeam&diff=30718Template:DevTeam2015-08-20T00:55:43Z<p>Josh @ Dreamland: </p>
<hr />
<div>{| cellpadding=20 cellspacing=0 style="width:100%"<br />
|-<br />
|<br />
{| cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|16px 16px 8px 8px}}"<br />
| align=center style="{{linear-gradient|top|#295A8C, #0A2138}}; color:#FFFFFF; {{border-radius|16px 16px 0px 0px}}"|<br />
'''Mission Control'''<br />
|- valign=top <br />
| border=0 style="{{border-radius|0px 0px 8px 8px}}"|<br />
{|cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%;"<br />
|-<br />
| [[User:JoshDreamland|Josh Ventura]] || Started the ENIGMA project. Primary developer; wrote most major systems including the parsers.<br />
|-<br />
| [[User:IsmAvatar|IsmAvatar]] || Started the [[LateralGM]] project. Also wrote the XLib code that enables ENIGMA to work on Linux, a BBox-based collision system, and a Berkeley sockets-based networking system for ENIGMA. Sponsored a large portion of the funds to getting a dedicated server for the project.<br />
|-<br />
| [[User:RobertBColton|Robert B Colton]] || Works on the core game engine, author of the Box2D and Bullet physics extensions, also a designer of this Wiki and has documented it a lot, also the lead developer of the C++ rewrite of LateralGM. Robert is a network, graphics, physics and collision, and just a general developer for ENIGMA, and can also do web and interface development.<br />
|}<br />
|}<br />
|-<br />
|<br />
{| cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|16px 16px 8px 8px}}"<br />
| align=center style="{{linear-gradient|top|#295A8C, #0A2138}}; color:#FFFFFF; {{border-radius|16px 16px 0px 0px}}"|<br />
'''WYSIWYG'''<br />
|- valign=top <br />
| border=0 style="{{border-radius|0px 0px 8px 8px}}"|<br />
{|cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%;"<br />
|-<br />
| [[User:JoshDreamland|Josh Ventura]] || Creator of JoshEdit the syntax highlighting code editing component used in [[LateralGM]]<br />
|-<br />
| [[User:IsmAvatar|IsmAvatar]] || [[LateralGM]] project founder and lead developer, also maintains its current repository.<br />
|-<br />
| [[User:RobertBColton|Robert B Colton]] || Lead developer for [[LateralGM]] and the founder of its C++ rewrite.<br />
|-<br />
| [[User:DaSpirit|Daniel Hrabovcak]] || [[NaturalGM]] project founder and lead developer, a cross-platform alternative IDE with advanced capabilities and an abstract approach.<br />
|}<br />
|}<br />
|-<br />
|<br />
{| cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|16px 16px 8px 8px}}"<br />
| align=center style="{{linear-gradient|top|#295A8C, #0A2138}}; color:#FFFFFF; {{border-radius|16px 16px 0px 0px}}"|<br />
'''The Architects'''<br />
|- valign=top <br />
| border=2 style="{{border-radius|0px 0px 8px 8px}}"|<br />
{|cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%;"<br />
|-<br />
| [[User:Tgmg|TGMG]] || Wrote a large number of ports for ENIGMA to different operating systems, including Android and iPhone. Helped kick off some resources, including backgrounds.<br />
|-<br />
| [[User:HaRRiKiRi|Harijs Grīnbergs]] || Completed the set of sprite functions, the majority of the background functions, path functions, surfaces using fbo and most of the draw_text_* functions.<br />
|-<br />
| [[User:Polygone|Polygone]] || Forum administrator and a main wiki administrator. Actively involved in ENIGMA development. Likes to bug test/debug and contribute towards full GM compatibility. Aims to set ENIGMA in stride for world domination.<br />
|-<br />
| [[User:Forthevin|Forthevin]] || Has fixed various problematic issues in ENIGMA and implemented several major systems including pixel perfect collisions, and the particle system.<br />
|}<br />
|}<br />
|-<br />
|<br />
{| cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|16px 16px 8px 8px}}"<br />
| align=center style="{{linear-gradient|top|#295A8C, #0A2138}}; color:#FFFFFF; {{border-radius|16px 16px 0px 0px}}"|<br />
'''The Matrix'''<br />
|- valign=top <br />
| border=2 style="{{border-radius|0px 0px 8px 8px}}"|<br />
{|cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%;"<br />
|-<br />
| a2h || Site creator, manager and designer. He claims to be able to dream in code (although it's highly doubted).<br />
|-<br />
| [[User:MahFreenAmeh|Gary "MahFreenAmeh" Warman]] || sysadmin, web dev, music connoisseur, hacker d-luxe; ready for work at any time. Designed several components of the site that "just needed to work".<br />
|-<br />
| Zane "Obelisk" || The god of the original ENIGMA logo (A PNG version of the current vector).<br />
|-<br />
| Mitch || Works on the ENIGMA Community (the one with the blogs and games). He also made the original version of the bugtracker.<br />
|-<br />
| [[User:Fede-lasse|"fede-lasse"]] || Designed an ENIGMA resource pack for free use.<br />
|-<br />
| Owen "Zekian" Delahoy ||The blogs and games side of the ENIGMA Community is also improved on by Owen, who lovingly(?) squeezes more goodness out of it.<br />
|-<br />
| Noodle || Redesigned the third iteration of the ENIGMA site design. This design, the fourth one, retains only one thing from his redesign. The text color.<br />
|- <br />
| Sir Xemic/C-Ator9 || Designed the original ENIGMA ambigram<br />
|-<br />
| Juju || Potential author of the help file.<br />
|}<br />
|}<br />
|-<br />
|<br />
{| cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|16px 16px 8px 8px}}"<br />
| align=center style="{{linear-gradient|top|#295A8C, #0A2138}}; color:#FFFFFF; {{border-radius|16px 16px 0px 0px}}"|<br />
'''Desperados'''<br />
|- valign=top <br />
| border=2 style="{{border-radius|0px 0px 8px 8px}}"|<br />
{|cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%;"<br />
|-<br />
| [[User:Daz|Dazappa]] || Contributed a Java-written e-YAML parser so IsmAvatar could read ENIGMA's ey files. Also fixed a few LateralGM tasks/bugs.<br />
|-<br />
| [[User:RetroX|RetroX]] || Contributed a few movement functions and designed Linux install packages.<br />
|-<br />
| [[User:Datzach|Datzach]] || Went through a phrase of adding a load of remaining GM functions, mainly Winapi related functions for Windows.<br />
|-<br />
| [[User:R9k|r9k]] || Author of ENIGMA's soon-to-exist polygon-based collision system.<br />
|-<br />
| Dave || Contributed the skeleton of the surface system, as well as a dysfunctional font system he wrote without compiling it even once. Quite impressive.<br />
|-<br />
| Serprex || A brilliant coder, knowing all there is to know about optimization. His sense of motivation is screwy, and he has screwed some functions up (which Josh will remember always), but he's redone several key functions.<br />
|-<br />
| [[User:Rusky|Rusky]] || The poor guy who got datastacks pushed onto him. (Pun) Though he did finish stacks, the rest are yet to be done (So they'll probably be redone by someone else). Rusky strives to keep everyone else in line.<br />
|- <br />
| Sir Xemic/C-Ator9 || Drafted several mathy functions in GML, including draw_ellipse, draw_roundrect, and make_color_hsv.<br />
|- <br />
| [[User:Fede-lasse|"fede-lasse"]] || Contributed small strings of functions here and there.<br />
|-<br />
| [[User:Cheeseboy|Cheeseboy]] || Maintains packages and constructed the Windows Portable ZIP which is maintained by [[User:RobertBColton]], also good to ask if you have trouble setting the program up on uncommon platforms, and also for help with compiling things.<br />
|-<br />
| Everyone else || Thank you for all the help!<br />
|}<br />
|}<br />
|}</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Google_Summer_of_Code:_2015&diff=30703Google Summer of Code: 20152015-02-07T22:09:42Z<p>Josh @ Dreamland: Created page with "== Small functionality tweaks/additions == These are small tasks to get a student or potential contributor familiar with the inner-workings of ENIGMA. They are minor tasks which ..."</p>
<hr />
<div>== Small functionality tweaks/additions ==<br />
These are small tasks to get a student or potential contributor familiar with the inner-workings of ENIGMA. They are minor tasks which would take less time for a mentor to implement than explain, but they have actually not been done yet, and so are good candidates for introductory tasks.<br />
# '''Rename resources whose names are not valid identifiers.''' Right now, ENIGMA will let you name a sprite "while" or "if" or "Mario's Cap" or "string." These resources can cause name conflicts and should be assigned a different name, or no name at all.<br />
# '''Sound system improvements.''' The current implementations of <code>sound_volume</code> is not working, and <code>sound_position</code> is missing.<br />
# '''Particle system features.''' The current particle system is missing attractors, and in general offers plenty of room for improvement. <br />
<br />
== API Extension Tasks ==<br />
These are large, modular tasks which would require elevated interest in a topic. They are potentially the most fun and the most useful.<br />
# '''Add support for Scalable Vector Graphics.''' ENIGMA currently supports only pre-rasterized graphics resources. This task would involve adding a method to rasterize vector graphics. After that, at the student's option, this task could be extended to render vector graphics live in-game. Prior experience with OpenVG is a plus. Prior experience with OpenGL is strongly encouraged.<br />
# '''Further Box2D support.''' ''FEATURE REQUEST: ELABORATION REQUIRED''<br />
<br />
== IDE Tasks ==<br />
These are largish tasks which concern the IDE. Students will have the option of working with Java for [[LateralGM]] or with C++ using Qt for [[NaturalGM]].<br />
# '''A polygon editor.''' Used primarily for designing polygon collision masks. Work points include a marching-squares algorithm (or the like) for bitmap tracing, and a point editor.<br />
# '''Texture groups.''' Add support for generating texture atlases to the IDE, then support writing them in the backend (compiler).<br />
<br />
== Extremely Specialized ==<br />
These tasks would be useful to the project, but require special skills or equipment. They are listed in case a student has a deep interest in a subject, coupled with existing skills. Mentors will be less able to assist with these tasks.<br />
# '''Support for virtual reality displays,''' such as Oculus Rift. Design and implement a simple-to-use API for virtual reality development in existing games. This would require a VR device for testing, and the team does not presently have any experience with these APIs.<br />
# '''Recode LateralGM frontend using JavaFX.''' This is a large, UI-intensive task. Mentors would be able to assist, but the magnitude of work and learning curve seems too high for a GSoC task for an inexperienced student. Mentors would potentially not suffice.</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Modulus&diff=30631Modulus2014-12-27T05:53:16Z<p>Josh @ Dreamland: </p>
<hr />
<div>Modulus is an arithmetic operator that is useful in many common algorithms. The modulus expression <code>a % b</code> gives the remainder after performing the division <code>a / b</code>. More technically, it returns <code>c</code> such that <code>a = K*b + c</code>, where <code>K</code> is an integer. As an example, <code>10 % 3</code> returns <code>1</code>, as <code>10 / 3</code> is <code>9</code> with a remainder of <code>1</code>.<br />
<br />
An algorithmic example of the use of modulus is computing the time a certain number of hours after a given time. Take, for example, computing the time five hours in the future. If the current time is 11:00, adding five hours yields 4:00.<br />
<br />
<source lang="edl"><br />
show_message("5 hours from 11:00 is " + string((11 + 5) % 12) + ":00");<br />
<br />
// the following can be done for a 24 hour clock<br />
show_message("5 hours from 22:00 is " + string((22 + 5) % 24) + ":00");<br />
</source><br />
<br />
For this simple example, you could compute this using a simple conditional statement, but modulus allows doing it in the general case. For instance, if the time is 23:00, but you want the time in five hours on a twelve-hour clock, the modulus example will still work, while simply conditionally subtracting twelve would give you 16:00 (28 − 12 = 16, but 28 % 12 is 4).<br />
<br />
Another simple example is determining whether a number is even or odd.<br />
<source lang="edl"><br />
if (number % 2 == 0) {<br />
// even<br />
} else {<br />
// odd<br />
}<br />
</source><br />
<br />
It may also be useful to perform some operation every nth iteration of a loop. The following loop will display every third number between zero and fifty:<br />
<source lang="edl"><br />
for (i = 1; i < 50; i++) {<br />
if (i % 3 == 0) {<br />
show_message(string(i));<br />
}<br />
}<br />
</source><br />
<br />
== Floating modulus ==<br />
<br />
In x86, modulus is implemented as a side-effect of the integer division operator. As a consequence, floating point modulus is not defined in C and C++, which instead mandate the use of <code>fmod</code>. ENIGMA allows you to utilize the <code>%</code> operator to do integer modulus, or the <code>mod</code> operator to force floating-point modulus using <code>fmod</code> behind the scenes. As a consequence, <code>3.5 % 1.25</code> ''will not'' work in ENIGMA; you must use <code>3.5 mod 1.5</code>, or cast at least one operand to <code>var</code> or <code>variant</code>.</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Modulus&diff=30630Modulus2014-12-27T05:45:21Z<p>Josh @ Dreamland: </p>
<hr />
<div>Modulus is an arithmetic operator that is useful in many common algorithms. The modulus expression [code]a % b[/code] gives the remainder after performing the division [code]a / b[/code]. More technically, it returns [code]c[/code] such that [code]a = K*b + c[/code], where [code]K[/code] is an integer. As an example, [code]10 % 3[/code] returns [code]1[/code], as [code]10 / 3[/code] is [code]9[/code] with a remainder of [code]1[/code].<br />
<br />
An algorithmic example of the use of modulus is computing the time a certain number of hours after a given time. Take, for example, computing the time five hours in the future. If the current time is 11:00, adding five hours yields 4:00.<br />
<br />
<source lang="edl"><br />
show_message("5 hours from 11:00 is " + string((11 + 5) % 12) + ":00");<br />
<br />
// the following can be done for a 24 hour clock<br />
show_message("5 hours from 22:00 is " + string((22 + 5) % 24) + ":00");<br />
</source><br />
<br />
For this simple example, you could compute this using a simple conditional statement, but modulus allows doing it in the general case. For instance, if the time is 23:00, but you want the time in five hours on a twelve-hour clock, the modulus example will still work, while simply conditionally subtracting twelve would give you 16:00 (28 − 12 = 16, but 28 % 12 is 4).<br />
<br />
Another simple example is determining whether a number is even or odd.<br />
<source lang="edl"><br />
if (number % 2 == 0) {<br />
// even<br />
} else {<br />
// odd<br />
}<br />
</source><br />
<br />
It may also be useful to perform some operation every nth iteration of a loop. The following loop will display every third number between zero and fifty:<br />
<source lang="edl"><br />
for (i = 1; i < 50; i++) {<br />
if (i % 3 == 0) {<br />
show_message(string(i));<br />
}<br />
}<br />
</source></div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=IRC&diff=30359IRC2014-08-01T00:16:33Z<p>Josh @ Dreamland: </p>
<hr />
<div>IRC is short for Internet Relay Chat, and is a medium of instant communication in the form of chat. You connect to an IRC server, and then select one or more chat rooms, called channels, to join. In each of these channels you will usually find many people. Anybody in that channel may then post a message to the channel and it will instantly be shared with all the other members of the channel. As such, it's a much faster means of communication than, say, forums, and you are more likely to find someone with an answer than asking one person at a time. Additionally, IRC offers a way to have a private 1-on-1 conversation with an individual user on the server, which is usually used when two people wish to communicate more without filling up the channel with their chat.<br />
<br />
Please also be aware that not everyone on the channel may have an answer or may even be presently watching the channel, so you may not get an answer right away. It may help to clarify your question, or re-ask your question periodically if it gets lost among other messages.<br />
<br />
* DO NOT flood the channel by rapidly posting your question over and over again. Only one person's ever done this; kicking him is a sport, and it's always in season.<br />
* DO keep your messages relatively short, clear, and somewhat on-topic.<br />
* DO NOT private message individual channel members without their prior consent, with exception of channel operators.<br />
* DO prepend your messages with the name of the person that your message is primarily directed to, such as a person who asks for a clarification. Most chat clients handle this by highlighting lines with a person's own name on them, so that those lines stand out more.<br />
* DO NOT include the names of persons that your message does not involve. This is tantamount to waking a group of slumbering bears. Although it might wake them up, it will also make them grumpy.<br />
<br />
A lot of people sign on and ask, "Is anyone here?", then part a few minutes later. Channel members, especially developers, try to keep busy. As such, we do not always check the channel frequently enough to see such messages. If you have something to say to someone, address them so their client gets their attention.<br />
<br />
== ENIGMA's IRC ==<br />
* Server: freenode.net<br />
* Channel: #enigma (The # sign is usually mandatory. On freenode, # is for official channels, and ## is for unofficial)<br />
* Description: The official ENIGMA IRC channel, for any discussion remotely relating to enigma. Devs frequent the channel.<br />
* Webchat: If you don't have a suitable IRC client, freenode provides a web interface, [http://webchat.freenode.net/?channels=enigma&uio=d4 freenode webchat]<br />
* Bots:<br />
** '''ChanServ''' is an IRC service bot that provides administrative commands to channel owners. He may be toggled as visible or invisible in the channel; we've chosen visible to remind users that the channel is an official channel and administrative functions are at our fingertips should anything get out of hand. ChanServ never says anything in the channel.<br />
** '''EnigmaBot''' is a resident bot, maintained by [[User:IsmAvatar]] and written in Java. Commands are prefixed by either an exclamation mark (!help) or the bot's name (EnigmaBot: help), or through private message (no prefixing necessary then) and are usually business-related. EnigmaBot also possesses a set of C++ processing commands.<br />
** '''Thundercleese''' is another resident bot, maintained by [[User:sirmxe]] and [[User:IsmAvatar]] and written in Perl. He is responsible for logging the channel and reporting when someone commits to the repositories. Commands are prefixed by an at sign (@help, @logs) and are usually amusement-related.<br />
** '''dickkkk''' is an unofficial bot, maintained by [[User:HUMPHREY]], written in Java, and loosely based off of EnigmaBot. Commands are prefixed by the dollar sign ($help) and are usually miscellaneous, like searching logs for a quote.<br />
** '''JoshDreamland''' usually shares his account with a javascript processor, accessed by prefixing some javascript code with <code>js: </code>, for example: <code>js: 1+1</code> will cause Josh to reply <code>2</code>.</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=View_vspeed&diff=30264View vspeed2014-05-17T16:20:06Z<p>Josh @ Dreamland: Redirected page to Views#view vspeed</p>
<hr />
<div>#redirect [[Views#view_vspeed]]<br />
{{DISPLAYTITLE:view_vspeed}}<br />
[[category:View variables]]</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=View_hspeed&diff=30263View hspeed2014-05-17T16:19:52Z<p>Josh @ Dreamland: Redirected page to Views#view hspeed</p>
<hr />
<div>#redirect [[Views#view_hspeed]]<br />
{{DISPLAYTITLE:view_hspeed}}<br />
[[category:View variables]]</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=View_vbor&diff=30262View vbor2014-05-17T16:19:06Z<p>Josh @ Dreamland: Redirected page to Views#view vbor</p>
<hr />
<div>#redirect [[Views#view_vbor]]<br />
{{DISPLAYTITLE:view_vbor}}<br />
[[category:View variables]]</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=View_hbor&diff=30261View hbor2014-05-17T16:18:51Z<p>Josh @ Dreamland: Redirected page to Views#view hbor</p>
<hr />
<div>#redirect [[Views#view_hbor]]<br />
{{DISPLAYTITLE:view_hbor}}<br />
[[category:View variables]]</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=View_object&diff=30260View object2014-05-17T16:17:39Z<p>Josh @ Dreamland: Redirected page to Views#view object</p>
<hr />
<div>#redirect [[Views#view_object]]<br />
{{DISPLAYTITLE:view_object}}<br />
[[category:View variables]]</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=View_angle&diff=30259View angle2014-05-17T16:17:22Z<p>Josh @ Dreamland: Redirected page to Views#view angle</p>
<hr />
<div>#redirect [[Views#view_angle]]<br />
{{DISPLAYTITLE:view_angle}}<br />
[[category:View variables]]</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=View_hport&diff=30258View hport2014-05-17T16:16:43Z<p>Josh @ Dreamland: Redirected page to Views#view hport</p>
<hr />
<div>#redirect [[Views#view_hport]]<br />
{{DISPLAYTITLE:view_hport}}<br />
[[category:View variables]]</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=View_wport&diff=30257View wport2014-05-17T16:16:26Z<p>Josh @ Dreamland: Redirected page to Views#view wport</p>
<hr />
<div>#redirect [[Views#view_wport]]<br />
{{DISPLAYTITLE:view_wport}}<br />
[[category:View variables]]</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=View_yport&diff=30256View yport2014-05-17T16:16:13Z<p>Josh @ Dreamland: Redirected page to Views#view yport</p>
<hr />
<div>#redirect [[Views#view_yport]]<br />
{{DISPLAYTITLE:view_yport}}<br />
[[category:View variables]]</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=View_xport&diff=30255View xport2014-05-17T16:15:54Z<p>Josh @ Dreamland: Redirected page to Views#view xport</p>
<hr />
<div>#redirect [[Views#view_xport]]<br />
{{DISPLAYTITLE:view_xport}}<br />
[[category:View variables]]</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=View_hview&diff=30254View hview2014-05-17T16:15:03Z<p>Josh @ Dreamland: Redirected page to Views#view hview</p>
<hr />
<div>#redirect [[Views#view_hview]]<br />
{{DISPLAYTITLE:view_hview}}<br />
[[category:View variables]]</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=View_wview&diff=30253View wview2014-05-17T16:14:43Z<p>Josh @ Dreamland: Redirected page to Views#view wview</p>
<hr />
<div>#redirect [[Views#view_wview]]<br />
{{DISPLAYTITLE:view_wview}}<br />
[[category:View variables]]</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=View_xview&diff=30252View xview2014-05-17T16:14:17Z<p>Josh @ Dreamland: </p>
<hr />
<div>#redirect [[Views#view_xview]]<br />
{{DISPLAYTITLE:view_xview}}<br />
[[category:View variables]]</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=View_yview&diff=30251View yview2014-05-17T16:13:31Z<p>Josh @ Dreamland: Redirected page to Views#view xview</p>
<hr />
<div>#redirect [[Views#view_xview]]<br />
{{DISPLAYTITLE:view_yview}}<br />
[[category:View variables]]</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=View_xview&diff=30250View xview2014-05-17T16:10:34Z<p>Josh @ Dreamland: Redirected page to Views#view xview</p>
<hr />
<div>#redirect [[Views#view_xview]]<br />
<br />
[[category:View variables]]</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Views&diff=30249Views2014-05-17T16:05:47Z<p>Josh @ Dreamland: </p>
<hr />
<div>In ENIGMA, a [[Views|view]] is a region on the screen assigned to display a region in your game world. By default, a room contains one view which displays the entire content of the room on a window of equal size. That is, if your room is 640x480, a 640x480 window will be created to display the contents of your room. This still applies even if your room is larger than the size of the display. In these cases, you probably want to assign views.<br />
<br />
Using the [[Room Editor]], you can assign up to eight views. Conceptually, a view is given as a [[#Viewport|viewport]], a [[#View_Region|viewing region]], a [[#View_Angle|view angle]], and a [[#View_Object|view object]] with a [[#View_Border|view border]] and [[#View_Speed|view speed]].<br />
<br />
== View concepts ==<br />
<br />
=== Viewport ===<br />
<br />
A '''viewport''' is a region in the window, or on the screen. Its dimensions correspond to actual user units, as displayed on the user's monitor. Thus, the largest useful viewport size is the user's resolution. A very common default viewport size is 640x480. A less common, more modern default viewport size is 800x600. These are typically positioned at (0, 0), except where other views occupy the top-left region of the window. Viewports used for status boxes or menus are usually smaller, and positioned elsewhere on the screen. In many games, these values remain hard-coded. In other games, they are computed using methods such as [[display_get_width]]/[[display_get_height]].<br />
<br />
If your game window is positioned on your screen at (100, 100), and your window border is 4px thick with a 24px title bar (this is controlled by the window manager and is not accessible to ENIGMA), the upper-left corner of your actual game viewport will be at (104, 124), and this will be the real coordinate of a viewport positioned at (0, 0). You can use window functions such as [[window_get_x]]/[[window_get_y]] to fetch the (100, 100). Presently, no functions exist to accurately fetch the border and title bar size. (It may be possible to fetch the (104,124) on Windows using the GL/DX display HWND separately.)<br />
<br />
=== View Region ===<br />
<br />
This is the area in the game that a view represents. It can have any real size, and any real position. Most commonly, the position coordinates range from zero to [[room_width]] and [[room_height]] for x and y, respectively, and the width and height are usually identical to the [[#viewport|viewport]] width and height. This prevents unsightly stretching or scaling. In games where those are desirable, the view region width and height are usually related to the viewport width and height by some inverse power-of-two, eg, a half or a quarter. This causes pixelation reminiscent of retro games.<br />
<br />
When there is disparity between the viewport dimensions and the view region dimensions, the view region dimensions define the in-game coordinates.<br />
<br />
=== View Angle ===<br />
<br />
For any occasion wherein pivoting the angle of the current view about an unspecified point is useful, ENIGMA also offers the GM:S <code>view_angle</code>.<br />
<br />
=== View Object ===<br />
<br />
For your convenience, ENIGMA provides functionality to automatically move views to follow an object. If you assign an object to a view, the [[#view_region|viewing region]] will automatically move around the room to keep the first instance of that object in sight.<br />
<br />
=== View Border ===<br />
<br />
If you have assigned a [[#view_object|view object]], the '''view border''' is a margin of viewing space guaranteed to be found around the player. A view border of (0,0) will likely be regarded as annoying, as the player will not be able to see what is ahead while moving. Typically a value slightly less than half the view region width and height are used for the border width and height. For example, if you view is sized 640x480, a good border size might be 300, 220.<br />
<br />
This border is not related to the window border and does not correspond to real screen coordinates. It uses in-game coordinates.<br />
<br />
=== View Speed ===<br />
<br />
If you have assigned a [[#view_object|view object]], the '''view speed''' is the maximum speed at which the view object is followed.<br />
<br />
== View Variables ==<br />
<br />
While you may occasionally want to use functions such as [[room_set_view]] to assign to a room, you more likely will want to set view parameters immediately. Changing the views in each room this way can be done up front, but will only take effect once the room is reloaded, as no relationship is guaranteed between the default room view assignment and the (mutable) room variables during gameplay.<br />
<br />
You can edit view properties live using the following variables:<br />
<br />
{| class="wikitable"<br />
|+ '''Live View Variables'''<br />
! scope="col" | Variable Name<br />
! scope="col" | Description<br />
|-<br />
! colspan="2" style="text-align: center;" | Viewport variables<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_xport</h3> || The x-coordinate, in screen space, of the port of this view in the window. This, and other variables in this category, will almost certainly be integers.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_yport</h3> || The y-coordinate, in screen space, of the port of this view in the window.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_wport</h3> || The width, in screen space, of the port of this view in the window.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_hport</h3> || The height, in screen space, of the port of this view in the window.<br />
|-<br />
! colspan="2" style="text-align: center;" | View region variables<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_xview</h3> || The x-coordinate, in game space, of the port of this view in the window. This, and other variables in this category, may be integers or floating point numbers, depending on the in-game coordinate system.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_yview</h3> || The y-coordinate, in game space, of the port of this view in the window.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_wview</h3> || The width, in game space, of the port of this view in the window.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_hview</h3> || The height, in game space, of the port of this view in the window.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_angle</h3> || The angle at which to tilt this view about an arbitrary axis, probably given by the center of the current view.<br />
|-<br />
! colspan="2" style="text-align: center;" | View object/border variables<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_object</h3> || An identifying ID of the object to follow. Assigning to an instance ID will cause the view to follow that instance so long as it exists. Assigning an object index, such as <code>obj_player</code>, will cause the first instance of that object to be followed, which is ideal if there is only one instance of said object. Assigning the special value <code>noone</code> will cease following objects.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_hbor</h3> || The horizontal border to allow around the object being followed, in game space. This guarantees, to the extent logically possible, that at least <code>view_hbor</code> pixels lie between the object and the left or right of the screen.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_vbor</h3> || The vertical border to allow around the object being followed, in game space. This guarantees, to the extent logically possible, that at least <code>view_vbor</code> pixels lie between the object and the top or bottom of the screen.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_hspeed</h3> || The maximum horizontal speed at which to follow objects, in game space.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_vspeed</h3> || The maximum vertical speed at which to follow objects, in game space.<br />
|}</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Views&diff=30248Views2014-05-17T16:03:08Z<p>Josh @ Dreamland: </p>
<hr />
<div>In ENIGMA, a [[Views|view]] is a region on the screen assigned to display a region in your game world. By default, a room contains one view which displays the entire content of the room on a window of equal size. That is, if your room is 640x480, a 640x480 window will be created to display the contents of your room. This still applies even if your room is larger than the size of the display. In these cases, you probably want to assign views.<br />
<br />
Using the [[Room Editor]], you can assign up to eight views. Conceptually, a view is given as a [[#viewport|viewport]], a [[#view_region|viewing region]], a [[#view_tilt_angle|view angle]], and a [[#view_object|view object]] with a [[#view_border|view border]] and [[#view_speed|view speed]].<br />
<br />
== View concepts ==<br />
<br />
=== Viewport ===<br />
<br />
A '''viewport''' is a region in the window, or on the screen. Its dimensions correspond to actual user units, as displayed on the user's monitor. Thus, the largest useful viewport size is the user's resolution. A very common default viewport size is 640x480. A less common, more modern default viewport size is 800x600. These are typically positioned at (0, 0), except where other views occupy the top-left region of the window. Viewports used for status boxes or menus are usually smaller, and positioned elsewhere on the screen. In many games, these values remain hard-coded. In other games, they are computed using methods such as [[display_get_width]]/[[display_get_height]].<br />
<br />
If your game window is positioned on your screen at (100, 100), and your window border is 4px thick with a 24px title bar (this is controlled by the window manager and is not accessible to ENIGMA), the upper-left corner of your actual game viewport will be at (104, 124), and this will be the real coordinate of a viewport positioned at (0, 0). You can use window functions such as [[window_get_x]]/[[window_get_y]] to fetch the (100, 100). Presently, no functions exist to accurately fetch the border and title bar size. (It may be possible to fetch the (104,124) on Windows using the GL/DX display HWND separately.)<br />
<br />
=== View Region ===<br />
<br />
This is the area in the game that a view represents. It can have any real size, and any real position. Most commonly, the position coordinates range from zero to [[room_width]] and [[room_height]] for x and y, respectively, and the width and height are usually identical to the [[#viewport|viewport]] width and height. This prevents unsightly stretching or scaling. In games where those are desirable, the view region width and height are usually related to the viewport width and height by some inverse power-of-two, eg, a half or a quarter. This causes pixelation reminiscent of retro games.<br />
<br />
When there is disparity between the viewport dimensions and the view region dimensions, the view region dimensions define the in-game coordinates.<br />
<br />
=== View Tilt Angle ===<br />
<br />
For any occasion wherein pivoting the angle of the current view about an unspecified point is useful, ENIGMA also offers the GM:S <code>view_angle</code>.<br />
<br />
=== View Object ===<br />
<br />
For your convenience, ENIGMA provides functionality to automatically move views to follow an object. If you assign an object to a view, the [[#view_region|viewing region]] will automatically move around the room to keep the first instance of that object in sight.<br />
<br />
=== View Border ===<br />
<br />
If you have assigned a [[#view_object|view object]], the '''view border''' is a margin of viewing space guaranteed to be found around the player. A view border of (0,0) will likely be regarded as annoying, as the player will not be able to see what is ahead while moving. Typically a value slightly less than half the view region width and height are used for the border width and height. For example, if you view is sized 640x480, a good border size might be 300, 220.<br />
<br />
This border is not related to the window border and does not correspond to real screen coordinates. It uses in-game coordinates.<br />
<br />
=== View Speed ===<br />
<br />
If you have assigned a [[#view_object|view object]], the '''view speed''' is the maximum speed at which the view object is followed.<br />
<br />
== View Variables ==<br />
<br />
While you may occasionally want to use functions such as [[room_set_view]] to assign to a room, you more likely will want to set view parameters immediately. Changing the views in each room this way can be done up front, but will only take effect once the room is reloaded, as no relationship is guaranteed between the default room view assignment and the (mutable) room variables during gameplay.<br />
<br />
You can edit view properties live using the following variables:<br />
<br />
{| class="wikitable"<br />
|+ '''Live View Variables'''<br />
! scope="col" | Variable Name<br />
! scope="col" | Description<br />
|-<br />
! colspan="2" style="text-align: center;" | Viewport variables<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_xport</h3> || The x-coordinate, in screen space, of the port of this view in the window. This, and other variables in this category, will almost certainly be integers.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_yport</h3> || The y-coordinate, in screen space, of the port of this view in the window.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_wport</h3> || The width, in screen space, of the port of this view in the window.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_hport</h3> || The height, in screen space, of the port of this view in the window.<br />
|-<br />
! colspan="2" style="text-align: center;" | View region variables<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_xview</h3> || The x-coordinate, in game space, of the port of this view in the window. This, and other variables in this category, may be integers or floating point numbers, depending on the in-game coordinate system.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_yview</h3> || The y-coordinate, in game space, of the port of this view in the window.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_wview</h3> || The width, in game space, of the port of this view in the window.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_hview</h3> || The height, in game space, of the port of this view in the window.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_angle</h3> || The angle at which to tilt this view about an arbitrary axis, probably given by the center of the current view.<br />
|-<br />
! colspan="2" style="text-align: center;" | View object/border variables<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_object</h3> || An identifying ID of the object to follow. Assigning to an instance ID will cause the view to follow that instance so long as it exists. Assigning an object index, such as <code>obj_player</code>, will cause the first instance of that object to be followed, which is ideal if there is only one instance of said object. Assigning the special value <code>noone</code> will cease following objects.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_hbor</h3> || The horizontal border to allow around the object being followed, in game space. This guarantees, to the extent logically possible, that at least <code>view_hbor</code> pixels lie between the object and the left or right of the screen.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_vbor</h3> || The vertical border to allow around the object being followed, in game space. This guarantees, to the extent logically possible, that at least <code>view_vbor</code> pixels lie between the object and the top or bottom of the screen.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_hspeed</h3> || The maximum horizontal speed at which to follow objects, in game space.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_vspeed</h3> || The maximum vertical speed at which to follow objects, in game space.<br />
|}</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Views&diff=30247Views2014-05-17T16:01:53Z<p>Josh @ Dreamland: Created page with "In ENIGMA, a view is a region on the screen assigned to display a region in your game world. By default, a room contains one view which displays the entire content of t..."</p>
<hr />
<div>In ENIGMA, a [[Views|view]] is a region on the screen assigned to display a region in your game world. By default, a room contains one view which displays the entire content of the room on a window of equal size. That is, if your room is 640x480, a 640x480 window will be created to display the contents of your room. This still applies even if your room is larger than the size of the display. In these cases, you probably want to assign views.<br />
<br />
Using the [[Room Editor]], you can assign up to eight views. Conceptually, a view is given as a [[#viewport|viewport]], a [[#view_region|viewing region]], a [[#view_tilt_angle|view angle]], and a [[#view_object|view object]] with a [[#view_border|view border]] and [[#view_speed|view speed]].<br />
<br />
== View concepts ==<br />
<br />
=== Viewport ===<br />
<br />
A '''viewport''' is a region in the window, or on the screen. Its dimensions correspond to actual user units, as displayed on the user's monitor. Thus, the largest useful viewport size is the user's resolution. A very common default viewport size is 640x480. A less common, more modern default viewport size is 800x600. These are typically positioned at (0, 0), except where other views occupy the top-left region of the window. Viewports used for status boxes or menus are usually smaller, and positioned elsewhere on the screen. In many games, these values remain hard-coded. In other games, they are computed using methods such as [[display_get_width]]/[[display_get_height]].<br />
<br />
If your game window is positioned on your screen at (100, 100), and your window border is 4px thick with a 24px title bar (this is controlled by the window manager and is not accessible to ENIGMA), the upper-left corner of your actual game viewport will be at (104, 124), and this will be the real coordinate of a viewport positioned at (0, 0). You can use window functions such as [[window_position_get_x]]/[[window_position_get_y]] to fetch the (100, 100). Presently, no functions exist to accurately fetch the border and title bar size. (It may be possible to fetch the (104,124) on Windows using the GL/DX display HWND separately.)<br />
<br />
=== View Region ===<br />
<br />
This is the area in the game that a view represents. It can have any real size, and any real position. Most commonly, the position coordinates range from zero to [[room_width]] and [[room_height]] for x and y, respectively, and the width and height are usually identical to the [[#viewport|viewport]] width and height. This prevents unsightly stretching or scaling. In games where those are desirable, the view region width and height are usually related to the viewport width and height by some inverse power-of-two, eg, a half or a quarter. This causes pixelation reminiscent of retro games.<br />
<br />
When there is disparity between the viewport dimensions and the view region dimensions, the view region dimensions define the in-game coordinates.<br />
<br />
=== View Tilt Angle ===<br />
<br />
For any occasion wherein pivoting the angle of the current view about an unspecified point is useful, ENIGMA also offers the GM:S <code>view_angle</code>.<br />
<br />
=== View Object ===<br />
<br />
For your convenience, ENIGMA provides functionality to automatically move views to follow an object. If you assign an object to a view, the [[#view_region|viewing region]] will automatically move around the room to keep the first instance of that object in sight.<br />
<br />
=== View Border ===<br />
<br />
If you have assigned a [[#view_object|view object]], the '''view border''' is a margin of viewing space guaranteed to be found around the player. A view border of (0,0) will likely be regarded as annoying, as the player will not be able to see what is ahead while moving. Typically a value slightly less than half the view region width and height are used for the border width and height. For example, if you view is sized 640x480, a good border size might be 300, 220.<br />
<br />
This border is not related to the window border and does not correspond to real screen coordinates. It uses in-game coordinates.<br />
<br />
=== View Speed ===<br />
<br />
If you have assigned a [[#view_object|view object]], the '''view speed''' is the maximum speed at which the view object is followed.<br />
<br />
== View Variables ==<br />
<br />
While you may occasionally want to use functions such as [[room_set_view]] to assign to a room, you more likely will want to set view parameters immediately. Changing the views in each room this way can be done up front, but will only take effect once the room is reloaded, as no relationship is guaranteed between the default room view assignment and the (mutable) room variables during gameplay.<br />
<br />
You can edit view properties live using the following variables:<br />
<br />
{| class="wikitable"<br />
|+ '''Live View Variables'''<br />
! scope="col" | Variable Name<br />
! scope="col" | Description<br />
|-<br />
! colspan="2" style="text-align: center;" | Viewport variables<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_xport</h3> || The x-coordinate, in screen space, of the port of this view in the window. This, and other variables in this category, will almost certainly be integers.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_yport</h3> || The y-coordinate, in screen space, of the port of this view in the window.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_wport</h3> || The width, in screen space, of the port of this view in the window.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_hport</h3> || The height, in screen space, of the port of this view in the window.<br />
|-<br />
! colspan="2" style="text-align: center;" | View region variables<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_xview</h3> || The x-coordinate, in game space, of the port of this view in the window. This, and other variables in this category, may be integers or floating point numbers, depending on the in-game coordinate system.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_yview</h3> || The y-coordinate, in game space, of the port of this view in the window.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_wview</h3> || The width, in game space, of the port of this view in the window.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_hview</h3> || The height, in game space, of the port of this view in the window.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_angle</h3> || The angle at which to tilt this view about an arbitrary axis, probably given by the center of the current view.<br />
|-<br />
! colspan="2" style="text-align: center;" | View object/border variables<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_object</h3> || An identifying ID of the object to follow. Assigning to an instance ID will cause the view to follow that instance so long as it exists. Assigning an object index, such as <code>obj_player</code>, will cause the first instance of that object to be followed, which is ideal if there is only one instance of said object. Assigning the special value <code>noone</code> will cease following objects.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_hbor</h3> || The horizontal border to allow around the object being followed, in game space. This guarantees, to the extent logically possible, that at least <code>view_hbor</code> pixels lie between the object and the left or right of the screen.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_vbor</h3> || The vertical border to allow around the object being followed, in game space. This guarantees, to the extent logically possible, that at least <code>view_vbor</code> pixels lie between the object and the top or bottom of the screen.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_hspeed</h3> || The maximum horizontal speed at which to follow objects, in game space.<br />
|-<br />
| <h3 style="font-size: inherit; font-family: monospace, courier, courier new">view_vspeed</h3> || The maximum vertical speed at which to follow objects, in game space.<br />
|}</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Main_Page&diff=29974Main Page2014-04-27T18:50:41Z<p>Josh @ Dreamland: </p>
<hr />
<div><br><br />
{|align="center" style="text-align:left; border-spacing: 0px; width:100%; height:300px; background-color:rgba(0,0,0,0);"<br />
|-valign="top"<br />
<br />
| style="width:20px" |<br />
<br />
| style="width:35%" |<br />
<br />
{| cellpadding=0 cellspacing=0 border=0 align=left style="width:100%; height:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|12px 12px 12px 12px}}"<br />
|style="width:300px; height:100px; {{linear-gradient|top|#295A8C, #0A2138}}; color:#FFFFFF; {{border-radius|12px 12px 0px 0px}}"|<br />
[[Image:ENIGMA_banner.png|center|100%|link=]]<br />
|-<br />
| style="background-color:#FFFFFF; height:220px; {{border-radius|0px 0px 12px 12px}}"|<br />
<div style="text-align: center;"><br />
<U>'''Welcome to the ENIGMA Wiki!'''</U> <br><br />
The most comprehensive source of information about the <br><br />
[[ENIGMA|Extensible Non-Interpreted Game Maker Augmentation]].<br />
[[Image:gplv3-127x51.png|center|300px|link=License]]<br />
<nowiki></nowiki>[[Special:Statistics|{{NUMBEROFPAGES}}]] pages and files contributed by our [[Special:Statistics|{{NUMBEROFUSERS}}]] registered users<nowiki></nowiki><br />
</div><br />
|}<br />
<br />
| style="width:20px" |<br />
<br />
| width="60%" |<br />
<br />
{| cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%; height:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|12px 12px 12px 12px}}"<br />
| style="height:20px; {{linear-gradient|top|#295A8C, #0A2138}} color:#FFFFFF; {{border-radius|12px 12px 0 0}}"|<br />
<div style="position: relative; left:5px"><br />
[[Image:Board.png|link=|30px]]<br />
'''Bulletin Board'''<br />
</div><br />
|- valign=top<br />
|align=left style="background-color:#FFFFFF; height:250px; {{border-radius|0px 0px 12px 12px}}"|<br />
{{bulletinboard}}<br />
|}<br />
| style="width:20px" |<br />
|}<br />
<br />
{|align="center" style="text-align:left; border-spacing: 20px; width:100%; height:340px; background-color:rgba(0,0,0,0);"<br />
|-valign="top"<br />
| style="width:25%;"|<br />
<br />
{| cellpadding=0 cellspacing=0 border=0 style="width:100%; height:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|12px 12px 12px 12px}}"<br />
| style="{{linear-gradient|top|#295A8C, #0A2138}} color:#FFFFFF; height:20px; {{border-radius|12px 12px 0px 0px}}"|<br />
<div style="position: relative; left:5px"><br />
[[Image:Info.png|link=|30px]]<br />
'''About ENIGMA'''<br />
</div><br />
|- valign="top"<br />
|align=left style="background-color:#FFFFFF; {{border-radius|0px 0px 12px 12px}}"|<br />
*[[ENIGMA|What is "ENIGMA"?]] <br />
*[[Help|Get help]] <br />
*[[ENIGMA:FAQ|Frequently Asked Questions]]<br />
*[[Classroom Education]]<br />
*[[ENIGMA:Specification|EDL Specifications]] <br />
*[[Install|Installation]] <br />
*[[GM_Incompatibilities|GameMaker Incompatibilities/Differences]]<br />
*[[Troubleshoot|Troubleshooting]]<br />
*[[License|License Agreement]] <br />
|}<br />
<br />
| style="width:25%;"|<br />
<br />
{| cellpadding=0 cellspacing=0 border=0 style="width:100%; height:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|12px 12px 12px 12px}}"<br />
| style="{{linear-gradient|top|#295A8C, #0A2138}} color:#FFFFFF; height:20px; {{border-radius|12px 12px 0px 0px}}"|<br />
<div style="position: relative; left:5px"><br />
[[Image:Rocket.png|link=|30px]]<br />
'''Getting Started'''<br />
</div><br />
|- valign="top"<br />
|align=left style="background-color:#FFFFFF; {{border-radius|0px 0px 12px 12px}}"|<br />
*[[Documentation]] <br />
*[[Tutorials]]<br />
*[[Free Resources]] <br />
*[[Tools]] <br />
*[[Plugins|Plugins and Extensions]] <br />
*[[Useful links|Useful links]]<br />
|}<br />
<br />
|style="width:25%;"|<br />
<br />
{| cellpadding=0 cellspacing=0 border=0 style="width:100%; height:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|12px 12px 12px 12px}}"<br />
| style="{{linear-gradient|top|#295A8C, #0A2138}} color:#FFFFFF; height:20px; {{border-radius|12px 12px 0px 0px}}"|<br />
<div style="position: relative; left:5px"><br />
[[Image:Blueprint.png|link=|30px]]<br />
'''Development Contribution'''<br />
</div><br />
|- valign="top"<br />
|align=left style="background-color:#FFFFFF; {{border-radius|0px 0px 12px 12px}}"|<br />
*[[Todo|What needs done...]]<br />
*[[ENIGMA:Developing|Engine and Compiler]]<br />
*[[Sister Projects:Developing|Sister Projects]]<br />
*[[Translating]]<br />
*[[Suggestions]] <br />
*[[Bug reporting]] <br />
|}<br />
<br />
|style="width:25%;"|<br />
<br />
{| cellpadding=0 cellspacing=0 border=0 style="width:100%; height:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|12px 12px 12px 12px}}"<br />
| style="{{linear-gradient|top|#295A8C, #0A2138}} color:#FFFFFF; height:20px; {{border-radius|12px 12px 0px 0px}}"|<br />
<div style="position: relative; left:5px"><br />
[[Image:Contwiki.png|link=|30px]]<br />
'''Contributing to the Wiki'''<br />
</div><br />
|- valign="top"<br />
|align=left style="background-color:#FFFFFF; {{border-radius|0px 0px 12px 12px}}"|<br />
*[[Contribution Guidelines]] <br />
*[[MediaWiki help|Help with editing the Wiki]] <br />
*[[Article_maintenance|Article Maintenance]]<br />
*[[Articles for deletion]] <br />
*[[Making requests|Making Requests]]<br />
*[[Special:WantedPages|Missing pages]] <br />
*[[Special:WantedCategories|Missing categories]] <br />
*[[:Category:All_pages_needing_cleanup|Pages needing a cleanup]] <br />
|}<br />
|-<br />
|colspan="4"|<br />
{{Languages|Main_Page}}<br />
|}<br />
__NOTOC__</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Main_Page&diff=29407Main Page2014-02-01T23:29:34Z<p>Josh @ Dreamland: Tones down border-radius</p>
<hr />
<div><br><br />
{|align="center" style="text-align:left; border-spacing: 0px; width:100%; height:300px; background-color:rgba(0,0,0,0);"<br />
|-valign="top"<br />
<br />
| style="width:20px" |<br />
<br />
| style="width:35%" |<br />
<br />
{| cellpadding=0 cellspacing=0 border=0 align=left style="width:100%; height:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|12px 12px 12px 12px}}"<br />
|style="width:300px; height:100px; {{linear-gradient|top|#295A8C, #0A2138}}; color:#FFFFFF; {{border-radius|12px 12px 0px 0px}}"|<br />
[[Image:ENIGMA_banner.png|center|100%|link=]]<br />
|-<br />
| style="background-color:#FFFFFF; height:220px; {{border-radius|0px 0px 12px 12px}}"|<br />
<div style="text-align: center;"><br />
<U>'''Welcome to the ENIGMA Wiki!'''</U> <br><br />
The most comprehensive source of information about the <br><br />
[[ENIGMA|Extensible Non-Interpreted Game Maker Augmentation]].<br />
[[Image:gplv3-127x51.png|center|300px|link=License]]<br />
<nowiki></nowiki>[[Special:Statistics|{{NUMBEROFPAGES}}]] pages and files contributed by our [[Special:Statistics|{{NUMBEROFUSERS}}]] registered users<nowiki></nowiki><br />
</div><br />
|}<br />
<br />
| style="width:20px" |<br />
<br />
| width="60%" |<br />
<br />
{| cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%; height:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|12px 12px 12px 12px}}"<br />
| style="height:20px; {{linear-gradient|top|#295A8C, #0A2138}} color:#FFFFFF; {{border-radius|12px 12px 0 0}}"|<br />
<div style="position: relative; left:5px"><br />
[[Image:Board.png|link=|30px]]<br />
'''Bulletin Board'''<br />
</div><br />
|- valign=top<br />
|align=left style="background-color:#FFFFFF; height:250px; {{border-radius|0px 0px 12px 12px}}"|<br />
{{bulletinboard}}<br />
|}<br />
| style="width:20px" |<br />
|}<br />
<br />
{|align="center" style="text-align:left; border-spacing: 20px; width:100%; height:340px; background-color:rgba(0,0,0,0);"<br />
|-valign="top"<br />
| style="width:25%;"|<br />
<br />
{| cellpadding=0 cellspacing=0 border=0 style="width:100%; height:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|12px 12px 12px 12px}}"<br />
| style="{{linear-gradient|top|#295A8C, #0A2138}} color:#FFFFFF; height:20px; {{border-radius|12px 12px 0px 0px}}"|<br />
<div style="position: relative; left:5px"><br />
[[Image:Info.png|link=|30px]]<br />
'''About ENIGMA'''<br />
</div><br />
|- valign="top"<br />
|align=left style="background-color:#FFFFFF; {{border-radius|0px 0px 12px 12px}}"|<br />
*[[ENIGMA|What is "ENIGMA"?]] <br />
*[[Help|Get help]] <br />
*[[ENIGMA:FAQ|Frequently Asked Questions]]<br />
*[[Classroom Education]]<br />
*[[ENIGMA:Specification|EDL Specifications]] <br />
*[[Install|Installation]] <br />
*[[Troubleshoot|Troubleshooting]]<br />
*[[License|License Agreement]] <br />
|}<br />
<br />
| style="width:25%;"|<br />
<br />
{| cellpadding=0 cellspacing=0 border=0 style="width:100%; height:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|12px 12px 12px 12px}}"<br />
| style="{{linear-gradient|top|#295A8C, #0A2138}} color:#FFFFFF; height:20px; {{border-radius|12px 12px 0px 0px}}"|<br />
<div style="position: relative; left:5px"><br />
[[Image:Rocket.png|link=|30px]]<br />
'''Getting Started'''<br />
</div><br />
|- valign="top"<br />
|align=left style="background-color:#FFFFFF; {{border-radius|0px 0px 12px 12px}}"|<br />
*[[Documentation]] <br />
*[[Tutorials]]<br />
*[[Free Resources]] <br />
*[[Tools]] <br />
*[[Plugins|Plugins and Extensions]] <br />
*[[Useful links|Useful links]]<br />
|}<br />
<br />
|style="width:25%;"|<br />
<br />
{| cellpadding=0 cellspacing=0 border=0 style="width:100%; height:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|12px 12px 12px 12px}}"<br />
| style="{{linear-gradient|top|#295A8C, #0A2138}} color:#FFFFFF; height:20px; {{border-radius|12px 12px 0px 0px}}"|<br />
<div style="position: relative; left:5px"><br />
[[Image:Blueprint.png|link=|30px]]<br />
'''Development Contribution'''<br />
</div><br />
|- valign="top"<br />
|align=left style="background-color:#FFFFFF; {{border-radius|0px 0px 12px 12px}}"|<br />
*[[Todo|What needs done...]]<br />
*[[ENIGMA:Developing|Engine and Compiler]]<br />
*[[Sister Projects:Developing|Sister Projects]]<br />
*[[Translating]]<br />
*[[Suggestions]] <br />
*[[Bug reporting]] <br />
|}<br />
<br />
|style="width:25%;"|<br />
<br />
{| cellpadding=0 cellspacing=0 border=0 style="width:100%; height:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|12px 12px 12px 12px}}"<br />
| style="{{linear-gradient|top|#295A8C, #0A2138}} color:#FFFFFF; height:20px; {{border-radius|12px 12px 0px 0px}}"|<br />
<div style="position: relative; left:5px"><br />
[[Image:Contwiki.png|link=|30px]]<br />
'''Contributing to the Wiki'''<br />
</div><br />
|- valign="top"<br />
|align=left style="background-color:#FFFFFF; {{border-radius|0px 0px 12px 12px}}"|<br />
*[[Contribution Guidelines]] <br />
*[[MediaWiki help|Help with editing the Wiki]] <br />
*[[Article_maintenance|Article Maintenance]]<br />
*[[Articles for deletion]] <br />
*[[Making requests|Making Requests]]<br />
*[[Special:WantedPages|Missing pages]] <br />
*[[Special:WantedCategories|Missing categories]] <br />
*[[:Category:All_pages_needing_cleanup|Pages needing a cleanup]] <br />
|}<br />
|-<br />
|colspan="4"|<br />
{{Languages|Main_Page}}<br />
|}<br />
__NOTOC__</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Main_Page&diff=29406Main Page2014-02-01T23:26:09Z<p>Josh @ Dreamland: </p>
<hr />
<div><br><br />
{|align="center" style="text-align:left; border-spacing: 0px; width:100%; height:300px; background-color:rgba(0,0,0,0);"<br />
|-valign="top"<br />
<br />
| style="width:20px" |<br />
<br />
| style="width:35%" |<br />
<br />
{| cellpadding=0 cellspacing=0 border=0 align=left style="width:100%; height:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|16px 16px 16px 16px}}"<br />
|style="width:300px; height:100px; {{linear-gradient|top|#295A8C, #0A2138}}; color:#FFFFFF; {{border-radius|16px 16px 0px 0px}}"|<br />
[[Image:ENIGMA_banner.png|center|100%|link=]]<br />
|-<br />
| style="background-color:#FFFFFF; height:220px; {{border-radius|0px 0px 16px 16px}}"|<br />
<div style="text-align: center;"><br />
<U>'''Welcome to the ENIGMA Wiki!'''</U> <br><br />
The most comprehensive source of information about the <br><br />
[[ENIGMA|Extensible Non-Interpreted Game Maker Augmentation]].<br />
[[Image:gplv3-127x51.png|center|300px|link=License]]<br />
<nowiki></nowiki>[[Special:Statistics|{{NUMBEROFPAGES}}]] pages and files contributed by our [[Special:Statistics|{{NUMBEROFUSERS}}]] registered users<nowiki></nowiki><br />
</div><br />
|}<br />
<br />
| style="width:20px" |<br />
<br />
| width="60%" |<br />
<br />
{| cellpadding=3.5 cellspacing=0 border=0 align=right style="width:100%; height:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|16px 16px 16px 16px}}"<br />
| style="height:20px; {{linear-gradient|top|#295A8C, #0A2138}} color:#FFFFFF; {{border-radius|16px 16px 0 0}}"|<br />
<div style="position: relative; left:5px"><br />
[[Image:Board.png|link=|30px]]<br />
'''Bulletin Board'''<br />
</div><br />
|- valign=top<br />
|align=left style="background-color:#FFFFFF; height:250px; {{border-radius|0px 0px 2px 2px}}"|<br />
{{bulletinboard}}<br />
|}<br />
| style="width:20px" |<br />
|}<br />
<br />
{|align="center" style="text-align:left; border-spacing: 20px; width:100%; height:340px; background-color:rgba(0,0,0,0);"<br />
|-valign="top"<br />
| style="width:25%;"|<br />
<br />
{| cellpadding=0 cellspacing=0 border=0 style="width:100%; height:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|16px 16px 16px 16px}}"<br />
| style="{{linear-gradient|top|#295A8C, #0A2138}} color:#FFFFFF; height:20px; {{border-radius|16px 16px 0px 0px}}"|<br />
<div style="position: relative; left:5px"><br />
[[Image:Info.png|link=|30px]]<br />
'''About ENIGMA'''<br />
</div><br />
|- valign="top"<br />
|align=left style="background-color:#FFFFFF; {{border-radius|0px 0px 16px 16px}}"|<br />
*[[ENIGMA|What is "ENIGMA"?]] <br />
*[[Help|Get help]] <br />
*[[ENIGMA:FAQ|Frequently Asked Questions]]<br />
*[[Classroom Education]]<br />
*[[ENIGMA:Specification|EDL Specifications]] <br />
*[[Install|Installation]] <br />
*[[Troubleshoot|Troubleshooting]]<br />
*[[License|License Agreement]] <br />
|}<br />
<br />
| style="width:25%;"|<br />
<br />
{| cellpadding=0 cellspacing=0 border=0 style="width:100%; height:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|16px 16px 16px 16px}}"<br />
| style="{{linear-gradient|top|#295A8C, #0A2138}} color:#FFFFFF; height:20px; {{border-radius|16px 16px 0px 0px}}"|<br />
<div style="position: relative; left:5px"><br />
[[Image:Rocket.png|link=|30px]]<br />
'''Getting Started'''<br />
</div><br />
|- valign="top"<br />
|align=left style="background-color:#FFFFFF; {{border-radius|0px 0px 16px 16px}}"|<br />
*[[Documentation]] <br />
*[[Tutorials]]<br />
*[[Free Resources]] <br />
*[[Tools]] <br />
*[[Plugins|Plugins and Extensions]] <br />
*[[Useful links|Useful links]]<br />
|}<br />
<br />
|style="width:25%;"|<br />
<br />
{| cellpadding=0 cellspacing=0 border=0 style="width:100%; height:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|16px 16px 16px 16px}}"<br />
| style="{{linear-gradient|top|#295A8C, #0A2138}} color:#FFFFFF; height:20px; {{border-radius|16px 16px 0px 0px}}"|<br />
<div style="position: relative; left:5px"><br />
[[Image:Blueprint.png|link=|30px]]<br />
'''Development Contribution'''<br />
</div><br />
|- valign="top"<br />
|align=left style="background-color:#FFFFFF; {{border-radius|0px 0px 16px 16px}}"|<br />
*[[Todo|What needs done...]]<br />
*[[ENIGMA:Developing|Engine and Compiler]]<br />
*[[Sister Projects:Developing|Sister Projects]]<br />
*[[Translating]]<br />
*[[Suggestions]] <br />
*[[Bug reporting]] <br />
|}<br />
<br />
|style="width:25%;"|<br />
<br />
{| cellpadding=0 cellspacing=0 border=0 style="width:100%; height:100%; {{box-shadow|0.1em|0.1em|1em|rgba(0,0,0,0.75)}}; {{border-radius|16px 16px 16px 16px}}"<br />
| style="{{linear-gradient|top|#295A8C, #0A2138}} color:#FFFFFF; height:20px; {{border-radius|16px 16px 0px 0px}}"|<br />
<div style="position: relative; left:5px"><br />
[[Image:Contwiki.png|link=|30px]]<br />
'''Contributing to the Wiki'''<br />
</div><br />
|- valign="top"<br />
|align=left style="background-color:#FFFFFF; {{border-radius|0px 0px 16px 16px}}"|<br />
*[[Contribution Guidelines]] <br />
*[[MediaWiki help|Help with editing the Wiki]] <br />
*[[Article_maintenance|Article Maintenance]]<br />
*[[Articles for deletion]] <br />
*[[Making requests|Making Requests]]<br />
*[[Special:WantedPages|Missing pages]] <br />
*[[Special:WantedCategories|Missing categories]] <br />
*[[:Category:All_pages_needing_cleanup|Pages needing a cleanup]] <br />
|}<br />
|-<br />
|colspan="4"|<br />
{{Languages|Main_Page}}<br />
|}<br />
__NOTOC__</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Parakeet&diff=29404Parakeet2014-02-01T23:23:21Z<p>Josh @ Dreamland: </p>
<hr />
<div>[[Parakeet]] is a proprietary alternative editor for [[Game Maker]]: Studio, on Windows.<br />
<br />
An ENIGMA plug-in for Parakeet has not been created and is not planned.<br />
<br />
== See Also ==<br />
* [http://parakeet-ide.org/ Official Parakeet Website]</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Coding_conventions&diff=29190Coding conventions2014-01-19T22:58:44Z<p>Josh @ Dreamland: Created page with "I am not really picky about what your code looks like in terms of indentation. Traditionally, I use two spaces for indentation, I do not use braces unless required, and I place b..."</p>
<hr />
<div>I am not really picky about what your code looks like in terms of indentation. Traditionally, I use two spaces for indentation, I do not use braces unless required, and I place braces on their own unindented lines unless the code in the braces is three lines or fewer, in which case I put the opening brace after the <code>if()</code>, or other statement. Everyone else does the exact opposite of this, so pick your own style and you'll fit right in.<br />
<br />
== Types ==<br />
What I ''am'' concerned about and have been seeing happen a lot, lately, are function and variable type confusion. I'll be succinct, and use bullet points.<br />
* '''Always use the type which requires the fewest casts in your code.''' If your function needs a double, take double. If your function needs a float, take float. If your function works for either, Robert has created scalar types for you to choose from based on system. For example, graphics floating point types should default to <code>gs_scalar</code>. Look around the code; chances are, the correct scalar type is used somewhere.<br />
* '''Never use var or variant.''' This is the rule. The ''exception'' to this rule is, you may use variant when you need to accept either a string or real type, and you may use var if you need tot accept an array of such objects. If you need to accept an array of only reals or only strings, go ahead and use var for now, as ENIGMA does not ''yet'' have an array type.<br />
<br />
== Naming convention ==<br />
Another point is naming convention. I am not the underscore-case nazi. I don't care what you name your own variables. Our current convention is <code>snake_case</code> for basically everything. This is violated on arbitrary occasion without repercussion. However, we are running a user-friendly API here, and in user space, functions are ''expected'' to use a consistent convention.<br />
<br />
This convention is, again, snake case, with functions partitioned using C namespaces.<br />
{| class="wikitable"<br />
|- <br />
| <code>draw_</code> <br />
| This is where primarily 2-Dimensional, but also dimensionality-insensitive drawing functions go.<br />
|- <br />
| <code>d3d_</code> <br />
| This is where functions that specifically concern drawing in 3D go. Some of these functions are renamed versions of functions from <code>draw_</code>, offered for the convenience of users searching for functions.<br />
|- <br />
| <code>sound_</code> <br />
| This is where functions go which concern sound resources. There are functions to play sounds and stop sounds from playing by resource ID, but the idea is that functions here specifically concern tangible sound resources.<br />
|- <br />
| <code>audio_</code> <br />
| This is where all other manner of audio functions go, as related to working with channels and playing instances of sounds.<br />
|- <br />
| <code>display_</code> <br />
| This is where you will find functions concerning the entire desktop's display, which may contain many windows not related to your program.<br />
|- <br />
| <code>window_</code> <br />
| This is where you will find functions that concern the window, as managed by the window server, desktop environment, and generically, the window manager.<br />
|- <br />
| <code>screen_</code> <br />
| This is where you will find functions that concern your program's drawing screen; that is, the region inside the window to which your program renders.<br />
|- <br />
| <code>instance_</code> <br />
| These functions concern object instances in general. Finding instances, iterating instances, creating and destroying instances.<br />
|- <br />
| <code>collision_</code> <br />
| These functions concern testing for collisions with instances. They work with not only a position for instances, but also a physical shape. They do not, in general, incorporate dynamics.<br />
|}<br />
<br />
This is not a comprehensive list, but a general list of namespaces which seem to run together or are otherwise not obvious.</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Install:Linux&diff=28035Install:Linux2013-12-05T02:01:29Z<p>Josh @ Dreamland: </p>
<hr />
<div>[[File:Linux.png|thumb|200px|The official logo of Linux based operating systems and environments.]]<br />
Currently no Linux packages have been built, you can check-out the git repo manually and compile and install from source code.<br />
<br />
== Source Code ==<br />
* '''Prerequisites:''' GNU GCC G++ Compiler, [[Revision control#Git|Git Client]], [[Java]]<br />
* '''Install dependencies''':<br />
sudo apt-get install g++ zlib1g-dev libglu1-mesa-dev libalure-dev libvorbisfile3 libvorbis-dev libdumb1-dev<br />
* '''Check-out the ENIGMA repo:''' Currently no Linux packages have been built. Instead, you should check out from the [[Install:Git|Repository]].<br />
<br />
== Binaries ==<br />
You will also need the LateralGM and ENIGMA plugin binaries. You can install those automatically by invoking python on install.py, ie,<br />
python install.py<br />
Or you can obtain them manually per [[Install:Extra_Packages|these instructions]].<br />
<br />
{{DISPLAYTITLE:Linux Installation}}</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Install:Linux&diff=28034Install:Linux2013-12-05T02:01:10Z<p>Josh @ Dreamland: </p>
<hr />
<div>[[File:Linux.png|thumb|200px|The official logo of Linux based operating systems and environments.]]<br />
Currently no Linux packages have been built, you can check-out the git repo manually and compile and install from source code.<br />
<br />
== Source Code ==<br />
* '''Prerequisites:''' GNU GCC G++ Compiler, [[Revision control#Git|Git Client]], [[Java]]<br />
* '''Install dependencies''':<br />
<code>sudo apt-get install g++ zlib1g-dev libglu1-mesa-dev libalure-dev libvorbisfile3 libvorbis-dev libdumb1-dev</code><br />
* '''Check-out the ENIGMA repo:''' Currently no Linux packages have been built. Instead, you should check out from the [[Install:Git|Repository]].<br />
<br />
== Binaries ==<br />
You will also need the LateralGM and ENIGMA plugin binaries. You can install those automatically by invoking python on install.py, ie,<br />
<code>python install.py</code><br />
Or you can obtain them manually per [[Install:Extra_Packages|these instructions]].<br />
<br />
{{DISPLAYTITLE:Linux Installation}}</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=User:Sirmxe&diff=27686User:Sirmxe2013-11-03T23:15:58Z<p>Josh @ Dreamland: Redirected page to User:MahFreenAmeh</p>
<hr />
<div>#redirect [[User:MahFreenAmeh]]</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=IRC&diff=27685IRC2013-11-03T23:15:30Z<p>Josh @ Dreamland: </p>
<hr />
<div>IRC is short for Internet Relay Chat, and is a medium of instant communication in the form of chat. You connect to an IRC server, and then select one or more chat rooms, called channels, to join. In each of these channels you will usually find many people. Anybody in that channel may then post a message to the channel and it will instantly be shared with all the other members of the channel. As such, it's a much faster means of communication than, say, forums, and you are more likely to find someone with an answer than asking one person at a time. Additionally, IRC offers a way to have a private 1-on-1 conversation with an individual user on the server, which is usually used when two people wish to communicate more without filling up the channel with their chat.<br />
<br />
Please also be aware that not everyone on the channel may have an answer or may even be presently watching the channel, so you may not get an answer right away. It may help to clarify your question, or re-ask your question periodically if it gets lost among other messages.<br />
<br />
* DO NOT flood the channel by rapidly posting your question over and over again. Only one person's ever done this; kicking him is a sport, and it's always in season.<br />
* DO keep your messages relatively short, clear, and somewhat on-topic.<br />
* DO NOT private message individual channel members without their prior consent, with exception of channel operators.<br />
* DO prepend your messages with the name of the person that your message is primarily directed to, such as a person who asks for a clarification. Most chat clients handle this by highlighting lines with a person's own name on them, so that those lines stand out more.<br />
* DO NOT include the names of persons that your message does not involve. This is tantamount to waking a group of slumbering bears. Although it might wake them up, it will also make them grumpy.<br />
<br />
A lot of people sign on and ask, "Is anyone here?", then part a few minutes later. Channel members, especially developers, try to keep busy. As such, we do not always check the channel frequently enough to see such messages. If you have something to say to someone, address them so their client gets their attention.<br />
<br />
== ENIGMA's IRC ==<br />
* Server: freenode.net<br />
* Channel: #enigmaengine (The # sign is usually mandatory. On freenode, # is for official channels, and ## is for unofficial)<br />
* Description: The official ENIGMA IRC channel, for any discussion remotely relating to enigma. Devs frequent the channel.<br />
* Webchat: If you don't have a suitable IRC client, freenode provides a web interface, [http://webchat.freenode.net/?channels=enigma&uio=d4 freenode webchat]<br />
* Bots:<br />
** '''ChanServ''' is an IRC service bot that provides administrative commands to channel owners. He may be toggled as visible or invisible in the channel; we've chosen visible to remind users that the channel is an official channel and administrative functions are at our fingertips should anything get out of hand. ChanServ never says anything in the channel.<br />
** '''EnigmaBot''' is a resident bot, maintained by [[User:IsmAvatar]] and written in Java. Commands are prefixed by either an exclamation mark (!help) or the bot's name (EnigmaBot: help), or through private message (no prefixing necessary then) and are usually business-related. EnigmaBot also possesses a set of C++ processing commands.<br />
** '''Thundercleese''' is another resident bot, maintained by [[User:sirmxe]] and [[User:IsmAvatar]] and written in Perl. He is responsible for logging the channel and reporting when someone commits to the repositories. Commands are prefixed by an at sign (@help, @logs) and are usually amusement-related.<br />
** '''dickkkk''' is an unofficial bot, maintained by [[User:HUMPHREY]], written in Java, and loosely based off of EnigmaBot. Commands are prefixed by the dollar sign ($help) and are usually miscellaneous, like searching logs for a quote.<br />
** '''JoshDreamland''' usually shares his account with a javascript processor, accessed by prefixing some javascript code with <code>js: </code>, for example: <code>js: 1+1</code> will cause Josh to reply <code>2</code>.</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Template:Function:Unimplemented&diff=25854Template:Function:Unimplemented2013-09-02T04:01:34Z<p>Josh @ Dreamland: </p>
<hr />
<div><includeonly>[[Category:Function:Unimplemented]] Note: This function may be unimplemented on some platforms.</includeonly><br />
<noinclude>{{Documentation}}</noinclude></div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Keyboard_key_press&diff=25853Keyboard key press2013-09-02T04:01:15Z<p>Josh @ Dreamland: </p>
<hr />
<div>{{FuncTitle|keyboard_key_press|key}}<br />
== Description ==<br />
Simulates a key press of the given key.<br />
<br />
{{Function:Unimplemented}}<br />
<br />
== Parameters ==<br />
{| class="funcpars"<br />
! Parameter !! Description<br />
|-<br />
| key || The keyboard constant of the key to simulate.<br />
|}<br />
<br />
== Return Values ==<br />
'''void''': This function does not return anything.<br />
<br />
== Example Call ==<br />
<syntaxhighlight lang="edl"><br />
// Simulates key strokes to type the word "Code"<br />
keyboard_key_press(vk_shift);<br />
keyboard_key_press(ord('C'));<br />
keyboard_key_release(vk_shift);<br />
keyboard_key_press(ord('O'));<br />
keyboard_key_press(ord('D'));<br />
keyboard_key_press(ord('E'));<br />
</syntaxhighlight><br />
<br />
__NOTOC__<br />
{{Function:GM}}</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Keyboard_key_press&diff=25852Keyboard key press2013-09-02T04:00:02Z<p>Josh @ Dreamland: </p>
<hr />
<div>{{FuncTitle|keyboard_key_press|key}}<br />
== Description ==<br />
Simulates a key press of the given key.<br />
{{Function:Unimplemented}}<br />
<br />
== Parameters ==<br />
{| class="funcpars"<br />
! Parameter !! Description<br />
|-<br />
| key || keyboard constant of the key to simulate.<br />
|}<br />
<br />
== Return Values ==<br />
'''void''': This function does not return anything.<br />
<br />
== Example Call ==<br />
<syntaxhighlight lang="edl"><br />
keyboard_key_press(vk_shift);<br />
keyboard_key_press(ord('C'));<br />
keyboard_key_release(vk_shift);<br />
keyboard_key_press(ord('O'));<br />
keyboard_key_press(ord('D'));<br />
keyboard_key_press(ord('E'));<br />
</syntaxhighlight><br />
<br />
__NOTOC__<br />
{{Function:GM}}</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Template:Function:Unimplemented&diff=25851Template:Function:Unimplemented2013-09-02T03:57:56Z<p>Josh @ Dreamland: Created page with "<includeonly>Category:Function:UnimplementedNote: This function may be unimplemented on some platforms.</includeonly> <noinclude>{{Documentation}}</noinclude>"</p>
<hr />
<div><includeonly>[[Category:Function:Unimplemented]]Note: This function may be unimplemented on some platforms.</includeonly><br />
<noinclude>{{Documentation}}</noinclude></div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Installing&diff=25692Installing2013-08-23T17:28:05Z<p>Josh @ Dreamland: Redirected page to Install</p>
<hr />
<div>#redirect [[Install]]</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Alarm&diff=25606Alarm2013-08-18T12:17:56Z<p>Josh @ Dreamland: moved Alarm to Alarm event</p>
<hr />
<div>#REDIRECT [[Alarm event]]</div>Josh @ Dreamlandhttps://enigma-dev.org/docs/wiki/index.php?title=Alarm_event&diff=25605Alarm event2013-08-18T12:17:56Z<p>Josh @ Dreamland: moved Alarm to Alarm event</p>
<hr />
<div>{{wip|}}<br />
An alarm is a variable used to trigger an [[event]] after a set period of time has elapsed. Alarms are very much like timers. Once you create an alarm, it will begin counting down. When it reaches zero, the corresponding alarm event will be triggered.<br />
=How to create an alarm=<br />
To have a working alarm, you will need two things:<br />
# An alarm event (containing the actions to be performed when the alarm is triggered)<br />
# An alarm action (creating the alarm, and starting its countdown)<br />
==Creating an alarm event==<br />
# Open LateralGM<br />
# Create or open an object<br />
# Click the event selector icon ([[File:event_selector.png]]) at the top right hand of the screen<br />
# Click and drag one of the alarms into the Events column for that object. As you can see, you are provided with up to eleven different alarms per object.<br />
# Add the actions and/or code you wish to execute inside the Actions column for that alarm<br />
==Creating an alarm action==<br />
Below is a table comparing the different ways of creating an alarm action. Which method you use depends on which development approach (or type) you are using.<br />
<br />
{| border="1" class="wikitable"<br />
! Type<br />
! Method<br />
|-<br />
! [[Drag and drop|D&D]]<br />
|<br />
# From the menu Main2 inside the Actions column, drag and drop the clock action to the place you want the event to be triggered<br />
# A menu will now appear - fill it out and press save. ''For help in filling out the form, see [[Action set alarm]]''<br />
<br />
<br />
|-<br />
! GML<br />
|<br />
''Unfinished''<br />
<br />
|-<br />
! C<br />
|<br />
''Unfinished''<br />
<br />
|}<br />
<br />
=Modifying an alarm=<br />
==Increasing the time on an alarm==<br />
If you wish to delay an alarm event from being triggered, you can add an alarm action as follows:<br />
<br />
{| border="1" class="wikitable"<br />
! Type<br />
! Method<br />
|-<br />
! D&D<br />
|<br />
# Add an alarm action<br />
# In 'number of steps', add the amount of time you want to add to the alarm's countdown<br />
# Check the box '[[Relative and absolute|Relative]]'.<br />
<br />
|-<br />
! GML<br />
|<br />
''Unfinished''<br />
<br />
|-<br />
! C<br />
|<br />
''Unfinished''<br />
<br />
|}<br />
==Temporarily turning an alarm off==<br />
There are times when you would like to pause an alarm's countdown, without deleting the alarm. This is achieved as follows:<br />
{| border="1" class="wikitable"<br />
! Type<br />
! Method<br />
|-<br />
! D&D<br />
|<br />
''Unfinished''<br />
<br />
|-<br />
! GML<br />
|<br />
''Unfinished''<br />
<br />
|-<br />
! C<br />
|<br />
''Unfinished''<br />
<br />
|}</div>Josh @ Dreamland