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 18 »
Developing ENIGMA / LateralGM
« on: October 02, 2014, 07:00:40 PM »

This is a preliminary minor release of a major build for LGM with a number of bug fixes.

You can download the new jars from the Extra Packages page.  I have also updated the hashes so should also fetch the new jars if you prefer to use the script. I have decided to not include this in a new Portable ZIP until everyone has had the chance to test the changes.
NOTE: You will need to update both the new plugin and LateralGM jars!!!

Change Log
Regressions that were introduced in and then fixed in this version are not listed here.

1) Asking to save changes should now be conditional and only show if you have actually made changes. You can also make changes, run your game, see the changes reflected without having closed the frame, close the game and still be able to revert the frame.
2) Game Information frame now properly recognizes changes, it will not complain unless you have actually changed a property or edited the document.
3) Constants frame has been partially fixed, it had several bugs in its revert methods and what not, it should now properly detect changes as well.
4) Enigma Settings have been more integrated with Game Settings, you should no longer see the node in the tree and the Game Settings frame should now also now properly recognize changes to Enigma Settings.
5) Non-instantiable resources should now have the proper references after reloading and creating new projects.
6) Tree filter has been redesigned to be a little less bloated looking.
7) The X button on resource frames no longer commits twice.
8) Fixed exception when clicking on tile tree under the "Edit" tab if no tiles exist. Also fixed a similar exception for instances.
9) Keyboard shortcuts have been moved to a properties file where they can be customized more easily, though we need to still work out external files and user modification.
10) Search feature implemented, it will search all arguments of every action of a script, shader, object, timeline, room, or instance and the nodes open the resource frame and select the appropriate event, moment, or action and open the correct code frame. Clicking on result nodes will also focus the correct line in the corresponding code editor or focus the correct argument entry field on an action frame. Directory structure is maintained and there is also a context menu that can be used to select all nodes and copy them to the clipboard to share search results.
11) Fix for bold nodes, there was an unreported issue where new children of bold nodes would become bold once you started renaming them, we now format the node with HTML instead to give it the bold effect.
12) Fixes Look and Feel bug for "Windows Classic" it's a known UI bug, just had to set the property in our look and feel code.
13) Fixed Look and Feel bug for the regular native "Windows" look and feel, this will not be applied unless you explicitly state this LNF over the "Native" one, it stops the buttons from being cut off.
14) Removes one touch expandable splitters, they have been replaced with a more common software implementation, double clicking will toggle their expanded or collapsed state, no need to spend hours in frustration hitting tiny little buttons.
15) Maximized state of the window will no longer be lost when changing look and feels from preferences, I was repacking the frame which I shouldn't have been doing.
16) Fix syntax check button from appearing multiple times on a code frame, action frame, or script frame. The issue was the subframeAppeared being fired when the frame is already visible, I simply added a parameter that tells us whether the frame was previously visible in determining whether to add the syntax check buttons.
17) Adds greater than or equal to and less than or equal to as options to action_if_variable as well as other actions that Studio forgot to; you will need to fetch changes from enigma-dev until the Portable ZIP is updated.
18) Old GM files will now scan their rooms and automatically flag the setting "Used as tileset" for backgrounds that are used as tiles in any room (committed by sorlok). This effectively prevents them from being unusable.
19) Game Information text alignment is now properly saved and works at runtime as well.
20) Fixed printing dialogs on both Game Info and Resource Info frames, they work exactly as expected and I've tested them. No print preview exists yet, but I've requested it, though Studio also does not have it and you can also preview by printing to OneNote.
21) Added external look and feel support, please see accompanying tutorial post.
22) Improved the main zoom tool for the Sprite and Background editor, the calculation was wrong. It will now properly center around points.
23) Fixed loading exception dialog, it was not properly displaying the stack trace. It was also showing multiple dialogs, and there was an issue in the GMX reader. Additionally I made the populateTree method check to see if a node of the registered types already exist, what this means is if you have an error trying to load your project you won't end up with a duplicated tree.
24) Fixed exception in the Room Editor when icon is missing.
25) Swing Icon Pack is no longer included in the jar, nobody wanted to maintain it and LGM only needs 2 default icon packs, 1 nice looking one and a contrasting version of it for dark themes.
26) Fixed an issue with custom icon packs, the custom path should not have caused the icon pack option to always be overriden, I had the implementation backwards and intended for the internal jar location to be used when the custom user path did not actually exist.
27) Fixed exception reported by Josh caused when centering instances in the room editor that do not have sprites.
28) Fixed a painting exception in the ImageToolTipUI occurring when hovering over resource menus.
29) Fixed an issue where certain look and feels would cause the main frame to overlap the toolbar on Windows on some platforms, and yes this also includes the default Swing look and feel.
30) You can also use a custom background image for LGM's window area now, create a file called "lgmbackground.png" in the "lookandfeels" folder next to lateralgm.jar and the image should be applied during the splash screen when you load. The following is a link to LGM's dark background.
31) Fixed long existing PropertyLinkFactory disposal issues that were propagating into race conditions in multiple editors. ResourceFrames now dispose of them automatically, custom PLF's will need to be disposed by overriding the frame dispose method.
32) Fixed a mistake made in Game Information that caused its little settings window to create its controls twice.
33) Simple JoshEdit print support added, word wrapping is not yet supported just like Studio. Printing interface is designed to be Java/AWT/Swing compliant and implements the standard feature set.
34) Exception reporting has been improved for file loading errors, GmFormatException and ProjectFormatException were essentially throwing away half of the stack trace.
35) Fixed horizontal and vertical snap properties in the GMX writer where they were being written backwards.
36) Fixed transitivity in some toolbars.
37) Window decorations can now be disabled, this means the look and feel will not be able to decorate the window border if you don't want it to, this required fixing the toolbar transitivity first.
38) Hardware acceleration is no longer forced off, there are now preferences to force OpenGL or Direct3D on or off or let the Java system decide and there is a similar preference for antialiasing of control fonts. The JVM will detect if your hardware supports hardware accelerated rendering so I recommend keeping the settings left at "default" but for those of us that do have the capable graphics hardware this will seriously improve the speed of rendering for LGM. Testing sprite animation playback was a lot smoother and higher frequency once I implemented the preference to stop forcing it off for everyone, it also reduced CPU and RAM usage significantly.
39) Fixed a component transparency issue caused when using *.lib action libraries from GM, they were supposed to be taking the transparency color from the bottom left corner.
40) Fixed the EventPanel layout, it was setting it before actually laying out the components causing it to look incorrect under certain look and feels, specifically the new dark one.
41) Fixed an old mistake I made in the Game Settings frame mixing up the DESCRIPTION and INFORMATION properties.
42) Switching look and feels no longer breaks layouts, I have a special wrapper class for this.
43) Stopped a look and feel change from readding the icons to the Preferences tree, just had to make a custom class as a wrapper and basically an empty shell to fix it.
44) The MDI area scrollbars are now only shown when needed, so when you maximize a frame they will not be visible, just like normal MDI managers and the one in GM8.1, giving just a little more space on screen.
45) Icon reading exception fixed by sorlok for some ico files that have empty/fake masks.
46) Implemented undo and redo to the action list editors you can undo multiple actions such as move, cut, copy, paste, delete, and clear. The only thing that does not yet get undone is changes to the actions values, not even recognized yet as an undo operation.
47) Fixed exceptions for some file open dialogs when you enter a filename for a file that does not exist. This needs further cleaned up.
48) Added APNG loading to the sprite and background editor, the file extension will need to be ".apng" for LGM to load all the subimages from it, or it will think it's a regular PNG. It can be used to mix GIF's and APNG's in the sprite editor. This required moving the APNG reader/writer from the plugin to LGM.
49) Added line numbers to the action list editor that uses the default UI colors for now.
50) Added a save button to the sprite and background frames, the sprite frame will save the selected subimages or if none are selected it will save all subimages, in order for it to be animated you will obviously have to save to an animated format such as APNG, GIF writing currently does not support multiple subframes. A dialog will also be displayed warning you if haven't yet created an image for the sprite or background.
51) Fixed a typo in the GMX reader that was causing room persistence to not be read properly.
52) Load dialogs will now verify that the file exists and if it does not it will warn you to verify the file name. You will see this on all file dialogs, including the one for loading projects, images, sprites, game information, etc.
53) Added confirm overwrite dialog to JoshEdit and LGM file choosers when saving files to disk.
54) Temporarily patched an issue that caused the language preference to not explicitly override the operating system locale, though I am currently waiting for IsmAvatar to see if she would like it fixed differently because I have another solution that is just as easy. This issue was reported by egofree.
55) You can now preview icon files when loading them. We broke Christian Trebel's ICOReader when we originally ported it by automatically closing the stream, this is incompatible when plugging it into ImageIO, you need to close the stream manually. So that is fixed, but also I double checked to make sure streams were not left open from game info and elsewhere and properly closed the streams where they needed to be.
56) ICO files can now be loaded by the background and sprite editors, the sprite editor will load all layers.
57) Prefix options have been full implemented, you do not need to restart they take immediate effect, adding new resource types also doesn't require updating the preferences frame anymore, it is generated dynamically.
58) Game icon and version information have been fully moved to the Platforms/Windows tab in Game Settings, Project Information is now fully implemented as well so information and description are properly distinguished now. Other platform settings are soon to follow.
59) Made the layout for physics options on the object frame more compact and correct.
60) Fixed a race condition between messages, preferences, and resource kinds which was necessary to implement prefix preferences. So the tree groups can be translated again.
61) Increased the default room size a bit, default size is way too small.
62) Added missing separators to some resource frames
63) Symbols are translated again for the object frame, so no double semicolons will appear under the French translation.
64) Added translations for messages that were not translated before.
65) Switched the executable file chooser to use the LGM CustomFileChooser, so it will now ask you whether to overwrite files when you save an executable and things like that.
66) Stopped the sprite frame subimage selection from going out of bounds when clicking a button, the last frame will still be properly previewed.
67) Fixed issues where the checkered patterns for image previews were not resizing without closing and reopening the resource frame, this was caused by me caching the image without checking if the size changed.
68) Image effects frame implemented and 12 basic effects including Colorize, Intensity, Outline, Emboss, Black and White, Invert Color, Remove Color, Remove Transparency, Sharpen, Blur, Opacity, and Edge detection. The little green spray paint can icon on the sprite and background frame will open the image effects frame. For sprites you can apply it to all selected subimages, otherwise just select 1 subimage, if no subimages are selected it will be applied to every subimage.
69) A fix was included by egofree for the GMX writer to give all tiles unique names using the id, which works with Studio though is less hash-like. A similar fix was previously included for instances by myself.
70) Fixed exception in instance list of the room editor when selected instance has a non-existant object reference. For example you create an instance of an object and then delete the object resource, the instance becomes of unlinked.
71) Moved transparency functions, such as for checkered patterns, to Utility class.
72) Moved the current tile layer above the tabs and other changes include removing the now useless "Batch" tab
73) Fixed depth issue to make sure the selected instance/tile is always visible
74) Fixed a tile moving bug
75) Added rectangular selections tools
76) Added cut, copy, paste functionality to the room editor

