Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Topics - Goombert

#1



Every now and again I like to share some exceptional games from ENIGMA's EDC or the community. Two games I've recently spotted are by community member Hugh Greene.

Amazing Box Puzzles is a fun and challenging puzzle game similar to Mystery Mansion and other titles he's released with new and refined mechanics.
https://enigma-dev.org/edc/games.php?game=99

Defense of the Realm is a more traditional side-scrolling shooter that's fast paced and involves finer-tuned reflexes to succeed.
https://enigma-dev.org/edc/games.php?game=98

If you enjoy these genres, please do check out his games. He not only puts a lot of effort into them, but I can personally vouch for their quality. Consider leaving him some reviews and feedback so he knows how to get even better. He's on his way to becoming a master game developer!
#2
Issues Help Desk / LateralGM High DPI Workaround
May 05, 2019, 02:13:17 PM
I've had this issue with LGM on my high DPI 2K monitor for a while now. I even have the issue running LGM under Java 9. I finally did some research and found a workaround I'd like to share.
https://superuser.com/a/1207925

I tried that on my installed "javalocation/bin/java.exe" but it didn't work at first. So what I did was ask the MSYS2 console where java is.
Code (bash) Select

$ where java
C:\ProgramData\Oracle\Java\javapath\java.exe


I then went there and applied the fix to that exe and it worked. You just right click the exe->Compatibility tab->"Change high DPI settings" and override the DPI scaling factor. I set mine to "System (Enhanced)" to get the results below.

DPI System (Enhanced)


DPI Unaware/Broken
#3
Announcements / New LateralGM Stability Releases
April 23, 2019, 08:15:50 AM


This may come as a welcome surprise to many of you, but I wanted to announce a few LateralGM releases that I've made recently. Yes, we are still working on a new IDE, but are not yet ready to completely drop LateralGM so I don't mind making a few stability changes and healthy fixes for the project to placate everybody in the interim. The main point of these changes is not to introduce radical changes to LGM, but simply make maintenance a little easier, including some custom error dialogs that facilitate users solving certain issues themselves rather than posting them to our GitHub.

As always, you can obtain the new releases on GitHub. The installation scripts in enigma-dev have also been updated to refer to the latest LateralGM release.
https://github.com/IsmAvatar/LateralGM/releases/tag/v1.8.53

Summary of Changes
1) New event selector based on a mockup by Josh which is a critique of the GameMaker 5 event selector.
2) Fixed translations that already existed but where the keys have been renamed. Also provided new translations where possible using Google Translate.
3) Cleanup of the GMX writer including refactoring of group writing.
4) Memory leak fix in the GMX and GMK readers.
5) Fixed some inconsistent use of certain icons.
6) Fixed some action list behavior including exceptions around clipboard options and empty selection.
7) Fixed clipboard copying of actions using a deep copy addressing the linked actions issue.
8) Fixed resource name completions in the code editor.
9) Fixed default sprite transparency which addresses issues with loading GMX projects after GMK projects.
10) Improved external editor error handling with custom error messages directing users how to resolve desktop editing failures themselves.
11) Made it easier to import multiple sprite sheets to the same sprite by making the "Add Spritesheet Subimages" button not clear the sprite's previous subframes first.
#4
General ENIGMA / Poll: New LGM Event Selector
April 21, 2019, 11:32:37 PM


Hey guys. I want everyone's feedback on a new event selector we are proposing for LGM.
https://github.com/IsmAvatar/LateralGM/pull/404

I know many of you have had frustration and find the current event selection unintuitive. Because of that, Josh created a mockup which is a critique of the GM5 event selector which I used to design the one in the pull request. You can download a prerelease jar of the changes in a zip from my pull request. I want to know what you guys think and whether I should merge it or if we should move forward with the event selection we already have.

I had previously been criticized by Josh for combining the Add/Replace/Duplicate options into "Modify" which is synonymous with "Edit" and thus confused him. I am taking a poll now to avoid making similar mistakes. The only way I can conceive of every imaginable criticism before merging this is to simply ask the community. So this is your chance to let your opinion be heard. Please let me know how you feel about this, thanks!

NOTE: Please understand that I am already aware the "Context" (previously "Object Window") resource menu breaks when you load a project. This is not a regression and exists in lgm16b4 too. I've filed a separate issue for this because I don't want to conflate it here. It will be fixed later on.
#5
Announcements / New Dependency on Google Protocol Buffers
February 03, 2019, 02:54:42 AM
I wanted to make sure to cover this with an announcement to keep everyone in the loop. We have now rearranged the backend to the compiler so that it now uses Protocol Buffers directly. EnigmaStruct is now deprecated and should not be used for building new command line or frontend tools that integrate with ENIGMA.
https://github.com/enigma-dev/enigma-dev/commit/a1aa34d57d91e438bf937a39d902a6556932eaec

We also had to come back and address a few regressions from this change in several games. With this, there have been no other new regressions discovered.
https://github.com/enigma-dev/enigma-dev/commit/090d1a92fa377e0f9a851ebdaa3daa325b76a497
https://github.com/enigma-dev/enigma-dev/commit/36de74c8d44871ea260506a8f8e27d684aee4253

EnigmaStruct is deprecated rather than obsolete because it is still used by LateralGM. It will likely remain that way as my development attention is staying focused at RadialGM now which uses the new Protocol Buffers directly for its data model. One advantage to the new Protocol Buffers interface is that binary compatibility can be maintained when changing the protos. This is not true of the old EnigmaStruct, and thus, tools that use it will be subject to frequent breakage as a result of the lack of binary compatibility.

Long story short, you will now need to install Google Protocol Buffers when setting up ENIGMA or the next time you update an existing installation.
Code (bash) Select

# MSYS2 64-bit
pacboy -S protobuf:x
# MSYS2 32-bit
pacboy -S protobuf:i


I have also updated the Ubuntu/Linux installation instructions as well as the easy method script with the help of TKG. You will need a newer protobuf version which is why we recommend installing the dependency from Maarten Fonville's PPA which is where our Travis CI build obtains it.
https://enigma-dev.org/docs/Wiki/Install:Linux
https://github.com/enigma-dev/enigma-dev/issues/1527
Code (bash) Select

sudo add-apt-repository ppa:maarten-fonville/protobuf
sudo apt-get update
sudo apt-get install libprotobuf-dev protobuf-compiler


You will also need to do a clean build of the compiler.
Code (bash) Select

make clean
make -j4
#6
Announcements / MSYS2, Pacboy, and Virtual Packages
October 02, 2018, 12:53:45 AM
I want to take a quick minute to explain a little bit about Pacboy because Hugar brought a user's installation issues to my attention over Discord. You can consider this post to be a sort of technical explanation and not really an announcement, but I want to try to clarify this for everybody and not just the one person.

The user was having a problem installing git using Pacboy because I forgot a colon on the install page for Windows. The [snip]git[/snip] package in MSYS2 is actually what's called a "virtual" package.
https://github.com/msys2/msys2/wiki/Using-packages#installing-a-package

