Code Monkey home page Code Monkey logo

enigma-game / enigma Goto Github PK

View Code? Open in Web Editor NEW
128.0 14.0 38.0 121.61 MB

Enigma is a puzzle game inspired by Oxyd on the Atari ST and Rock'n'Roll on the Amiga. The object of the game is to find uncover pairs of identically colored Oxyd stones. Simple? Yes. Easy? Certainly not! Hidden traps, vast mazes, laser beams, and, most of all, countless hairy puzzles usually block your direct way to the Oxyd stones …

License: GNU General Public License v2.0

C 23.01% Objective-C 0.20% Shell 0.56% Lua 5.28% Perl 0.12% C++ 62.61% NSIS 0.56% Makefile 0.65% M4 2.17% TLA 4.36% sed 0.01% XSLT 0.06% Rich Text Format 0.01% CMake 0.41%

enigma's Introduction

About Enigma
============

Enigma is a unique puzzle game, with influences from almost every game
genre.  Your objective is easily explained: you control a small black
marble with your mouse and have to find and uncover all pairs of
identical Oxyd stones in each landscape.  Simple? Yes.  Easy? It would
be, if it weren't for hidden traps, vast mazes, insurmountable
obstacles and innumerable puzzles blocking your direct way to the Oxyd
stones... If you like puzzle games and have a steady hand, Enigma's
more than 1000 original levels will probably keep you busy for hours
on end.

Enigma is developed by a small group of volunteers, and help is always
appreciated.  If you like Enigma and want to contribute to its future,
you are welcome to join us on our development mailing list at

    http://mail.nongnu.org/mailman/listinfo/enigma-devel

or simply send email to 

    [email protected]

Every kind of contribution is welcome, whether it is programming,
documentation, graphics, sound effects, or simply good advice.


The official Enigma homepage can be found at

    http://www.nongnu.org/enigma/

If you have any questions, suggestions, or contributions, feel free to
send email to the mailing list.  Have fun!

    The Enigma Team


Playing Enigma
==============

Please refer to the user manual for instructions on how to play Enigma,
or simply start with the tutorial levels included with the game.


Installation
============

Installation on Windows and Mac OS X is straightforward: Simply download
the appropriate .exe or .dmg file and start it with a double click.

Things get a little more complicated for other operating systems,
please refer to Enigma's download page

       http://www.nongnu.org/enigma/download.html
       
for up-to-date information.  If you are running some kind of Unix system,
you have always the option of compiling Enigma yourself; this is
explained in the next section.

There may or may not be binaries for the Linux distribution of your choice,
and they may or may not work on your computer.  This is not our fault:
packaging a Linux version that works everywhere is almost impossible,
thanks to countless subtle and not-so-subtle differences between each
and every Linux distribution.  Please complain to your vendor if this
bugs you.


Compiling Enigma
================

This section briefly describes how to compile Enigma on a Unix
machine.  If you want to build Enigma on Windows or Mac OS X, please
see the documentation in `doc/README.mingw32' and `doc/README.macosx',
respectively.