Off-Topic / Windows 10
« on: October 01, 2014, 08:12:17 AM »

I guess somebody at Microsoft can't count...

I'll concede, I am actually very excited for Windows 10, the quicker we kill Vista along with XP the better. Additionally I like the task switcher button, that is a really awesome new feature that should have been in Windows 8 honestly. It technically is you just don't see it without ALT+TAB. Plus a workspace switcher like Ubuntu, that was one of my favorite Ubuntu features.

Also there's finally going to be CTRL+C and other clipboard shortcuts and stuff for Command Prompt. I can't wait I really might sign up for the developer preview just to get my hands on it.

General ENIGMA / Externalizing LateralGM
« on: September 28, 2014, 01:33:21 PM »
I want to make the case for excluding several things from LateralGM's JAR and redistributing it as a zip file.

1) I want to externalize the file that configures all the keyboard shortcuts of the application to allow people to change the shortcuts.
2) I want people to easily be able to add and change existing icon packs by placing them in a folder called icons and every top level folder will become a new icon pack.
3) I want to do the same thing I want to do for icons with languages and allow people to easily add new language packs.
4) I want to externalize all the LGL action libraries to a folder where LGM will load them to allow users the easy ability to add and remove action libraries as well as modify and utilize existing ones, even those made for GM since we already have the code to load them it doesn't make any sense not to offer the capability, obviously for legal purposes we use our own LGL format.