Because the package is virtual, when you install it with Pacman, you only need to specify [snip]git[/snip] without any [snip]x86_64[/snip] or [snip]i686[/snip] suffix. Now what Pacboy is, is it's a bash script written by the MSYS2 people that makes it easier to install Pacman packages so you don't have to specify the long package suffixes.
https://github.com/msys2/msys2/wiki/Using-packages#avoiding-writing-long-package-names

Long story short, with Pacboy the [snip]:x[/snip] is for x86_64 (64 bit) and [snip]:i[/snip] is for i686 (32 bit) just as our instructions said before, but a plain [snip]:[/snip] after the package name, like [snip]git:[/snip], should be used for virtual packages.

Quote from: Pacboy Terminal Prompt
    Pacboy 2016.6.24
    Copyright (C) 2015, 2016 Renato Silva
    Licensed under BSD

    This is a pacman wrapper for MSYS2 which handles the package prefixes
    automatically, and provides human-friendly commands for common tasks.

    Usage:
        pacboy [command] [arguments]
        Arguments will be passed to pacman or pkgfile after translation:

        For 64-bit MSYS2, name:i means i686-only
        For 64-bit MSYS2, name:x means x86_64-only
        For MSYS shell, name:m means mingw-w64
        For all shells, name: disables any translation for name
        For all shells, repository::name means repository/name

I've updated our Windows installation instructions to clarify all of this.
https://enigma-dev.org/docs/wiki/index.php?title=Install%3AWindows&action=historysubmit&diff=31845&oldid=31833
#7



OpenGL1OpenGL3Direct3D9Direct3D11

We've made it to yet another massive cleanup of ENIGMA's graphics. This one is a pretty big deal that I wanted to make sure to let everyone know about. I've rewritten all the old transform and matrix code using a single dependency, GLM, to eliminate all of the old duplication. This is not only less code but also brings improved consistency across the four graphics systems that ENIGMA currently provides. There were several reasons for choosing GLM over various other alternatives that exist, but I'm fairly certain we've made the right decision.

You can see in the above table that the transforms in the Animation Platform Example sent to me by DarkAceZ are consistent in all four graphics systems. Direct3D11 does still have noticeable rendering bugs, but this is unrelated to the transforms and has to do with render states and unfinished D3D11 features we will need to take care of later. But regardless, the game does perform more consistently as a result of these changes.

You will now need to download GLM through your package manager when setting up ENIGMA or pulling the latest master on all platforms.
Code (bash) Select

# Ubuntu
sudo apt-get install libglm-dev

# MSYS2 32-bit
pacboy -S glm:i

# MSYS2 64-bit
pacboy -S glm:x


You can see that the changes have already been merged:
https://github.com/enigma-dev/enigma-dev/commit/4e8ad7c3857794f490610c621ae64ae54b3456b0

The full details of these changes can be found in the original pull request comments:
https://github.com/enigma-dev/enigma-dev/pull/1396
#8
RadialGM is currently

If you like the progress we've been making, please consider supporting us on Patreon!
https://www.patreon.com/bePatron?u=10889206


It's been a while since I've updated everyone on the current progress around here. I am going to cover a couple of different topics, some related and some not.

First, I want to talk about how we've added MSVC & CMake building support for the enigma-dev command line tools as well as RadialGM. This is in huge part thanks to fundies whose proved himself to be a master of build systems once again. This has allowed us to create a static build of Qt using vcpkg and use it to deploy RadialGM on the GitHub releases page. Some of you watching us on GitHub may have already noticed you can download 4 builds of RadialGM already (permutations of x86, x64, Debug, and Release).

Please consider this an early alpha as we are still hard at work to bring our other ideas to fruition. Only GMK and GMX loading work right now and some editors are incomplete. Functionality is basically equivalent to the current emake used in CI testing. Actually running a project also does not work yet out of the box and I'm not going to bother explaining yet how to integrate it with your enigma-dev setup.

RadialGM Releases: https://github.com/enigma-dev/RadialGM/releases

You may or may not need to download and install the MSVC 2017 runtime as the only prerequisite dependency, everything else is statically linked into the release and ABSOLUTELY NO Java is required.
https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads

From here on, we are hoping that later we can spread CMake & MSVC support to the engine as well as provide static releases and installers for additional platforms. This is just the start of many great things to come.

The next topic I want to cover is vertex buffers and recent graphics changes in the engine. I've been doing a massive overhaul to a lot of the sprite/primitive batching and model code to make it more abstract and eliminate duplication in the engine. I have also been benchmarking, regression testing, and fine tuning the API to perform well. You will find that tiles now work in Direct3D9 the same as they do in the OpenGL systems. You will also notice that the [snip]vertex_*[/snip] API of GMS is now 100% supported in ENIGMA. It is used as the basis of our new 3D model class and used to implement the tiles generically so they work the same in all systems. This has led to not just better performance and less code but improved consistency across the graphics systems.

https://github.com/enigma-dev/enigma-dev/commit/8876f6141c575b7ee45dab3adea1fccfb7688331
https://github.com/enigma-dev/enigma-dev/commit/5fa7fcecbd0aaf493103149407c88a13105280a5
https://github.com/enigma-dev/enigma-dev/commit/21dce9bcc32963b788547db96c2215579970993a
https://github.com/enigma-dev/enigma-dev/commit/4e05f616fa7bb02b5d6c7c2d9eb589ada494deee
https://github.com/enigma-dev/enigma-dev/commit/c5a87764affa2fb9141aabfe0c711a859d06f45e
https://github.com/enigma-dev/enigma-dev/commit/d490b5067a8b6f256c135e21ea187705fa414c9e
https://github.com/enigma-dev/enigma-dev/commit/16807a76050455a379d2c434047dc7db12fb4bfc
https://github.com/enigma-dev/enigma-dev/commit/42b7d98efe9930acb3ade71205b3778108892730

There will be even more graphics changes to come. The next thing that I am working on is using GLM for matrices in all of the graphics systems. This will fix all of the current transform issues we have and may also improve performance. I already have Direct3D11 using GLM in private tests to pass various rendering tests.

Finally, I want to close by covering some of the things we are doing with the new EGM format that RadialGM will be using for serialization. We only know a few things for sure at this point in time. One thing we do know is that the format will still be based on YAML for the serialization. This time, the entire format will be YAML, and there will be no mix like having binary rooms and yaml objects like the old EGM format did. This will make projects much less likely to be corrupted and easier to recover.

We have already adopted a code-only model that converts the old drag and drop format to GML for backwards compatibility and will later work on a new Drag & Drop action interface. Events of objects will be stored in separate [snip]*.edl[/snip] script files where objects and timelines will be a directory. We hope that this will make it easier to edit the projects externally as well as add to git revision. RadialGM will facilitate external editing by detecting changes to the code files on the filesystem and reload them accordingly.

That said, I hope you are as excited as I am for RadialGM to reach the stability we want it to be so we can start making games with it. Now I am off to work with fundies on the EGM, please stay tuned for more updates!
#9

