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.

Topics - Goombert

Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 »
Tips, Tutorials, Examples / Sprite Patch Scripts
« on: May 01, 2016, 07:09:11 pm »
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) {
            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.

General ENIGMA / What do you want?
« on: April 23, 2016, 05: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:

Maybe if everyone reaches a consensus on a really important issue, I will actually do it.

Announcements / LateralGM
« on: April 15, 2016, 01: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 so that script can also be used to fetch the latest LateralGM and plugin jars.

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.

* 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.
* 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.
* Fixed an issue with the play button being enabled for Mp3's by mistake.
* 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.
* Fixed exception caused by images smaller than 5x5 pixels.
* 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.
* Added the missing "Alpha Tolerance" property to the sprite frame, which works the same as GM8.1 for detecting the collision mask.
* 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.
* Fixed instance id's for the GMX format.
* 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.
* 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.
* 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).
* 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.
* 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.

* 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.

* 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. 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).

* 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.
* 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.
* 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.

* 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.
Code: [Select]
git clone --recursive

General ENIGMA / OpenJDK is haunted
« on: April 02, 2016, 10:40:25 pm »

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:

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.

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.

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.

Developing ENIGMA / Translations Help
« on: January 23, 2016, 09:12:11 pm »
Hello guys, I am wondering if someone can help translate the following messages for me.

Quote from: LGM
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}"

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

GameSettingFrame.TITLE_VERSION=Version Information

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.

General ENIGMA / Stable Branch/lgm16b5
« on: January 19, 2016, 03: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

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:

These changes are not controversial, they are the first that should be done:
* 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:
* Closing the object/timeline frame or the action container does not close all open actions.

Cherry pick IsmAvatar commits:
* Can't open the same type of action frame twice and new actions are not selected because of logical equality.

Completed items:

Fixed by original maintainers (we want to branch from after these were fixed):

Third Party / Custom Look and Feels
« on: November 08, 2015, 04: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.

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.

Custom look and feels can be plugged into LateralGM by following the other topic as a guide:

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.

General ENIGMA / Splashscreens
« on: November 05, 2015, 12: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:

General ENIGMA / What Java version do you use?
« on: October 31, 2015, 08:47:08 pm »
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.

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:

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:

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.

Off-Topic / Local School District Drops GameMaker
« on: September 22, 2015, 03: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.

From a GitHub repository hosted by one of the school's staff members, we find the following quotes:
Quote from: SkilStak School Staff
I strongly encourage anyone considering GameMaker to look at 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.

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 thanks to @photonstorm #html5

Proposals / Editor Enhancement
« on: September 07, 2015, 08:11:23 pm »
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.

Proposals / Google Breakpad
« on: September 02, 2015, 08:56:49 am »
This is a cool library used in Firefox, Chrome, and Google Earth. It allows you to build an executable with no debugging symbols, the library will generate crash minidumps. The debugging symbols are saved during compilation of the executable though. Later when a crash occurs a separate program can take the minidump and the debug symbols and put them back together again to create a human readable stacktrace. So basically you can build an executable without debug information and still debug it.

I think this would be something really useful to take advantage of in ENIGMA. It would allow our end users to make extremely efficient games but still debug them just as in every GM 8.1 or earlier GameMaker version. It would also give us extremely useful information when users report an ENIGMA crash to us on GitHub as we can cache and store the debug symbols for every release we've made or have them include it with the crash report.

Using it with end user games would be a little trickier though because it means when you release your game you have to hold on to a copy of your debug symbols and properly version your game. However I think I have already thought of a way around this. Since we already make use of zlib to archive the resources, we could also archive the debug symbols file right into the executable. While this would still increase the file size of executables to include the debug symbols the game would not run like shit because the symbols would be separated from the program code.

This would mean that anywhere a game is used it would run just as you would expect but you could also take any crash/minidump log it spits out and feed the executable and the dump file to a debugger to get a human readable stacktrace. We could also achieve GM8.1 and LGM style exception dialogs by just embedding it into every exe or make it an option if the users really care to squeeze out the few extra bytes in file size. Either way I think this could seriously improve the situation regarding debugging in both ENIGMA and its engine and end user games. I'd like to know what everyone thinks.