Anybody that knows me knows that I have never been one for creating applications that package everything into a single file, it has never been my thing and I strongly oppose it for several reasons. I like applications that you can easily modify without hassle or even having to know what you are doing, and I find this aspect of LateralGM to actually be against what makes LGM great, its free and open source nature.

General ENIGMA / New Portable
« on: September 23, 2014, 01:25:52 PM »
I just want to let everyone know that after extensive testing several new improvements and general cleanup has been included in a new release of the Portable ZIP. Some such changes include typo fixes, missing XLIB functions, inconsistencies, and many other changes including the introduction of scaling options for XLIB.

You can get the new Portable from the downloads page.

You can as always manually update the jars and pull the changes yourself.

General ENIGMA / Searching In Resources
« on: September 13, 2014, 08:09:47 PM »
I've been back and forth contemplating the implementation of a global search feature to quickly find use of functions and variables in LateralGM.

This is what searching for resources is like in Studio. The results are tabled and can be saved to a text file, though not copied to your clipboard.

In Eclipse IDE when you search there is a docked form to the bottom that appears with a filtered version of the file tree that allows you to expand files to find the occurrence of each expression. You can also copy the nodes to your clipboard to save the results in a text editor to a file or share them.

Both of these options are possible, though if we were to go the Eclipse route the results do not actually have to be docked they can be a free form or something similar. There are several questions I would like to ask everyone. Going back to the Eclipse idea also gave me the idea again about the search filter having more advanced settings, we could make it search inside the resources like Windows explorer and thread the results to feed in as the search completes. The search filter results would be like an extension of what eclipse does basically, because I thought of this I saw no reason to have a separate search feature at all.

