Install:Windows: Difference between revisions

From ENIGMA
Jump to navigation Jump to search
No edit summary
(207 intermediate revisions by 8 users not shown)
Line 1: Line 1:
[[File:Windows.png|thumb|200px|The official logo of Windows based operating systems and environments.]]
[[File:Windows.png|thumb|200px|The official logo of Windows based operating systems and environments.]]
* '''Download:''' https://www.dropbox.com/s/nlag2evgiiis476/ENIGMA%20Portable.exe
* '''Size:''' 73.82 MB
* '''Last Updated:''' 1/19/2014
* '''GCC Version:''' 4.8.2


This file a self-extracting 7z executable which we created for high convenience and portability. It's an all-inclusive zip and provides you with everything you need to run ENIGMA.
=== Installing ENIGMA using MSYS2 ===
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 and is the current recommended way to install ENIGMA.


Once the file is extracted just click ENIGMA.exe inside the folder and it will run ENIGMA/LGM. If you want to create a desktop shortcut right-click on ENIGMA.exe and goto Send To->Desktop. The first time you run ENIGMA.exe it will automatically download the ENIGMA repo for you before running LGM so wait for the installation to finish.
==== - Step 1: Install MSYS2 ====
* First thing, you will want to download and install MSYS2 by following these instructions ('''all the way to step 8'''): http://www.msys2.org/
* '''(make sure to download the 86_64 version if you are on 64-bit Windows)!'''
: '''NOTE:''' The x86_64 download button will support compilation of both 32-bit and 64-bit games so you can download either if you're on a 32-bit system. When it asks you to reopen Msys is will likely be located inside C:/msys64 or C:/msys32 and you should open msys.exe


That should be it!
==== - Step 2: Install Dependencies ====
* Go into your msys folder (likely found in C:/) and open <code>mingw64.exe</code> if you're on 64-bit Windows or <code>mingw32.exe</code> if you're on 32-bit Windows. You can now 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.


''Note: You need to run the self-extracting zip and the enigma.exe with administrative privileges before and after setup so the application can access AppData to output temporary build files, simply right click the file and select "Run as Administrator" on Windows Vista or later.''
: '''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.


: '''NOTE:''' If you notice it says <span style="color:red">error:</span> during the installation don't worry. This just means that the default download location for that package was unavailable but if you look you should see that it has automatically switched to download it from a mirror location instead. 


== Source Code ==
:- For 64 bit Windows run this:
For those looking for a something a little more hands on you can compile and install from source code as well.
: <syntaxhighlight lang="bash">pacboy -S git: make: gcc:x boost:x protobuf:x libpng:x rapidjson:x pugixml:x yaml-cpp:x openal:x libmodplug:x libepoxy:x SDL2: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>
:- Or for 32 bit Windows 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 libmodplug:i libepoxy:i SDL2: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>
:- Misc packages you may optionally install for some extensions include: <syntaxhighlight lang="bash">libgme sfml bullet gtk2</syntaxhighlight>
* '''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.
:- https://www.microsoft.com/en-us/download/details.aspx?id=35


* '''Install MinGW (installer):''' To install: download the MinGW64 compiler toolkit installer: http://www.mingw.org/wiki/InstallationHOWTOforMinGW You may choose either regular MinGW or MinGW 64bit and 32bit either are fine, and be sure to leave the install directory to the default path. There are also many MinGW installers available on the internet and it also comes with CodeBlocks, we do not support the TDM installer however, just due to their general poor quality and missing backwards linking.
* '''NOTE:''' If you want to use OpenAL for audio, instead of DirectSound, you'll want to make sure you have "libopenal-1.dll" in your game's working directory.
:- https://enigma-dev.org/edc/games.php?game=97


* '''Check-out the ENIGMA repo:''' Once you have git set-up you just need to check-out from the [[Install:Git|Repository]]. If you don't have (or know how to use) git but want to test still then you can alternatively download the enigma git repo as a zip from here: https://github.com/enigma-dev/enigma-dev/archive/master.zip (note though that by downloading). Make sure the repo is placed somewhere in your C:/ drive (like program files or user documents or where-ever) pretty much anywhere -except inside the MinGW folder!
==== - Step 3: Download ENIGMA ====
* Use the change directory command (<code>cd path/to/directory</code>) to change MSYS2 to the directory you want ENIGMA installed in.
* Then simply run this command: <code>git clone https://github.com/enigma-dev/enigma-dev.git</code>
* Change directories into the cloned enigma-dev folder now using <code>cd enigma-dev</code>
* 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.
* '''Optional:''' You can then run <code>make emake</code> if you also intend to use the [[CLI]] for building games.