Developing ENIGMA / Migrate Releases
« on: September 02, 2015, 01:49:20 am »
I want to propose this since I've been making more use of it in recent projects. When we archived the old LGM versions we stuck them in our dropboxes which is, despite me having created a shared ENIGMA dropbox, still subject to link rot. I never did attempt to migrate our old and new releases to GitHub because I never understood the feature until now.

Basically if we move all of the ENIGMA ZIP's, old LGM jars, and all those old revisions and packages over to the GitHub release pages we get static links.
For example:

Instead of what we have now on the LateralGM: Revisions Wiki page:

Notice how the GitHub version is not subject to link rot? This is by GitHub's own design for the very reason we are intending to use it. Using the GitHub release pages also allows me to archive the change logs in the description. This is important because our forum is also subject to link rot as topics are moved and the forum board evolves, people will still be able to find the change log well into the future (considering GitHub is probably more likely to be around in 10 to 20 years than we are). This also means we don't have to make so much use of third parties like dropbox since setting up proper file transfer to ENIGMA's server would be a lot of work and cumbersome to say the least (which is why we are still struggling to finish the EDC). This also means that every contributor can establish a release if they have appropriate access to the repository.

There are some things that need addressed. Primarily the GitHub release mechanism automatically versions the repository and detects change logs. So if you don't enter a description it automatically detects the changes made to the repository since the last release was made, which we can make more effective use of in the future. This will make our initial migration of the old releases cumbersome though as I'll have to paste all of the change logs there and you'll just have to ignore the one GitHub shows in cases where a change log can't be found (I have them for all of my releases just not LGM 1571), which is not that big of a deal. This also means however that ENIGMA needs to establish version numbering and so do all of the other projects including JEIE, etc etc.

Once this is done however I would update all the appropriate documentation on the Wiki and related links. I would not delete the old revisions archived on our shared dropbox but the Wiki and everything would be updated to reflect the new release process. I also would not delete the old revisions page right away until some point in the future when the links become broken or our shared dropbox has been fragmented.

I would continue to maintain the Extra Packages page for quick links to all of the latest releases. The page would just be updated with the rest of the Wiki.

I've experimented with archiving two old releases of LateralGM on its repository.

I also believe this would reduce the confusion of random people finding LateralGM through Google and not knowing where to download it. The GitHub release mechanism is pretty common and you know people have come to get used to it, myself included. It also makes formatting the change logs nicer by allowing us to use markdown and link to specific tickets instead of by URL like I do now.

I'd like to know what you all think about this, I think this is the way to go and I am looking to do all the footwork to make the change. I'd just like to take some feedback and suggestions on it first.

Also I will need additional privileges to a few repositories such as JEIE to do the releases which I asked IsmAvatar about before but never got a response, hopefully I can get a hold of her.

Edit: Actually it seems like it is possible when drafting the releases to base them on a certain commit, but I don't know how far back we'd have to dig. I could probably dig for all of the releases I made but maybe not the ones for 1.6 and 1.5 as they may not have been migrated from Sourceforge.

Developing ENIGMA / Styleguide
« on: August 31, 2015, 09:00:14 pm »
This was always a huge problem when I began contributing to ENIGMA. Having to format and reformat code constantly. Recently I've taken the practice of using standard style guides for my projects and sticking to them.

I feel ENIGMA and LateralGM have suffered tremendously from the lack of an enforced styleguide. This post is not about tabs vs spaces but about using consistent formatting in both projects.

My personal preference would be the use of a mixture of space and tab indentations which I am conflicted on but have expressed in a 64Digits post:

I've been configuring my code editors to allow me to use a consistent coding style for multiple projects. I was simply reviewing some of ENIGMA's source code and stumbled upon the inconsistencies in formatting, caused by myself and a lot of others. You can see in the following screenshot some of the problems, some lines are indented using tabs and others with 2 or 4 spaces.

This makes it considerably difficult for contributors, including each and everyone one of us, whether we prefer tabs or spaces. The reason is simple and that is the lack of consistency. I would be able to work with either depending on what everyone else would prefer to use. But I think the quality of our code base could be seriously improved through the ratification of a standard coding style for the project with input from everyone. Please let me know what you think.

Developing ENIGMA / Internationalization and Localization
« on: August 24, 2015, 02:46:01 am »
Just thinking about the troubles LateralGM had maintaining translations. There's a startup project that basically works like git for translations where authors can create translations for a project.

As an example this is the one for the ControlsFX project:

This could be a good idea for the future as it can attract more professional translation services and there are paid versions too.

Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 »