For a list of libraries and programs that must be installed to compile
Enigma, please refer to `doc/REQUIREMENTS' for a complete list.

Once you have everything installed, building Enigma is as easy as typing

    ./autogen.sh && ./configure && make && make install

in the enigma directory.


Copying
=======

Enigma is free software.  You may copy and modify it under the terms
of the GNU General Public License, Version 2 or, at your option, any
later version.  For details, please refer to the accompanying
COPYING file.

  Please refer to the ACKNOWLEDGEMENTS file that comes with Enigma for
copyright information and licensing terms of external dependencies and
contributions to this project.

  To my best of our knowledge the included sound effects are either in the
public domain or freely distributable.  We weren't able to pin down the
exact origin of each sound file -- the copyrights of which we are aware
are collected in soundsets/enigma/README.  Please refer to this list
before using the samples in your productions. 

enigma's People

Contributors

alochmann avatar amdmi3 avatar dheck avatar feuermurmel avatar gedgeck avatar gunchleoc avatar h3xx avatar heiko123abc avatar iblech avatar jokker87 avatar kowalski7cc avatar legimet avatar maddthesane avatar mrtarantoga avatar mtrz avatar pmachata avatar quipyowert2 avatar raoulb avatar rleigh-codelibre avatar sidney avatar taemporus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

enigma's Issues

zipios2 incompatibility

zipios ver. 2.0.0 was release five years ago now with a different API. It would be useful to be able to use zipios2 as some distros are no longer shipping zipios 0.1

How to run old level files created with BlackBallEd?

I really love this game and remembered that I created some levels for it in 2005/2006 using the BlackBallEd editor ( http://blackballed.sf.net/ ) which I found on my hard drive.
However, since Enigma 1.0, those levels won't run anymore. They are written in the old LUA format, an example can be found here (had to gzip it for the upload):

level_01.lua.gz

Running "enigma " will cause a segfault when starting the game via the main menu. Also, creating a custom level pack will segfault enigma upon opening the pack inside the game.

Is there any easy conversion method so I can play these levels again?

ScoreManager not using rel2

Compiler warning pointed to rel2 not used in lev/ScoreManager.cc line 624.
Removing it would make the whole section unused thus I guess either I don't get the logic or the underlying issue is in line 627 which should use rel2 (insted of rel1), i.e.

return (rel2 >= TRUSTED_RELEASE) ? score2 : SCORE_UNSOLVED;

Mouse leaving window

SDL 2 works pretty fine, but sometimes I have the issue that the mouse leaves the window.
E.g. "bridge in the gap" or some labyrinth mazes...
If this happens once it happens again more often.

I noticed that after switching windows (i.e. coming back in SDL_WINDOWEVENT_FOCUS_GAINED) the RelativeMouseMode is lost.
Unfortunately no success yet when setting it again....

No graphics on MacOS High Sierra when using .dmg release binary

Using Enigma 1.21 stable release version on MacOS High Sierra, I am not seeing any graphics, only text. Here is an example screenshot:
Image of buggy Enigma 1.21 stable graphics on MacOs High Sierra

Is there a compiled version of the master branch (development version) to test?

EDIT: The homebrew version, installed with brew enigma install works! It is just the downloaded .dmg from the Enigma homepage that exhibits this bug.

Segfault with shoguns and wires

Push two shogun stones, which both are connected with wires on their own, over each other. Then exit Enigma via Shift-ESC (or via game menu). This will result in a segfault right before Enigma exiting. Settings are not saved.

Pushing shogun stones over each other changes their identities (as stones are destroyed and then a combined stone is created). This probably interferes with the wires.

This can be tested with "Shogun Connection II".

Number of search results depends on sorting

Using the search without any string entered and all default values I see 3323 levels.
Changing the sorting changes the number.
For None, Random: 3323, Difficulty 1497, Average rating 2506 results.

I assume that this is an effect of missing rating / difficulty. Nevertheless it looks strange that the number of search results changes.
Average rating >=0.1 gives 2506 results, thus 0 should be interpreted as 'no rating'.
Difficulty >=1 gives 1497 results, thus 0 is interpreted as no value set.

When you die, you may respawn in a solid block

In the level Laser Spiral by Jacob Scott (enigma__ii/duffy03_2.xml), I encountered a bug where you can get stuck.

If you push the pushable mirror block to your spawn point, then die due to the laser, you will try to respawn into the mirror, but you're stuck and cannot move. If you try to move, you will see particles at the mirror, but that's it. You have to restart the level manually.

I start the level with 2 batteries which I believe act as extra lives? Most levels give me 2 batteries to begin with.

I think the bug is not with the level itself but how the respawn mechanic is designed.

OS: GNU/Linux
Enigma version. 1.30

48x textures rendered with 64x tileset settings are too small

Certain textures, such as space and water, seem to render 2px too small with 64x64 tileset settings. It seems that this is caused by tiles that have 48x48 variants but not 64x64 variants. The pixels in between the tiles render as whatever color was previously in that location, without refreshing.

I am running Windows 10.

Screenshot 2023-02-27 205158
Screenshot 2023-02-27 205218

macOS Homebrew audit flagging data/levels/**/Makefile files

The Enigma.app created by the macOS build contains files Makefile, Makefile.am and Makefile.in in the data/levels/**/ directories. Makefile contains references to the temporary directory that Enigma was built in, which is flagged by Homebrew's audit as the directory will not exist when the app is run. Those Makefile* files are not used for anything at run time and should not be put in the app bundle by the build process.

Level pack names are untranslatable

... or in need of xgettext & push to Transifex? My translation is at 100%.

enigma-levelpacks

When clicking on a level pack, the number of levels is in English:
enigma-levelpacks2

The window title is also untranslated, as well as +%d others
enigma-levelmenu

I also can't make my translation fit into that line. Smaller padding/margins might give us an extra line of text here.

Enigma version: 1.30 beta

Loss of Mouse-Focus after switching away to different App.

When I just started Enigma and am playing in some level, then Enigma "captures" the mouse, i.e. no matter how "far" I am moving my mouse, no mouse pointer will appear outside of Enigma's window. This is fine and required to be able to play the game with a mouse as input device.

However, when I am switching to a different app (e.g. to email-program by means of task-switcher) and then return to Enigma, then moving the mouse will finally move the mouse pointer out of the Enigma window, so that reasonable game play is no more possible.

One fix is to "Abort Level", then select "Level Pack", and then go to the desired level. As it seems, just "Abort Level" without going through "Level Pack" (or "Main Menu") is not always enough to restore mouse capture.

I am observing this with Enigma v1.30, built from a Enigma-1.30-src.tar.gz source distribution. I configured in-tree with no special options except custom --prefix. Host is:

> cat /proc/version
Linux version 5.11.0-27-generic (buildd@lcy01-amd64-019)
(gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, GNU ld (GNU Binutils for Ubuntu) 2.34)
#29~20.04.1-Ubuntu SMP Wed Aug 11 15:58:17 UTC 2021

Desktop Manager is "Xfce 4.16 distributed by Xubuntu".

Enigma Settings:

  • Fullscreen = No
  • Screen Resolution = 640 × 480

Shortcuts should be explained better

Several shortcuts and details (like F3 vs. Shift-F3, or Shift-ESC) are only explained in the manual. It would be better to demonstrate them in game. There is the context-depending help menu, which in itself needs the knowledge that F1 typically shows a help screen. Unfortunately, these are conventions not everyone knows, so we need a better way to communicate them.

Another very unlucky example is the Shift+Ctrl combo to reload a level file when it restarts. This is not documented, and its difference to a normal restart needs additional explanations. It might actually be better to always reload a file when it restarts, or to define an option in the options menu to toggle reload.

Hardcoded libiconv.dylib path causes compile failure on MacOS 11 (Big Sur)

I have been trying to go through some of the homebrew formulae which are having compile problems on OS/X Big Sur and came across enigma I have a simple fix that seems to work here https://github.com/Homebrew/homebrew-core/pull/67960/files but I'm not sure if you will want to deal with it the same way.

The short version is that linking directly against /usr/lib/lib*.dylib by filename is fraught with problems because they mostly don't exist. I say "mostly" because even though the files aren't present on the filesystem anymore there are some hacks so some things like calling dlopen() on them continues to function.

Anyway, the reference to /usr/lib/libiconv.dylib in configure.ac did seem to cause ./configure to have problems running its test scripts, ultimately leading to it not detecting SDL properly. For me, at least, just using the more straightforward -liconv fixed the problem but I'm not sure if you were using the exact pathname for some other reason (perhaps to avoid other iconvs from homebrew, etc?)

If you must use an exact filename one Big Sur specific method is to link instead against the .tbd file -- this is a text file describing the library but the linker will cope with it being passed in just like passing in a .dylib file. Unfortunately that means digging inside of the particular SDK you are compiling against to find a path like /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libiconv.2.tbd

Broken Level: "Frogger"

To quote StasAlexeevka on mag-heut.net: "Hi, I'm think there is a bug in level V-71, Frogger in version 1.30 the boulders don't disappear and soon block the way, so the level became unsolvable. It wasn't in previous versions."

Frogger (enigma_v/luc20) still uses the old API. Best solution would be a complete rewrite in new API. However, there might be other levels suffering a similar bug; an analysis of the error is therefore necessary.

The boulders should trigger an invisible it_trigger, which then kills the stone above it. The first time this trigger triggers, it works flawlessly, but then seems stuck.

Translation not loaded without running make install

When I play Enigma, all strings show in English, although they have been translated. When I run make install, it works. It would be nice not to have to install though.

Here's a screenshot with language set to gd and "Options" translated in po/gd.gmo as shown by Virtaal:

enigma-translation

Enigma Version: HEAD detached at 1.30-alpha, self-compiled
OS: Linux Mint 20 Mate (Ubuntu 20.04-based)

Configure summary:

   Source directory:    .
   Installation prefix: /usr/local
   C++ compiler:        g++ -g -O2 -DENABLE_ASSERT -g -DCXXLUA
   Libraries:           -lcurl -lxerces-c -lpng -ldl 
   Linker options:      
   Languages:		de fr nl it es sv ru hu pt fi uk be el pl cs gd hr sk da
   System enet:		no

Release on Flathub

Hello, what do you think about a release on Flathub? It would be easy to release on many Linux distributions.
I have a working flatpack package ready

Cannot exit game menu

After pressing escape during a game to get to the game menu, it is impossible to get back to the game. Clicking resume, restart, or abort just causes the menu to reappear. This seems to be an issue with input grabbing, as this does not happen when using --nograb or fullscreen.

I am on Debian testing and using kwin.

Build failure on MSYS2: error cast from 'HINSTANCE' {aka 'HINSTANCE__*'} to 'int' loses precision [-fpermissive]

Enigma version: 1.30 (git 2d10fca).
MSYS2 environment used to build: MINGW64
g++ version:

g++ --version
g++.exe (Rev7, Built by MSYS2 project) 10.3.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compilation log:

Making all in m4
make[1]: Entering directory '/d/Linux_home/nathan/src/enigma/m4'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/d/Linux_home/nathan/src/enigma/m4'
Making all in lib-src
make[1]: Entering directory '/d/Linux_home/nathan/src/enigma/lib-src'
Making all in oxydlib
make[2]: Entering directory '/d/Linux_home/nathan/src/enigma/lib-src/oxydlib'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/d/Linux_home/nathan/src/enigma/lib-src/oxydlib'
Making all in lua
make[2]: Entering directory '/d/Linux_home/nathan/src/enigma/lib-src/lua'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/d/Linux_home/nathan/src/enigma/lib-src/lua'
Making all in zipios++
make[2]: Entering directory '/d/Linux_home/nathan/src/enigma/lib-src/zipios++'
Making all in zipios++
make[3]: Entering directory '/d/Linux_home/nathan/src/enigma/lib-src/zipios++/zipios++'
make  all-am
make[4]: Entering directory '/d/Linux_home/nathan/src/enigma/lib-src/zipios++/zipios++'
make[4]: Leaving directory '/d/Linux_home/nathan/src/enigma/lib-src/zipios++/zipios++'
make[3]: Leaving directory '/d/Linux_home/nathan/src/enigma/lib-src/zipios++/zipios++'
Making all in src
make[3]: Entering directory '/d/Linux_home/nathan/src/enigma/lib-src/zipios++/src'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/d/Linux_home/nathan/src/enigma/lib-src/zipios++/src'
make[3]: Entering directory '/d/Linux_home/nathan/src/enigma/lib-src/zipios++'
make[3]: Nothing to be done for 'all-am'.
make[3]: Leaving directory '/d/Linux_home/nathan/src/enigma/lib-src/zipios++'
make[2]: Leaving directory '/d/Linux_home/nathan/src/enigma/lib-src/zipios++'
Making all in tinygettext
make[2]: Entering directory '/d/Linux_home/nathan/src/enigma/lib-src/tinygettext'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/d/Linux_home/nathan/src/enigma/lib-src/tinygettext'
Making all in enigma-core
make[2]: Entering directory '/d/Linux_home/nathan/src/enigma/lib-src/enigma-core'
g++ -std=c++14 -DHAVE_CONFIG_H -I. -I../../src    -ID:/msys64/mingw64/include/SDL2 -Dmain=SDL_main  -g -O2 -DENABLE_ASSERT -g -DCXXLUA -MT ecl_system.o -MD -MP -MF .deps/ecl_system.Tpo -c -o ecl_system.o ecl_system.cc
ecl_system.cc: In function 'bool ecl::BrowseUrl(std::string)':
ecl_system.cc:122:16: error: cast from 'HINSTANCE' {aka 'HINSTANCE__*'} to 'int' loses precision [-fpermissive]
  122 |     result == ((int)ShellExecute(NULL, "open", url.c_str(), NULL, NULL, SW_SHOWNORMAL) >= 32);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ecl_system.cc: In function 'bool ecl::ExploreFolder(std::string)':
ecl_system.cc:144:16: error: cast from 'HINSTANCE' {aka 'HINSTANCE__*'} to 'int' loses precision [-fpermissive]
  144 |     result == ((int)ShellExecute(NULL, "explore", path.c_str(), NULL, NULL, SW_SHOWNORMAL) >= 32);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [Makefile:468: ecl_system.o] Error 1
make[2]: Leaving directory '/d/Linux_home/nathan/src/enigma/lib-src/enigma-core'
make[1]: *** [Makefile:390: all-recursive] Error 1
make[1]: Leaving directory '/d/Linux_home/nathan/src/enigma/lib-src'
make: *** [Makefile:477: all-recursive] Error 1

ifs != NULL patch

This did not compile. Here is a fix:

diff -Naur enigma-1.21-a/src/lev/Proxy.cc enigma-1.21-b/src/lev/Proxy.cc
--- enigma-1.21-a/src/lev/Proxy.cc	2014-12-19 21:24:37.000000000 +0000
+++ enigma-1.21-b/src/lev/Proxy.cc	2019-01-08 22:55:39.508341399 +0000
@@ -933,10 +933,10 @@
                     } else if (haveLocalCopy) {
                         // plain file
                         basic_ifstream<char> ifs(absExtPath.c_str(), ios::binary | ios::in);
-                        if (ifs != NULL)
-                            Readfile(ifs, extCode);
-                        else
+                        if (!ifs)
                             haveLocalCopy = false;
+                        else
+                            Readfile(ifs, extCode);
                     }
 
                     if (!haveLocalCopy) {

Mouse hangs after fullscreen exit

Reported by Goth7illa via mag-heut.net on Sep 26th, 2021:

On and off the game will exit fullscreen and minimize. When I return to fullscreen the mouse will not reach all parts of the screen: It's like there is an invisible wall beyond which I can't move. Also, the cursor will appear on my second screen. Any thoughts? I think I had the same issue with earlier versions of Enigma. I'm running Win10.
Quite vexing as I'm really enjoying the new release, great work!

It turns out adding the program to the 'do not disturb list' from my antivirus software has fixed the problem, but now it appears the entire game will get stuck at the 'loading levels' screen. Restarting the computer did not help. Will now try reinstalling, thought you'd like to know.

So reinstalling the game worked. Once. After exiting the game and returning to it some time later the game will run in minimized mode in the taskbar, music is playing and I cannot make it go full screen. I do not understand what is happening here as I didn't change anything and don't understand the cause of this problem.

Catch segfaults from using action instead of safeaction

Enigma segfaults on certain level input, e.g. objects that destroy themselves on their own actions (like opals) or callback functions.

It is extremely complicated (maybe impossible) to catch all possible ways levels can cause segfaults. However, we should at least try.

segvcatch is a cross-platform library that transforms SIGSEGV and other signals into exceptions:
https://github.com/Plaristote/segvcatch
The idea would be to just show a meaningful error message, in the case of SIGSEGV with a hint to safeaction, and unconditionally quit afterwards (do not try to recover -- repair the faulty level code instead).

fl_ice on which movable stones can slide

In Enigma, ice floor has low friction for actors, but stones are not affected in their movement. There are however numerous examples of games using frictionless ice for puzzle blocks, like certain titles from the Zelda, Pokémon, and Oxyd series. It even is a well established trope: https://tvtropes.org/pmwiki/pmwiki.php/Main/FrictionlessIce

This shows that frictionless ice for stones is a worthwhile addition for Enigma. However, due to compatibility with existing levels, fl_ice cannot be redefined in this way without serious consequences; a new variant has to be defined. I propose to interpret the English term "black ice" literally for this: Create a new floor type resembling fl_ice, but with dark blue or black instead of blue tones, and more sharply defined white structure. The fl_forward code can be reused. Actors should experience the typical friction and adhesion of fl_ice -- after all, these can be redefined by the level anyway.

This new floor type should act like fl_ice in all other aspects, like melting. Therefore, it should be a flavor of fl_ice, say, fl_ice_black.

Actor-specific behaviour or lack thereof: bugs, horses, movement automation etc.

To begin with: this is not a bug report, rather a proposal for a feature (or an inquiry about design intent).

Right now, we have two passive, immortal actors — ac_horse and ac_bug — that have few characteristic features or interactions with the player. While it has long been stated in the reference manual that ac_horse was/is planned to be rideable, that has never come to pass, and seemingly the only trace of that is the ability to set a path on which it moves on its own (via attributes like destination). This is indeed a unique feature, but in the current state, it feels arbitrary that only ac_horse should have it.

Let us summarize what these actors do:

ac_bug ac_horse
immortal, usually passive immortal, usually passive
small size and mass large size and mass
breaks st_break_bug passes through st_portal_horse
movement can be automated

So aside from the relatively niche interactions in the fourth row, we basically only have the automation capability (where it is unclear why only the horse has it), and in particular ac_bug doesn’t seem to have really found its own place in the game.

One of the most painless ways to remedy this somewhat would be to extend the attributes enabling movement automation (destination, destidx, loop, strength, steady) to certain other actors: this requires basically nothing other than copying a bit of code. In particular, there is no reason why a “bug” should be able to move around on its own any less than a “horse” would. While this would in fact make ac_bug more similar to ac_horse, it would at least have more usability (and it being a smaller, visually distinct analogue with slight quirks is not necessarily a bad thing either for how the overall design looks).

Of course, the question then presents itself whether other actors like ac_killer, ac_marble, or even ac_pearl should likewise have these capabilities (ac_rotor and ac_top almost certainly should not, since they already have an expected behaviour in regards to movement). Right now, in levels where these actors need to move in preset ways (e.g. “Unfair!” and “FizzBuzz”), things such as slopes (hidden or otherwise) need to be utilized. It might make sense to have such on option to control them properly enabled, but if that were to be the case, it would eliminate the main differentiating feature of ac_bug and ac_horse.

In my opinion, the ideal scenario would be to add these attributes (destination etc.) to all actors that aren’t usually active on their own (so anything other than rotors and tops), implement the riding behaviour for ac_horse, and figure out an additional unique feature for ac_bug. However, this would of course be much less trivial of a change than simply adding the already existing functionality to another actor or two.

Also, any part of these proposed changes might conflict with the design goals of the game developers. So mainly, I would like to know their thoughts on this (or that of anyone else interested): what part if any of all this might be worth considering in the short or long term.

Unclean Level Shutdown

When a level is deleted from memory (e.g. when the level ends or the app is shut down), level.reset() is called. This first sets the pointer "level" is pointing to to null, then deletes the world. However, we sometimes have to call DisposeObject during world deletion, which in turn refers to "level"; which has just been set to null. To avoid segfaults, we provide level with a new world instead. This method might have unexpected side effects: E.g. when unnaming an object during its deletion, it will search its name in the new world's catalogue instead of the old world's.

As of 2022, there are no known symptoms. Cleaning the code involves reworking all destructors. So we defer the repairs.

How to read the in-game text items?

Go to Level Packs and choose "Enigma" -> "Tutorial" -> "Oxyd Stones 1"

The first time I picked up the first piece of paper, the text scrolled on the bottom. I played until level 3 without being able to read any of the other texts.

I eventually discovered that F1 will open the list of keyboard shortcuts. I think there's space for a button on the Esc menu to make it easier to find.

Another possibility is to add more text items to the first level explaining how to access the list of keyboard shortcuts.

Enigma Does Not Open in Mac Big Sur

When I try to open the newest release of Enigma, I receive the message, "Enigma cannot be opened because the developer cannot be verified. MacOS cannot verify that this app is free from malware."

Occasional crash related to PulseAudio

Occasionally Enigma crashes and I get the following error:

Assertion 't = find_next_time_event(m)' failed at pulse/mainloop.c:719, function calc_next_timeout(). Aborting.
Aborted

Probably has something to do with SDL 1.2.

Gaps in textures after loading a second level

If one opens a level, and returns back to the menu to pick another level. There is a chance that the game gets buggy textures.
OS: WIndows 10 Version 10.0.19043 Build 19043
Using the 64x64 1.30 tileset.
Window size: 1x (1280x960)
Unbenannt

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.