* '''Download the Windows dependencies (zip):''' Finally download the Windows dependencies from here: https://dl.dropboxusercontent.com/u/21117924/WinPatch_28_08_2013.zip (4.77mb's) and extract it. Then just copy all the files in this folder into the enigma-dev folder which was checked-out from the git repo. Now run "ENIGMA.exe", and you should be good to go, you may need to right click and run with administrative privileges the first time. If you want to make a desktop icon then right-click on ENIGMA.exe and send to desktop. It should compile and place a file "compileEGMf.dll" in the same folder as the .exe. If it fails then do manual compilation.
==== - Step 4: Configure an IDE ====
* Finally, you will want [[LateralGM]] for editing games which you can obtain by running <code>./install.sh</code> from your MSYS2 terminal.
* 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);
:- 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)
:- Edit the file <code>C:\msys64\etc\profile</code> and add the following <syntaxhighlight lang="bash">if [[ $MSYSTEM = "MINGW32" ]] && [[ $(arch) = "x86_64" ]]; then
  export PATH=/c/Program\ Files\ \(x86\)/Java/jre1.8.0_181/bin:$PATH
else
  export PATH=/c/Program\ Files/Java/jre1.8.0_181/bin:$PATH
fi</syntaxhighlight>
:- 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.
:- '''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.
* Once you have LateralGM setup you can simply run it using: <code>java -jar lateralgm.jar</code>.
: '''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.
 
 
=== Troubleshooting ===
 
==== - Cannot find libcompileEGMf ====
 
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.
 
If the file actually doesn't exist, there was probably a build error.
 
==== - Compiler build errors ====
 
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.
* 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.
* 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.
 
==== - The parser isn't happy ====
 
<code>ERROR in parsing engine file: The parser isn't happy. Don't worry, it's never happy.</code>
 
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:
 
<syntaxhighlight lang="text">Creating swap.
Dumping whiteSpace definitions...
Opening ENIGMA for parse...
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
ERROR(__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1,3,26): Expected return type for template function at this point
ERROR(__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2,3,19): Expected return type for template function at this point
...
ERROR(__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3,3,19): Expected return type for template function at this point
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,44,11): Expected namespace name here.
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,44,11): Premature abort caused by '{' token here; relaunching
</syntaxhighlight>
 
There is nothing to worry about, above. But some errors are more erroneous than others:
 
<syntaxhighlight lang="text">
Creating swap.
Dumping whiteSpace definitions...
Opening ENIGMA for parse...
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,22,34): Could not find map
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,23,33): Could not find vector
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,24,29): Could not find cstring
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,25,19): Could not find cstddef
</syntaxhighlight>
 
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.
 
[[File:LateralGM-Codegen-Directory-Options.png|thumb|right|How to change your export directories in LateralGM (if your username isn't Unix-friendly).]]
 
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.]
 
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.
 
==== - Engine build errors ====
 
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]].
 
==== - Antiviruses ====
 
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.


* '''Manual compilation:''' In cases when the .dll is not compiled or the .exe is out of date, then it is recommend to recompile both of them. To do this, you must have a valid MinGW installation (from the first step), open bash (git-bash or maybe msys/cygwin would work as well), go to the enigma-dev folder and type "mingw32-make" or just "make". It should compile the .dll. To recompile .exe you must go into enigma-dev\CompilerSource\stupidity-buffer and type "mingw32-make" or just "make". This will create the .exe in this folder that then needs to be copied into the main directory. The .exe can be compiled from cmd (windows console), while the .dll requires bash.


{{DISPLAYTITLE:Windows Installation}}
{{DISPLAYTITLE:Windows Installation}}

Revision as of 19:45, 28 June 2019

The official logo of Windows based operating systems and environments.

Installing ENIGMA using MSYS2

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 and is the current recommended way to install ENIGMA.

- Step 1: Install MSYS2

  • First thing, you will want to download and install MSYS2 by following these instructions (all the way to step 8): http://www.msys2.org/
  • (make sure to download the 86_64 version if you are on 64-bit Windows)!