A) What do you think about the GM search feature?
A.1) If I were to implement LGM's this way, would you like the ability to copy the results to the clipboard?
A.2) Would you like the search results to be a separate form from the search settings or should they be the same form/window?
B) What do you think about the Eclipse search feature?
B.1) Would you like the search results to be a separate form from the search settings or should they be the same form/window?
C) What do you think about the search filter on the resource tree having more advanced options?
C.1) Would you want this in addition to a separate search feature?

Answers to these questions will better assist me in the implementation of advanced resource search functionality and I am also open to new suggestions. You do not have to participate in my R&D but by participating in the questionnaire and posting your answers you agree that you have given informed consent to participate.

General ENIGMA / JavaFX on ARM
« on: September 12, 2014, 09:54:20 PM »
Apparently Oracle added ARM support for the JavaFX library which is included since JSE 7, making LGM much more likely to work on Chromebooks and other smaller devices and embedded systems in the future. This has actually been in development for a year now and available in Early Access since the very beginning of 2013 but has just now entered the main Java SE update stream, JDK8u20

I know a lot of you have been wanting LateralGM on more platforms and I understand why so this is good news overall, I don't think I've stressed enough how much I want LGM to embrace new Java technologies. Some of the features of Java 8 I am planning to implement as soon as I can find time such as JavaScript extensions, these features will merely be disabled when running in an older JDK that does not support them. Porting the components to JavaFX however will probably be done in a fork.

General ENIGMA / LGM 1.8.6
« on: September 09, 2014, 10:00:28 PM »

Minor release with recent changes and fixes.

You can manually update using the python script or from the Extra Packages page with also a git pull for ENIGMA.
You can also download the new Portable ZIP.

* New resource search filter that can be optionally disabled from the preferences window.
* icons are now fixed thanks to sorlok, LGM can read icons of any size with any internal format
* ENIGMA Settings Frame has been merged with Global Game Settings, some old files may need fixed by simply opening the ZIP and removing the node from the top level TOC, if anybody needs help send me the file.
* ^^ operator now works thanks to heathtech
* Recent room editor improvements by egofree included
* Explore Project button fixed for when no project is actually open or you have not yet saved, it will open LateralGM's working directory instead of throwing an exception.
* Other changes and fixes included