Note: The two images are intentional false positives I did for the purposes of demonstrating the bot and to verify its behavior.

Hey guys! I've been busy for a few days working on a side improvement to the engine code base that I want to share with you all. It is closely related to the SDL changes fundies recently announced as well as us adding support for Direct3D11 and modern OpenGL ES. We have basically extended our continuous integration to perform an image analysis on graphics tests to improve graphical fidelity both between the graphics systems as well as between ENIGMA and GameMaker. This is still a work in progress but I just this morning got it fully working to where we can successfully screencap the game in the Travis CI virtual machine (minor bug in our test harness taking the screenshot directly after game start and before any draw events were processed).

You can see what we're up to on the pr here:
https://github.com/enigma-dev/enigma-dev/pull/1291

We expect to have it merged soon and will then be adding drawing tests from here on out.

I've also cleaned up the tile drawing code and optimized them on top of the vertex buffer functions I added for GMS compatibility. They are slightly different though because I use an index buffer to render them more optimally as an indexed triangle list. Regardless, from my benchmarks we can see that the tiles are not only more consistent now but also build and render much faster. When me and fundies get these image comparison tests merged into master, I will add a tile drawing test to prevent future regression of the functions and finally merge in the new tile code.
https://github.com/enigma-dev/enigma-dev/pull/1238

I will be following up those changes by rewriting the model classes as well:
https://github.com/enigma-dev/enigma-dev/pull/1289

The whole point of this changeset is to have less duplicate code by using proper abstractions of vertex and index buffer concepts, while essentially providing both to the user. This not only improves what ENIGMA already provided, but will bring new features and functions that users have desired. With all of that in place it will be super easy to finally have OpenGL ES working again as well as Direct3D11 because building a graphics system then simply consists of making each graphics system have working vertex functions.

I hope everyone likes these changes and will find that it's going to significantly improve the project. Open to comments/feedback/suggestions as always.
#10
Announcements / Announcing Patreon
May 20, 2018, 06:21:16 PM
In this post, I want to talk a little about where ENIGMA is headed and what we are trying to achieve.

As many of you saw, I recently announced that RadialGM is being developed and that I have intentions of making it a fully-featured IDE. Accomplishing what we have so far has not been an easy task. It has already taken several months to develop the new architecture and continuous integration platform. As I've said, I'm very happy with the results, and I think that when the IDE does become stable, it is going to be a tool that once ENIGMA users try it, they won't want to ever go back to the way things were.

YouTube demonstrating emake, libEGM, and libProtocols: https://www.youtube.com/watch?v=f_bWMx1Uhxc

Just since this video was made a few of the bugs mentioned have been fixed and for the first time in years ENIGMA has an issue count in the double digits (at this moment 84).
https://github.com/enigma-dev/enigma-dev/commit/cd7ffc26fbc16355599305848b6d1310aa9ecafb
https://github.com/enigma-dev/enigma-dev/commit/6196449e986765f568098ede47e6a62621701a3f
https://github.com/enigma-dev/enigma-dev/commit/e853744cbb79bf3b22df8ce9dfd783bf4b495fec
https://github.com/enigma-dev/enigma-dev/commit/f574a63563d2523ba46a0e782f17c16edd0a76be
https://github.com/enigma-dev/enigma-dev/commit/53d9a2f71c82404c3a41d7a54841e6c6e4f0e19b
https://github.com/enigma-dev/enigma-dev/commit/4c20a1915a5129493fa946c0088dab38b3dc7c7c

Proposed, but not yet merged:
https://github.com/enigma-dev/enigma-dev/pull/1279
https://github.com/enigma-dev/enigma-dev/pull/1288

There are a number of tasks left to be completed before I believe the IDE and new setup can really be rolled out to everyone. I also believe that this work is going to require a few months of development. I've been preparing to launch a Patreon page for the community to get involved and help support the project: https://www.patreon.com/radialgm

We chose Patreon in particular because we did not want to pressure anybody into funding the project, but we value donations and contributions from the community and feel that they should be rewarded. Through Patreon's platform, we will be able to transparently fund the new IDE and give the community things like special Discord roles, recognition in the new IDE, and early and privileged access.
#11
Announcements / Removing Glew from the Repository
May 13, 2018, 12:48:47 AM
Fair warning, I'm about to remove glew from the repository and from now on it will be obtained via your package manager like the rest of ENIGMA's dependencies.
https://github.com/enigma-dev/enigma-dev/pull/1226

Josh felt it appropriate to warn everybody, and I agree. If you update to master now you will need to have glew installed:

Quote from: Ubuntu apt-get Glew
sudo apt-get install libglew-dev
Quote from: Arch Pacman Glew
pacman -Sy glew
Quote from: MSYS2 Pacman Glew
pacman -Sy mingw-w64-x86_64-glew
Quote from: Mac Brew Glew
brew install glew

This is important because ENIGMA should not distribute its dependencies this way. For one, they are not our code and distort the code coverage, and second they end up getting really old and crufty (like the current glew) which also leads to security vulnerabilities.
#12
Announcements / RadialGM
May 04, 2018, 01:36:30 AM


Ok, so I've been hinting around and letting some of you know for a while that a few of us have been redesigning the architecture of ENIGMA to support a new IDE. Some of you may be more familiar with it as I know I've let a handful of people test out the new tools, but I'm here to break it down and try to explain it in more detail for everybody.

History

I want to start off by enumerating the current things ENIGMA was doing that are somewhat insane. When I started contributing to LateralGM, GM HTML5 was a brand new thing and there was really only the GMK format to support. This went well for a time, as many of you know, and we were able to add features as YoYoGames did without too much of a thought-out serialization framework in place. We had experimented with making a new IDE, just for the sake of making a new IDE (not as much because one was needed). Working on LateralGM, I tended to continue with the mindset that it was a "GameMaker" IDE and we should try to add compatibility for everything which is now not only a difficult task but next to impossible. Because LateralGM and ENIGMA communicated using C structs with JNA through compileEGMf.dll, they would not be binary compatible if we added new fields and other metadata. Overtime, Oracle has become an even worse company attempting to undo decades of legal precedent with regards to software engineering, Java, and specifically OpenJDK, hasn't made fast enough progress, and I just want to make games.

Architecture Changes

So I experimented with using Google Protocol Buffers as a serialization for projects. I was also adding things here and there to emake.exe as fundies asked me to. He was working with Josh to get our CI tests setup to prevent regressions in the engine and everything (which I must say are doing wonders for this project). fundies expanded the protocol format to basically load GMXs completely and then I tacked on GMK, have YYP semi-working, and him and Josh are currently working on EGM saving. These formats are all being handled in libEGM which is a new C++ library built on top of libProtocols.

The plan is to have libEGM only ever read the GM formats but save and read our official serialization format (*.egm). The CI tests will make use of libEGM to load and compile a test project from every version of GM back to GM5. You can actually examine this right now on GitHub because the Protocol Buffers PR is already running these tests:
https://github.com/enigma-dev/enigma-dev/tree/gmxProtoButt/CommandLine/testing/SimpleTests