NOTE: The x86_64 download button will support compilation of both 32-bit and 64-bit games so you can download either if you're on a 32-bit system. When it asks you to reopen Msys is will likely be located inside C:/msys64 or C:/msys32 and you should open msys.exe

- Step 2: Install Dependencies

  • Go into your msys folder (likely found in C:/) and open mingw64.exe if you're on 64-bit Windows or mingw32.exe if you're on 32-bit Windows. You can now 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.
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.
NOTE: If you notice it says error: during the installation don't worry. This just means that the default download location for that package was unavailable but if you look you should see that it has automatically switched to download it from a mirror location instead.
- For 64 bit Windows run this:
pacboy -S git: make: gcc:x boost:x protobuf:x libpng:x rapidjson:x pugixml:x yaml-cpp:x openal:x libmodplug:x libepoxy:x SDL2: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
- Or for 32 bit Windows run:
pacboy -S git: make: gcc:i boost:i protobuf:i libpng:i rapidjson:i pugixml:i yaml-cpp:i openal:i libmodplug:i libepoxy:i SDL2: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
- Misc packages you may optionally install for some extensions include:
libgme sfml bullet gtk2
  • 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.
- https://www.microsoft.com/en-us/download/details.aspx?id=35
  • NOTE: If you want to use OpenAL for audio, instead of DirectSound, you'll want to make sure you have "libopenal-1.dll" in your game's working directory.
- https://enigma-dev.org/edc/games.php?game=97

- Step 3: Download ENIGMA

  • Use the change directory command (cd path/to/directory) to change MSYS2 to the directory you want ENIGMA installed in.
  • Then simply run this command: git clone https://github.com/enigma-dev/enigma-dev.git
  • Change directories into the cloned enigma-dev folder now using cd enigma-dev
  • Now simply run make to build the compiler and its backend into compileEGMf.dll, which is used by the CLI and any IDE for ENIGMA.
  • Optional: You can then run make emake if you also intend to use the CLI for building games.

- Step 4: Configure an IDE

  • Finally, you will want LateralGM for editing games which you can obtain by running ./install.sh from your MSYS2 terminal.
  • 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);
- 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)
- Edit the file C:\msys64\etc\profile and add the following
if [[ $MSYSTEM = "MINGW32" ]] && [[ $(arch) = "x86_64" ]]; then
  export PATH=/c/Program\ Files\ \(x86\)/Java/jre1.8.0_181/bin:$PATH
else
  export PATH=/c/Program\ Files/Java/jre1.8.0_181/bin:$PATH
fi
- 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.
- 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.
  • Once you have LateralGM setup you can simply run it using: java -jar lateralgm.jar.
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.


Troubleshooting

- Cannot find libcompileEGMf

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.

If the file actually doesn't exist, there was probably a build error.

- Compiler build errors

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.

  • Did you modify files locally? You can check by issuing git status 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.
  • 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 make all from within its directory.

- The parser isn't happy

ERROR in parsing engine file: The parser isn't happy. Don't worry, it's never happy.

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:

Creating swap.
Dumping whiteSpace definitions...
Opening ENIGMA for parse...
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
ERROR(__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1,3,26): Expected return type for template function at this point
ERROR(__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2,3,19): Expected return type for template function at this point
...
ERROR(__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3,3,19): Expected return type for template function at this point
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,44,11): Expected namespace name here.
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,44,11): Premature abort caused by '{' token here; relaunching

There is nothing to worry about, above. But some errors are more erroneous than others:

Creating swap.
Dumping whiteSpace definitions...
Opening ENIGMA for parse...
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,22,34): Could not find map
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,23,33): Could not find vector
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,24,29): Could not find cstring
ERROR(ENIGMAsystem/SHELL/Universal_System/lua_table.h,25,19): Could not find cstddef

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.

How to change your export directories in LateralGM (if your username isn't Unix-friendly).

A likely cause of these errors on Windows is, unfortunately, your username. On Windows, your fully-decorated username appears in most paths, and C:/Users/↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵⍝Conway's "Game of Life"/AppData/ENIGMA/ cannot be used with GNU make, because it contains spaces.

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.

- Engine build errors

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 Forums or GitHub, or more directly over IRC, or Discord.

- Antiviruses

It is possible for antivirus applications to interfere with ENIGMA's installation. For example, 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.