General ENIGMA / Settings/Preferences Redesign
« on: September 09, 2014, 01:18:46 PM »
This is another feature I have finished today that I have been meaning to implement for some time. Replace the tab controls with a tree view to better organize settings and preferences. This is ultimately intended to give these interfaces more room as we need to expand them for more settings such as platform settings for not just Windows and many other things. The new interfaces are more reminiscent of Visual Studio and Eclipse or Code::Blocks preference panels.

Down the road it is possible for me to also had a filter functionality to those trees like other IDE's have once they get more features implemented to them. But this is also intended to bring about another change, removing ENIGMA settings. My objective is to allow the ENIGMA plugin to extend the Preferences and Game Settings window for permanent and per-project compiler and API settings. So ENIGMA settings will vanish without breaking any of your EGM's and all of its settings will now show up in Game Settings if of course you have LGM to hooked up to the plugin.

I would like you guys to offer some feedback on my vision for the future of LateralGM, please do not hesitate to let me know how you think about this.

General ENIGMA / Search Filter
« on: September 08, 2014, 06:27:20 PM »
Well this was just something I wanted to experiment with today, saw it in the new Studio and really liked the feature so I spent all day coding it and perfecting it to make sure there were no glitches. Functions pretty well and just about the same as Studio and is easily expandable for more capabilities such as regular expressions and case sensitivity. I optimized the searching/filtering as best I could as well so you should expect it to work pretty efficiently.

There are a couple of differences to note however. In the ENIGMA version if you have focus on the search filter and hit enter the selected resource is automatically opened in its editor, Studio does absolutely nothing so I just thought this was a nice little addition. I would appreciate it if everyone could test this new feature and give me some feedback or let me know of any errors encountered and whether or not you like the feature. If everyone likes it and it works out well I will send the changes upstream.

Edit: Changes stable and sent upstream.

This was the commit.

The LateralGM version has been incremented to 1.8.6 and also includes egofree's room editor improvements.
The new LGM can be obtained via the extra packages page or through the python script.
A new Portable is also available for download.

General ENIGMA / Updated Version
« on: August 31, 2014, 12:16:03 PM »
I have decided to pull and test all the recent changes made and done my best at building a new Portable ZIP where everything appears to be working.

You can manually update the ENIGMA sources using git and then obtain the LateralGM and plugin jars manually if you so choose.

You can also download the newest Portable ZIP, however I have not addressed the issue with Chrome flagging it as malicious.

Change Log
* Addressed an issue with drag and drop parsing when parameters are left blank with 0 length.
* Addressed a GMX action reading issue, setVal needed called anyway and this is why DND actions loading from a GMX that referenced resources were not working, not the entire action just the specific argument.
* All of egofree's improvements to the room editor should be included as well as preCreationCode
* Various fixes by sorlok for timelines, iterators, scoping and other compiler issues.

If anybody wants a more detailed change log just list the items and I'll update my post.

Proposals / Threading
« on: August 02, 2014, 07:21:57 PM »
This is just a quick opinion topic I want to get you guys thoughts on some things.

First, script_thread should not automatically execute, like any other programming language we should be able to create the thread and then execute when want, so I propose the addition of the following function.