RadialGM

Using the new protocols I was able to experiment with making RadialGM actually functional (since because of the architectural changes much of the work was already done).
https://enigma-dev.org/docs/Wiki/RadialGM

As you can see, we've made a lot of progress. I am really satisfied with the results so far, and personally, I want to make games myself using the new IDE and that's why I've been working on it so much. What's so great about all of this though, is not just that RadialGM is actually possible, but the architectural changes really do make every other IDE as equally likely to work out (though for various reasons, I've decided to focus my efforts on the Qt version; simply because I personally like it the most). However, you should consider RadialGM to be more of an "ENIGMA" IDE as it will be almost purely for ENIGMA editing.

What You Can Expect

* It is unlikely that I will be making any more changes to LateralGM.
* The C-based backend/ in ENIGMA will remain but may be rewritten to convert to the protos (instead of the inverse) for the foreseeable future. It will likely be deleted if someone decides to rewrite the ENIGMA-LGM plugin to use the protos instead of the C backend (but that's much more work than converting the backend into protos).
* You can expect to be able to load all GM formats back to GM5 (*.gmd, *.gm6, *.gmk, *.gm81, *.gmx, *.yyp, *.egm).
* Do not expect to be able to export any RadialGM project back to a GM format, you will likely convert your projects to EGM upon open/load and then either maintain two copies or stop using GM.
* You can expect the IDE to make more optimal use of your system's resources for the above reasons (primarily because resource data is lazy-loaded and reference counted in the frontends).
#13
Announcements / Official ActionMaker Release
August 30, 2017, 07:13:07 AM
I wanted to update everyone on something I've been working on lately. Still investigating more ENIGMA related things, I set out to learn Vue.js and created an action library editor along the way.



ActionMaker is a pure HTML5 application that uses Vue.js and native form elements for the front-end. It can handle both LateralGM's LGL format and GameMaker's LIB format. I've actually tested conversion of LateralGM's score library to LIB and got it to load in GMS 1.4.

You can checkout the repo on GitHub and visit the live version right now!

https://github.com/RobertBColton/ActionMaker
https://robertbcolton.github.io/ActionMaker/

There are still some kinks to be worked out, but here is a list of known issues:
* Clipboard actions currently do not work in Chrome and are buggy in Firefox.
* Firefox seems to have a GTK3 issue on Linux which makes the buttons really big and breaks the layout.
* Saving LIB files does not work in any browser except Firefox because it is the only browser which supports the "image/bmp" MIME for canvas.toBlob() and bmp is the mandated image format for LIB files by GameMaker.
* I have not even tested Safari, but I'd be interested to know how that goes for anyone.

Here are some tips:
* Mark Overmar's old library editor does not let you edit official libs which are defined by having a library id less than or equal to 999. ActionMaker does not have this restriction, but if you want to also edit LIB files in the old library editor, then you should set an appropriate library id.
* LGL uses 24x24 pixel icons packed together into a single texture, and when saving to this format, ActionMaker will crop any images you provided to 24x24 while packing them.
* LIB uses 32x32 pixel icons but only the top-left 24x24 area is actually visible, the rest is the transparency color. What ActionMaker will do is crop the image to 32x32 and provide a default black transparency color if your image is only 24x24 or smaller.
#14
Off-Topic / GitHub comments too long?
September 18, 2016, 08:47:20 PM
Ok so I finally got tired of reading super long GitHub comments because GitHub does not provide any collapse features for long code or quote blocks. Somebody showed me this which just came out and it works perfect! Definitely give it a try, you can customize it quite a bit too.

https://github.com/Mottie/Octopatcher

Also, please remember to put logs and stacktraces in the ``` style code blocks from now and not paste them raw into a GitHub issue. Not just on ENIGMA's tracker but everywhere you post an issue on GitHub. That way people can use this extension and navigate the site easier.
#15
Tips, Tutorials, Examples / Sprite Patch Scripts
May 02, 2016, 12:09:11 AM
This was requested of me to write a script that can do this. Drawing sprites this way makes it easier to scale parts of them without messing up and blurring the corners. This is especially useful for rendering UI controls.

NOTE: These scripts should work in older GM versions, but if you are using Studio or ENIGMA you may want to replace control variable increments (such as += 1 in a for loop) with ++i as an optimization because preincrement is faster. If you are using ENIGMA then it is even faster to just use an int with preincrement.
Code (gml) Select

// this works in old GM versions but is slower
for (i = 0; i < 3; i += 1) {
// this is faster and only works in GMS, ENIGMA, or C++
for (i = 0; i < 3; ++i) {
// this is the fastest in both ENIGMA or C++
for (int i = 0; i < 3; ++i) {


This is what a 9-patch sprite looks like:


My first attempt makes use of a single sprite and its subimages.
Code (gml) Select

/// draw_sprite_patch(sprite, x, y);
/// by Robert B. Colton
///
/// draws a 9 patch sprite with x, y as the top-left corner
/// subimages are in the order: top-left, top-center, top-right,
/// middle-left, middle-center, middle-right, bottom-left, bottom-center, bottom-right

var spr = argument0;
var xx = argument1, yy = argument2;
var ww = sprite_get_width(argument0), hh = sprite_get_height(argument0);

for (i = 0; i < 3; i += 1) {
    for (j = 0; j < 3; j += 1) {
        draw_sprite(
            spr,
            j + (i * 3),
            xx + j * ww,
            yy + i * hh);
    }
}


My second attempt actually adds the arguments for scaling. If you wanted to center it around the x, y parameter you can just subtract the sprite origin from xx and yy.
Code (gml) Select

/// draw_sprite_patch(sprite, x, y, stretchedWidth, stretchedHeight);
/// by Robert B. Colton
///
/// draws a 9 patch sprite with x, y as the top-left corner where the middle and
/// center row and column is stretched to the given width and height
/// subimages in the order: top-left, top-center, top-right,
/// middle-left, middle-center, middle-right, bottom-left, bottom-center, bottom-right

var spr = argument0;
var xx = argument1, yy = argument2;
var sw = argument3, sh = argument4;
var ww = sprite_get_width(spr), hh = sprite_get_height(spr);

// top-left and top-right corners do not need scaled
draw_sprite(spr, 0, xx, yy);
draw_sprite(spr, 2, xx + ww + sw, yy);

// bottom-left and bottom-right corners do not need scaled
draw_sprite(spr, 6, xx, yy + hh + sh);
draw_sprite(spr, 8, xx + ww + sw, yy + hh + sh);

// top-center and bottom-center need stretched horizontally
draw_sprite_stretched(spr, 1, xx + ww, yy, sw, hh);
draw_sprite_stretched(spr, 7, xx + ww, yy + hh + sh, sw, hh);

// middle-left and middle-right needs stretched vertically
draw_sprite_stretched(spr, 3, xx, yy + hh, ww, sh);
draw_sprite_stretched(spr, 5, xx + ww + sw, yy + hh, ww, sh);

// middle-center needs stretched horizontally and vertically
draw_sprite_stretched(spr, 4, xx + ww, yy + hh, sw, sh);


And my last attempt uses a single subimage of a single sprite.
Code (gml) Select

/// draw_sprite_patch(sprite, subimg, x, y, stretchedWidth, stretchedHeight, sourceWidth, sourceHeight);
/// by Robert B. Colton
///
/// draws a 9 patch sprite with x, y as the top-left corner where the middle and center row and column
/// is stretched to the given width and height
/// subimages in the order: top-left, top-center, top-right, middle-left, middle-center, middle-right,
/// bottom-left, bottom-center, bottom-right

var spr = argument0, subimg = argument1;
var xx = argument2, yy = argument3;
var sw = argument4, sh = argument5;
var ow = argument6, oh = argument7;
var cw = (sprite_get_width(spr) - ow) / 2,
    ch = (sprite_get_height(spr) - oh) / 2;
var color = c_white, alpha = draw_get_alpha();

/// do this if you want to center the sprite around its origin
/// var xx = (sprite_get_xoffset(spr) / sprite_get_width(spr)) * (sprite_get_width(spr) - ow + sw),
///    yy = (sprite_get_yoffset(spr) / sprite_get_height(spr)) * (sprite_get_height(spr) - oh + sh);

// top-left and top-right corners do not need scaled
draw_sprite_part(spr, subimg, 0, 0, cw, ch, xx, yy);
draw_sprite_part(spr, subimg, cw + ow, 0, cw, ch, xx + cw + sw, yy);

// bottom-left and bottom-right corners do not need scaled
draw_sprite_part(spr, subimg, 0, ch + oh, cw, ch, xx, yy + ch + sh);
draw_sprite_part(spr, subimg, cw + ow, ch + oh, cw, ch, xx + cw + sw, yy + ch + sh);

// top-center and bottom-center need stretched horizontally
draw_sprite_part_ext(spr, subimg, cw, 0, ow, ch, xx + cw, yy, sw/ow, 1, color, alpha);
draw_sprite_part_ext(spr, subimg, cw, ch + oh, ow, ch, xx + cw, yy + ch + sh, sw/ow, 1, color, alpha);

// middle-left and middle-right needs stretched vertically
draw_sprite_part_ext(spr, subimg, 0, ch, cw, oh, xx, yy + ch, 1, sh/oh, color, alpha);
draw_sprite_part_ext(spr, subimg, cw + ow, ch, cw, oh, xx + cw + sw, yy + ch, 1, sh/oh, color, alpha);

// middle-center needs stretched horizontally and vertically
draw_sprite_part_ext(spr, subimg, cw, ch, ow, oh, xx + cw, yy + ch, sw/ow, sh/oh, color, alpha);


I can think of about 50 more ways that this can be done, including using the tile drawing functions, which may be faster because they are batched and have little overhead. I haven't wrote those yet but if anybody needs it done a different way, feel free to ask me and I'll write the script.
#16
General ENIGMA / What do you want?
April 23, 2016, 10:30:48 PM
Just out of curiosity and to see where to go next. I would like to get a feel of what people want. For both LGM and ENIGMA, please tell me what the 3 most important issues you see are. You should try to pick simple things that you feel are important for each, or you can suggest 1 really important item that takes a little longer to do. So either 3 simple things for each project that you find important or 1 really big thing.

The trackers should give you some ideas of what issues we currently have:
https://github.com/IsmAvatar/LateralGM/issues
https://github.com/enigma-dev/enigma-dev/issues
https://github.com/enigma-dev/lgmplugin/issues

Maybe if everyone reaches a consensus on a really important issue, I will actually do it.
#17
Announcements / LateralGM 1.8.7.11
April 15, 2016, 06:53:08 PM



This release has been a long time coming and hopes to address a lot of the issues many of you have been having with the editor. LateralGM's code base has also been substantially cleaned up in the process.

You can download the new jars from the new Releases page on GitHub as well as the old Extra Packages page on the Wiki. An update to the plugin is needed for this release because the hardcoded Quantum look and feel has been removed and a sound property has been changed for clarity. I have updated the hashes for install.py so that script can also be used to fetch the latest LateralGM and plugin jars.
https://github.com/IsmAvatar/LateralGM/releases
https://enigma-dev.org/docs/Wiki/Install:Extra_Packages

ENIGMA users may experience an issue using the new LateralGM because ENIGMA.exe always passes it " " an empty string of length 1 on the command line, which LGM interprets as a file open. Originally I patched around this in LGM before realizing it is actually an ENIGMA problem. I have undone that now but ENIGMA.exe needs to be updated and a new portable ZIP made.

1.8.7 Changes



* The room editor now has a multi-selection mode (thanks egofree  (Y)), where you can select several tiles or sprites. Then you can copy, cut and paste them. Also you can select a region and fill it with tiles or sprites.
* There are three new buttons in the room's toolbar, in order to switch the following modes : 'Snap to grid', 'Add on top', 'Add multiple'. Before these modes were only available with keyboard shortcuts.
* There was an overhaul of the tiles management in the rooms editor. Before it was difficult to understand how to add or modify tiles, and with the new version, it's much easier.
https://enigma-dev.org/docs/Wiki/Room_Editor

* New sprites and backgrounds are now transparent instead of white. This is what GM does and it is for obvious reasons. Most sprites want to start with a blank canvas and backgrounds are usually just loaded from a file.
https://github.com/IsmAvatar/LateralGM/commit/00600686ce195a8dc6391ab0c679ffb96f541251
* Imports fixes to the event tree from the stable branch. These issues were previously leading to exceptions and the ability to bring back deleted events.
https://github.com/IsmAvatar/LateralGM/pull/272
* Fixed an issue with the play button being enabled for Mp3's by mistake.
https://github.com/IsmAvatar/LateralGM/pull/256
* Implemented /// comment feature for giving a custom description to code actions. This uses a complex regular expression pattern that Josh wrote and ignores whitespace up to the first line of code.
https://github.com/IsmAvatar/LateralGM/issues/233
* Fixed exception caused by images smaller than 5x5 pixels.
https://github.com/IsmAvatar/LateralGM/issues/199
* Path editor is finally fixed and works as it did in lgm16b4. This was actually a regression introduced in the master branch by Medo42 and it went completely unnoticed. I never used the path editor and thus never realized it was broke, it should work 100% now.
https://github.com/IsmAvatar/LateralGM/issues/231
* Added the missing "Alpha Tolerance" property to the sprite frame, which works the same as GM8.1 for detecting the collision mask.
https://github.com/IsmAvatar/LateralGM/issues/230
* Fixed external editors so that you can save an image multiple times from the external editor. The problem was that the file handles were never being closed.
https://github.com/IsmAvatar/LateralGM/issues/223
* Fixed instance id's for the GMX format.
https://github.com/IsmAvatar/LateralGM/issues/180
* Fixed the room editor from constantly asking to save changes even when it is first opened. This was due to a change I made in the original 1.8.2 to increase the default room editor size, it has been changed the right way now.
https://github.com/IsmAvatar/LateralGM/issues/177
* Instance and tile names are properly read and written now with the GMX format. They will be lost if you convert the project to GMK however, because that format does not save them.
https://github.com/IsmAvatar/LateralGM/issues/175
* Action list selection has been fully corrected now. Dragging and dropping between two different action lists also works now. It is no longer possible to add a code action until the action list has a container (meaning a moment or event).
https://github.com/IsmAvatar/LateralGM/issues/170
https://github.com/IsmAvatar/LateralGM/issues/157
* Support for GM action libs is now complete and the transparency problems have been fully fixed, including the issues related to gaps when placing them in the action list.
https://github.com/IsmAvatar/LateralGM/issues/161
* Undo, redo, cut, copy, and paste are now consistent across all editors. Some editors had them in a different order before, they will all be in the same order everywhere now and in context menu's.
* Fixes code formatting in a lot of places for consistency. It will no longer be mixed between the LGM style and other styles. Removed excess whitespace, lots of whitespace was on empty lines. Fixed file line endings in some places.
* Multi-monitor support has been restored now, but this means that using a non-native look and feel with decorations enabled will cover the taskbar when you maximize the frame. This is a known Swing look and feel issue.
https://github.com/IsmAvatar/LateralGM/issues/222

* Adds a check to see if audio clips are open before closing them on the sound frame. This is to fix a Linux issue where the pulse audio implementation in OpenJDK does not like you calling stop if the clip was never actually opened before.
* Fixes a mistake in the action list model where one of the add() methods stored two undo's. It would lead to an exception just adding a single action and undoing twice.
* Removes swinglayout-lgm.jar from class-path in the manifest because we no longer support Java 5.
* Uses the new ICO file created by @JoshDreamland without any aliasing.
https://github.com/IsmAvatar/LateralGM/pull/265

* Adds the checkered background pattern to the room editor.
* Changes default room background color to 66CCFF because that better represents the sky, what is likely to be the most common background.
* Fixes layout in the game settings frame for the author and version number/project info tab. The labels should have been trailing as they are in GM8.1.
* Adds keyboard shortcuts for Bold, Italic, and Underline to the Game Information editor.
* Cleans up the JoshEdit commits and finally moves most of the changes into JoshDreamland/JoshEdit master.
* Removes double-click expandable splitters. They were not necessary and basically overkill, even more annoying to me than the one touch expandable toolbars.
* Replaces the old color picker with a new control that allows you to enter hexadecimal color values. This should make it easier to copy and paste color values. You can still click the button to get the old color picker or enter the hex value manually.
* Adds anti-aliasing to the search bar and fixes related clipping. This search bar was a custom created control.
* Introduces a right orientation mode for those who may be left handed or prefer to work with the IDE that way because of how it saves mouse movements between toolbar clicks.
* Hides some unimplemented features such as Undo/Redo for the background and sprite editor. The controls are still there, the buttons have just been commented out from the layout.
* Removes references to the "Quantum" look and feel that I experimented with. The master branch supports various look and feels so it is possible to recreate it as a custom look and feel or using a plugin for LGM. It does not belong hardcoded into LateralGM.
* Fixes a UI issue with any JCheckBox on a JToolBar by using setOpaque(false) to allow the gradient of the toolbar to be drawn (affects Swing look and feel, was also done in lgm16b4).
* Fixes an issue with the about frame locking up with OpenJDK. It was caused by a method being called that had no effect, it was to change the cursor for hyperlinks, and it was also being passed null, which is undefined by the API, instead of Cursor.DEFAULT.
* Reduces the size of the exported jar by removing things like old splash screens from the jar description. This was a mistake I neglected to consider in earlier releases.
* Fixes property mappings in the sound editor. I had some of the keys messed up before which was making the editors save the properties wrong.
* Drag and drop importer for resource menus implemented. You can now drag a resource from the project tree over to the parent selector on an object for example. This is consistent with the way it behaves in GM: Studio.
* No longer removes the ability to edit a script when you have an external editor configured. You can use both the external editor and the built in editor. Both sets of buttons will appear, and it will behave as the sprite editor does.
* Redesigned the preferences frame with a new layout. It now looks very consistent and uses proper alignment of controls. A huge improvement over the mess that was the old layout.
* Implements community and submit issue command links to the Help menu for convenience. All are configurable from preferences as expected.
* Uses the new splash screen created by rcobra  (Y)
* Adds a reset defaults button to the preferences frame This currently clears recent files too, and you have to restart the whole IDE before the frame reverts its controls too.
https://github.com/IsmAvatar/LateralGM/pull/245

1.8.7.11 Changes


* Fixed handling of null resource references in the GMX writer. Before you could not delete a resource, like a sprite, that was referred to by some other resource, such as an object, without the GMX writer throwing an exception. It now behaves the same way as the GMK writer does.
* Fixes conversion of GMK sprites to GMX sprites. Because GMX does not save the transparency pixel at all, the writer will now check if a sprite has that property set and remove its background before writing it. GMS does the exact same thing on GMK import.
* GMX will now properly update the last saved time when writing a project.
* The GMX writer will also properly save the background room now from the path editor. Before it was saving the name, but GMX actually stores the id of the room. Really you can blame YoYo for this inconsistency, as it can actually lead to a bug where if you delete the room, save, and then reload it will point to the next room in the tree (but I don't think they care).
https://github.com/IsmAvatar/LateralGM/pull/300

* Fixes parenting on numerous dialogs so they are properly parented to LGM's frame or their MDI subframe. This is useful if you don't always work with LGM maximized.
https://github.com/IsmAvatar/LateralGM/pull/285
* Fixes clipping on the search text area for resources. I was setting the clip wrong which caused the hint text to disappear sometimes. I did not notice it until setting up ENIGMA.
https://github.com/IsmAvatar/LateralGM/pull/284
* Fixes the Java version warning message, it was previously saying Java 7 was out of date. It should now only say your Java is outdated if you have a version lower than Java 7.
https://github.com/IsmAvatar/LateralGM/pull/279
https://github.com/IsmAvatar/LateralGM/pull/278

* This version also fixes the JoshEdit submodule and cleans up more of the code removing a lot of excess whitespace. It is now possible to clone LGM with a single command.
git clone --recursive https://github.com/IsmAvatar/LateralGM
#18
General ENIGMA / OpenJDK is haunted
April 03, 2016, 03:40:25 AM


I am becoming more and more convinced that OpenJDK is haunted with ghosts. I can't recall exactly how many, but there's been a lot, of people show up and once they install the Oracle JDK their LGM problems seem to just vanish.

Like this gentleman:
https://github.com/IsmAvatar/LateralGM/issues/258

It seems that the general consensus is that OpenJDK is pretty buggy for all Java applications. I've gone and tested specific cases where the exact same Swing GUI code is fine in Oracle JDK but deadlocks in OpenJDK for no apparent reason. This used to be even more apparent in the Java 6 days with the default Ubuntu Java apparently.
https://www.reddit.com/r/linux/comments/pvn2s/linux_rejects_oracle_jdk_but_oracle_jdk_supports/c3slzyr
http://askubuntu.com/questions/437752/openjdk-oracle-is-better
http://comments.gmane.org/gmane.comp.java.openjdk.general/1748
https://news.ycombinator.com/item?id=10810508
http://www.linuxquestions.org/questions/slackware-14/openjdk-7-problem-with-swing-gui-apps-on-slackware64-13-37-current-927237/

For these reasons I have updated the download page to recommend the use of Oracle JDK. From now on, I would also recommend that if you have GUI problems such as dialogs freezing that you try to install Oracle's JDK first before reporting the issue to our tracker.
http://enigma-dev.org/docs/wiki/index.php?title=Install&action=historysubmit&diff=30805&oldid=30735

I really don't think I understand why it is that OpenJDK is in such a poor condition. It's apparently just the Oracle JDK with proprietary code removed and under an open source license. I mean, the biggest contributor to OpenJDK is.... Oracle itself. So I am not sure I see any real reason for the disparity of the two JDK's.
#19
Developing ENIGMA / Translations Help
January 24, 2016, 02:12:11 AM
Hello guys, I am wondering if someone can help translate the following messages for me.

Quote from: LGM
EventPanel.VIEWS=Views

Event.EVENT7_30 = Close Button
Event.EVENT7_40 = Outside View {0}
Event.EVENT7_50 = Boundary View {0}
Event.EVENT7_10 = User Defined {0}

Listener.INPUT_FINDRES=Resource name:
Listener.INPUT_FINDRES_TITLE=Find Resource
Listener.INPUT_FINDRES_NOTFOUND=Could not find resource "{0}"
Listener.INPUT_FINDRES_NOTFOUND_TITLE=Resource Not Found

GameSettingFrame.KEY_CLOSEBUTTON=Treat the close button as <ESC> key

GameSettingFrame.TITLE_VERSION=Version Information
GameSettingFrame.MAJOR=Major:
GameSettingFrame.MINOR=Minor:
GameSettingFrame.RELEASE=Release:
GameSettingFrame.BUILD=Build:
GameSettingFrame.COMPANY=Company:
GameSettingFrame.PRODUCT=Product:
GameSettingFrame.COPYRIGHT=Copyright:
GameSettingFrame.DESCRIPTION=Description:

I need these messages translated for _tr_TR _da_DK and _fr, which I believe is Turkish, Denmark Danish, and French respectively. It would be really appreciated.
#20
General ENIGMA / Stable Branch/lgm16b5
January 19, 2016, 08:15:30 AM
I am introducing a stable branch to LateralGM which only pulls in the most important fixes on top of lgm16b4. This version is not concerned with changing the look and feel and other aesthetic enhancements. It is concerned with code quality and functionality. It is mainly targeted at those who want a more stable LateralGM without all the bells and whistles that sometimes don't even whistle.

My commits are first introduced on page 24 at https://github.com/IsmAvatar/LateralGM/commits/082952ab9ec15fedab120197e770e0c393fccf71?page=24

Reasons to break support for older Java versions:
* getSelectedValues() is deprecated in favor of getSelectedValuesList() as of JDK 1.7 and these methods are used in ActionList
* SwingWorker was added in JDK 1.6

The first issues on this list are possible, but are considered to be less important or controversial:
https://github.com/IsmAvatar/LateralGM/issues/233
https://github.com/IsmAvatar/LateralGM/issues/184
https://github.com/IsmAvatar/LateralGM/issues/181
https://github.com/IsmAvatar/LateralGM/issues/163
https://github.com/IsmAvatar/LateralGM/issues/159
https://github.com/IsmAvatar/LateralGM/issues/147
https://github.com/IsmAvatar/LateralGM/issues/143
https://github.com/IsmAvatar/LateralGM/issues/27

These changes are not controversial, they are the first that should be done:
https://github.com/IsmAvatar/LateralGM/blob/d038ba5fd21ddf24a62a4bf968ed35f10f93de86/org/lateralgm/components/AboutBox.java#L117
https://github.com/IsmAvatar/LateralGM/issues/232
https://github.com/IsmAvatar/LateralGM/issues/230
https://github.com/IsmAvatar/LateralGM/issues/158
https://github.com/IsmAvatar/LateralGM/issues/144
https://github.com/IsmAvatar/LateralGM/issues/93
https://github.com/IsmAvatar/LateralGM/issues/90
https://github.com/IsmAvatar/LateralGM/issues/59
https://github.com/IsmAvatar/LateralGM/issues/52
https://github.com/IsmAvatar/LateralGM/issues/24
https://github.com/IsmAvatar/LateralGM/issues/21
https://github.com/IsmAvatar/LateralGM/commit/4020882b91a8a73fa430c5927b683daf73fc9166
https://github.com/IsmAvatar/LateralGM/commit/3f667d4ca20ed5c92aeb9862a00f9d3d2e99231b
* Add shortcuts for Bold, Italic, Underline, and Alignment in Game Info editor.
* Add missing tooltips for toolbar buttons in game info/room editors.
* Change default Background color to white.
* Always asking to save changes, b4 regression. Likely the result of logical equality changes.

Being worked on:
https://github.com/IsmAvatar/LateralGM/issues/306
https://github.com/IsmAvatar/LateralGM/pull/272
https://github.com/IsmAvatar/LateralGM/pull/268
https://github.com/IsmAvatar/LateralGM/issues/263
https://github.com/IsmAvatar/LateralGM/issues/165
* Closing the object/timeline frame or the action container does not close all open actions.
https://github.com/IsmAvatar/LateralGM/issues/171

Cherry pick IsmAvatar commits:
https://github.com/IsmAvatar/LateralGM/pull/44
* Can't open the same type of action frame twice and new actions are not selected because of logical equality.

Completed items:
https://github.com/IsmAvatar/LateralGM/pull/291
https://github.com/IsmAvatar/LateralGM/pull/269
https://github.com/IsmAvatar/LateralGM/pull/264
https://github.com/IsmAvatar/LateralGM/pull/262
https://github.com/IsmAvatar/LateralGM/pull/261
https://github.com/IsmAvatar/LateralGM/pull/260

https://github.com/IsmAvatar/LateralGM/pull/251
https://github.com/IsmAvatar/LateralGM/pull/249
https://github.com/IsmAvatar/LateralGM/pull/248
https://github.com/IsmAvatar/LateralGM/pull/247
https://github.com/IsmAvatar/LateralGM/pull/244
https://github.com/IsmAvatar/LateralGM/pull/243
https://github.com/IsmAvatar/LateralGM/pull/242
https://github.com/IsmAvatar/LateralGM/pull/241
https://github.com/IsmAvatar/LateralGM/pull/240
https://github.com/IsmAvatar/LateralGM/pull/239
https://github.com/IsmAvatar/LateralGM/pull/238
https://github.com/IsmAvatar/LateralGM/pull/237
https://github.com/IsmAvatar/LateralGM/pull/236
https://github.com/IsmAvatar/LateralGM/pull/235
https://github.com/IsmAvatar/LateralGM/commit/7a1acc1e419e993b02a2212f33eb5144497d8ca0

Fixed by original maintainers (we want to branch from after these were fixed):
https://github.com/IsmAvatar/LateralGM/pull/36
https://github.com/IsmAvatar/LateralGM/issues/32
https://github.com/IsmAvatar/LateralGM/issues/11
https://github.com/IsmAvatar/LateralGM/issues/10
https://github.com/IsmAvatar/LateralGM/issues/9
https://github.com/IsmAvatar/LateralGM/issues/7
https://github.com/IsmAvatar/LateralGM/issues/4
https://github.com/IsmAvatar/LateralGM/issues/3
https://github.com/IsmAvatar/LateralGM/issues/2
#21
Third Party / Custom Look and Feels
November 08, 2015, 09:55:27 AM
This was a topic that needed written about for some time. I took the chance to sit down and explain the ideas behind the Swing look and feels and the MVC architecture.
http://enigma-dev.org/docs/Wiki/Look_and_Feel

I also created a custom look and feel derived from Metal which can be downloaded on GitHub. I am aware that the L&F looks like complete garbage, almost as bad as Metal itself, however this should serve as a basic example for anyone who wants to understand how it is done. That said, I did follow the correct coding standards of the standard look and feels.
https://github.com/RobertBColton/CalicoLaF

Custom look and feels can be plugged into LateralGM by following the other topic as a guide:
http://enigma-dev.org/forums/index.php?topic=2283

I do not believe that the Calico look and feel will ever become fully complete. It is a substantial amount of work compared to simply styling a modern JavaFX application with CSS for example. I would however like to see a nice look and feel that is unique to LateralGM, though it will likely be rebuilt in JavaFX anyway at this point. In the mean time, feel free to play around and create your own look and feels.
#22
General ENIGMA / Splashscreens
November 05, 2015, 05:39:26 AM


Ok so, basically, I am a terrible artist, and LateralGM could use a good modern splash screen. I've made several attempts before and we've come up with semi-good splash screens before. I have been making some more attempts and just can't quite get it right. If there is any graphics artist who would be interested in designing one, please share them in this topic.



















The ultimate goal here would be like one of the Microsoft splashscreens, because in my opinion, they make very aesthetically pleasing splash screens:


So far, DaSpirit and Rusky like this one and so do I, the clear winner of mine:

#23
General ENIGMA / What Java version do you use?
November 01, 2015, 01:47:08 AM
This is an important question I wanted to ask some of you. Primarily because of a ton of crazy issues you all keep having. More specifically this question relates to Linux installations of ENIGMA. The newer OpenJDK releases are virtually unable to run LateralGM or any Swing application, from dialog panes freezing to not closing and random frequent segfaults. a2h who built this website we currently use came back from some of his studies and things he's been doing and brought it to my attention.
https://github.com/IsmAvatar/LateralGM/issues/227

I tested for him in my VirtualBox Ubuntu 15.1 install with both OpenJDK 7 and 8 (specifically 8u60) and both of them easily reproduced his issues. Simply opening the Help->About dialog would hang and crash, even though nothing more is being done than a simple JOptionPane call. I then removed both of these and installed the Oracle proprietary JDK and the issues all but seemingly vanished. Historically, the Oracle JDK is what I have used to test and develop LateralGM myself and from here on out, I am going to say that is the recommended installation because Swing applications are virtually unusable with OpenJDK.

This post will tell you how to install it on Ubuntu, works the same for 15.1, look at the top answer:
http://askubuntu.com/questions/521145/how-to-install-oracle-java-on-ubuntu-14-04

These issues may be related to the new Java modularization for Java 9 which adds modules that have metadata for a package manager type interface that will come to Java. So when you install Java, you won't install the runtime and when you run a Java program it can tell the Java installation where to download the necessary packages/runtime libraries from. Because Swing and the older Java jars/libraries were not built with modularity in mind they are moving things around and hiding certain interfaces, the following news article clarifies all of this:
http://www.javaworld.com/article/2861074/java-platform/modular-javas-changes-could-break-ides.html

Many people are afraid that some IDE's, including Eclipse and NetBeans, may require substantial refactoring to work properly with the newer Java's. So this is basically just a pointer that if you are having crazy problems with LateralGM on Linux, try out the proprietary Oracle JDK.
#24
Off-Topic / Local School District Drops GameMaker
September 22, 2015, 08:18:50 AM
A small school in North Carolina has decided to stop using GameMaker: Studio because of its proprietary DRM. The school claims on a number of occasions the program corrupted games developed by students. The school is SkilStak located in Cornelius, North Carolina and is a private school for teaching students 8 to 18 years old computer programming through game design.
http://skilstak.io/

From a GitHub repository hosted by one of the school's staff members, we find the following quotes:
Quote from: SkilStak School StaffI strongly encourage anyone considering GameMaker to look at Phaser.io instead. You learn real technologies that will carry you farther than the proprietary and drag-and-drop GameMaker, (which is now owned by an online video gambling/gaming company). We have dropped GameMaker from all classes at SkilStak after it corrupted a student's game irrecoverably. He was the 6th in 3 years to lose everything because of GameMaker bugs. He would have had to reassemble everything from assets and saved code, which is stored in XML and prone to horrible merge conflicts when combined with GitHub for beginners. Just say no to GameMaker.
https://github.com/robmuh/gamemaker-tutorials

We can also find on their related Twitter account:
Quote from: SkilStak Twitter
GameMaker @yoyogames crashed and corrupted student games for the LAST TIME! Game-1 now based on phaser.io thanks to @photonstorm #html5
https://twitter.com/skilstak/status/610156089443778560

#25
Proposals / Editor Enhancement
September 08, 2015, 01:11:23 AM
So we are all aware of the traditional GM style editors:



We are all very comfortable with this to some degree, you save in the top left etc etc. But there's a problem here.

The tool bar buttons are never aligned with the content being edited. I propose that for LateralGM we move all the side panels on the room editor, path editor, sprite editor, and background editor to the right instead of the left.



With this change all of the toolbar buttons are properly aligned with the content area and requires less mouse dragging to click. What does everyone think about doing this? Since I realized this I've really come to like the idea. An alternative would be to move the toolbar in the content area (but this is gross if we keep it the edit panel on the left because I'm used to save being in the top left of the window). The other alternative is to simple right align the toolbar (though this also moves the save button to where you wouldn't expect it to be). Please let me know what you all think if I don't get enough feedback I may just end up doing this anyway.

The alternative looks like the following. To eliminate the whitespace we could put the save button in the bottom left like it is on the font editor and object editor then move the toolbar into the content area. I don't like this though because I am really used to the save button being in the top left.


As a preference it could also move the tree. The IDE would be either left or right oriented.