I would also like to propose syntax handling to allow inline threads like Java.
Code: (EDL) [Select]
thread_create() {
  show_message("Thread Running");

// also the following
var thread = thread_create() {
  show_message("Thread Running");

General ENIGMA / Mipmapping Implemented
« on: July 31, 2014, 11:22:54 PM »
Well after cleaning up all of the latest texture handling to put us back on par with Studio you can now use mipmapping. You can generate mipmaps with the new texture_add or the traditional sprite_add/background_add and then set the filter using the new texture functions. You'll have to pull my changes from GitHub to start using the updated functions, I am waiting to update the ZIP so I can add it into the compiler and let you toggle mipmaps on sprites and backgrounds in LateralGM since it is anticipated that this will also be a feature of Studio. Why you ask? Because I asked Dailly a couple of times in person and he confirmed it, he just for some reason thinks it takes more effort than it really does? He literally told me it's a complex feature that takes time to test and implement on multiple platforms, but for some reason application_surface and other changes are implemented abruptly and brutally, idk, don't ask me because I am not him.

Documentation is available on the Wiki.

The functions work the same for all graphics systems and utilizing mipmapping on high resolution textures should improve your games performance dramatically, for instance my terrain demo goes from 100fps to around 500 as you can see in the screenshot.

The updated version that is watered down for the sake of showing off mipmapping is available for download.
Size: 1.22mb's

Developing ENIGMA / Font Pixel Alignment
« on: July 31, 2014, 09:27:02 PM »
Ok so I need to describe a fault in our text drawing functions in detail. Some of you may have noticed the interpolation distorts your fonts, but not in the way you would expect. Examine the following.

Note: It really helps to open these images in Paint or another program with no filtering and zoom down to examine the pixels.

In this first image we see what happens when we draw the text at full integer coordinates with interpolation enabled. Notice interpolation does not effect most of the characters and most have crisp edges, as if interpolation is not even enabled.

In this second image we see what happens when we draw the text at half integer coordinates with interpolation. Notice interpolation is mostly working on most of the characters but a few have crisp edges.

Note: This is the behavior observed in Direct3D9 as well, except the behavior appears to be reversed appearing interpolated with full integer coordinates and not with half integer coordinates.

This is not something which can be fixed purely by disabling interpolation or padding the font textures though they still need to be anyway. This could have also been the cause of other font anomalies for some of you at an earlier time. I have also confirmed this issue to be the result of characters rendering at different locations between OGL and D3D if we round and draw at full integer coordinates the characters appear at the exact same location in all graphics systems. The problem exists in our text rendering functions, they either all need to be at full integer coordinates or all at half. Generally they should always be at half integer coordinates with vector graphics, like half pixel alignment in Inkscape.

However, when scrolling backgrounds or text it helps to allow them to transition between half and full pixel integer coordinates to make them blend smoothly. My proposal is simple, we merely need to align all the characters of a draw_text call to either full or half integer coordinates and no in-between, this is something we can all mutually agree on. Now me and Josh disagree however about when extra spacing should be applied, Josh believes it should be every 3rd or 4th character where as I believe the excess spacing should be applied immediately after it reaches a whole number.

It basically has to do with how we handle xx as you can examine on the following line.

With the following modification to the drawn text function, the text and all characters are drawn at full integer coordinates and properly and evenly spaced between all graphics systems at the exact same coordinates with or without interpolation enabled.
Code: (C++) [Select]
            unsigned xxx = xx;
            draw_vertex_texture(x + xxx + g->x,  yy + g->y, g->tx, g->ty);
            draw_vertex_texture(x + xxx + g->x2, yy + g->y, g->tx2, g->ty);
            draw_vertex_texture(x + xxx + g->x,  yy + g->y2, g->tx,  g->ty2);
            draw_vertex_texture(x + xxx + g->x2, yy + g->y2, g->tx2, g->ty2);

These are the results with the above changes. The following is drawn starting at full pixel passed to the draw text function and interpolation enabled, this is actually what it should look like with interpolation enabled when the font texture is not padded.

The following is drawn starting at half pixels passed to the draw text function with interpolation enabled, this is how GM avoids interpolation on font textures, it always draws at full integer coordinates like most game engines.

Now as I said GM and most game engines always render fonts at full integer coordinates, but this can cause them to be blocky when you want scrolling text, it makes the transition much more abrupt, you want this blurring that is caused by half integer coordinates when drawing 2D objects, sprites, backgrounds, and text. Therefore, I believe I will temporarily prepare a pull request to be merged immediately that draws our text at full integer coordinates like everyone else until we can come up with an alternative or decide on a solution.

It would help if everyone including Josh could weigh in and offer their opinions.

Off-Topic / MacOS Counter-intuitive?
« on: July 30, 2014, 12:09:12 AM »
Is Macintosh the most counter-intuitive operating system in the world? Let's examine the evidence.

General ENIGMA / Indentation Styles
« on: July 20, 2014, 03:07:56 PM »
Well I recently provoked IsmAvatar on GitHub about two spaced indentations in which she raised some interesting counter arguments.

I also recently updated the coding techniques article to address this.

Anybody with a GitHub account respond there, otherwise respond here.

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