Mallets's Forum Posts

  • A game made entirely in Construct 2 using the NW.js wrapper as well as a whole lotta man hours.

    Steam page:

    http://store.steampowered.com/app/664510/Infernal_Racket/

    From the Steam page:

    Have you ever dreamed of causing untold millions of dollars in property damage while steamrolling everyone in your path? Infernal Racket combines the satisfaction of arcade-style platforming with the guilty pleasure of shattering fragile glassware. Easy to pick up and hard to put down, Infernal Racket is cathartic chaos.

    Smash your way through hundreds of hand-designed levels! The more property damage you cause, the greater the reward, but keep moving--the Spirit of Glass is tracking you down!

    Key features:

    --Survive over 200 hand-crafted levels while breaking everything you can--fine china, priceless sculptures, ancient gemstones, and more!

    --Break glass to gain experience and level up! Choose from 10 powerful upgrades, including the dreaded Murderator (tm).

    --Adjustable shrapnel levels so you can fill the screen with debris and glass shards to your liking!

    --It's like Donkey Kong but you always have the hammer! It's like Pac-Man but you're always powered up! Get revenge on decades of video game enemies that have killed you just by touching you.

    --Unlimited Replayability! Levels are chosen randomly each time you play, but they always get more challenging the longer you survive!

  • Has anyone encountered issue when attempting to write inside the AppData\local or \roaming folders with C2? I've found that writing to the root of the user folder, e.g. "<USER> & savedata.json" works just fine, but when C2 is coded to create and write to a new path inside AppData, it runs into a call stack error (because of infinitely recursive functions).

    I'm not sure if this is simply because of an error on my part, or whether there is some functional difference between permissions inside the root of the user folder and the AppData folder inside of it. I assume that you have to use the NW.js action "Create folder" before you can write to a new folder as well? My exported project has had about a 50% success rate with writing successfully to the desired AppData sub-folder, and the other 50% of the time results in a crash right away. This was tested on about 15 different computers and configurations of Windows.

  • Hi all,

    I'm trying to get a Mac version of a project to run. The project works fine on Windows, but every time I open the app on Mac OS, it stops around 30% to 40% of the way through my loader layout. I have a custom loading bar for the loader layout using the loadingprogress experssion from 0 to 1. The game still animates during the loader layout but it never completes loading. Occasionally after closing out the game when it softlocks, it will randomly complete the loader layout progress like it should, but fail next time I start it.

    As per the manual, the loader layout only loads images--all the actual code is loaded in the first loading screen (with the blue bar and small logo). So I can't imagine why loading images would sometimes softlock the game and other times not.

    There is one potential explanation: I use a "legacy" version of NW.js (version 14) specifically for exporting the Mac version, as the current version of NW.js causes the game not to even load ("Game crashed unexpectedly" no matter what) on Mac OS 10.8. So replacing the Nw.js files in the exported game folder with the legacy versions at least allows it to run, but might also be causing this loader layout freezing.

    Has anyone experienced a similar issue with the loader layout not completing? Is there anyway to look at the devtools or console and see where it's getting hung up (perhaps with one specific image)?

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • I have been noticing this behavior for a while but I don't know that it's necessarily a bug, but maybe intended in some way. The project in question is several hundred MB and is preparing to be commercially released.

    Ehat happens is that when the project is loading in the preview window (whether it's in debug mode or normal), there's a good chance (40-50%) that when it is fully loaded (when the blue loading bar hits 100%), the preview window will silently and instantly close itself as if I had ALT+F4'd it. No error messages, no indication of why, and then it's as if I had never pressed the preview button (I can do it again from the editor and it usually works a 2nd time). It seems to happen more often when I already have a preview window open and attempt to preview the project again (continuous preview has never worked for me). It has even occurred when using the "restart" button inside the debugger tools menu.

    The only code in the game capable of quitting the project like this is set to wait for a specific function using a specific parameter that can only be called by the player clicking a button, so I don't think that code has anything to do with this strange behavior.

    My previews are run in NW.js, and I have noticed this happening regardless of the version of C2 or NW.js that I'm using.

  • About dev-tools option:

    [quote:r5wx7o6s]This does not meaningfully improve the security of your game, if that's what you want. I'm not sure what anyone can do with your game even if they can open dev tools anyway, the code is all minified and already has reverse-engineering protections. If you just want to turn off the option you can already apply the command-line argument from within C3.

    It's not really about security improvement, but more (as someone else mentioned) game "cleanliness" and allowing the developer to have full control over how the game presents. If a developer plans to release the game on Steam for example, it would definitely come off as a bit sloppy in a finished product. The command line argument is fine with me but I feel like exported builds should have this toggled off by default and instead allow you to manually enable dev-tools if needed (hence the whole "making this a checkbox toggle in C3's options menu would be extremely helpful because many people might not know how to disable dev-tools with command-lines). Of course, this might be better addressed on the NW.js side of things, but at the very least having it as a checkbox option when exporting would be a great QoL improvement.

    Anyway, I agree with your points, and I can't possibly understand just how busy you guys are with C3 -- these gripes probably seem absolutely minuscule in comparison! Just keep doing what you're doing

  • I realize that many people use C2/C3 for browser-based games, but I am using it with NW.js to create standalone games. So I was very put off by the fact that there are virtually no options available for customizing the game's .exe presentation. Here's a short list:

    --To change the executable's image icon, you need to download a third party tool (I use Resource Hacker) and replace the default NW.js "compass" icon with the icon of your choice.

    --To change the default loading icon when you first open up an NW.js game, you have to manually replace the default icon with one of your own, overwriting it in the resource tree tab. This is not mentioned at all (except the forum posts I've found where other users had the same issue).

    --To disable devtools on a completed game, you need to download the standard, non-Construct version of NW.js or similarly, edit the .json data of your version of NW.js for C2 and add an argument to disable calling devtools with F12.

    --You also need to separately change the name that is displayed in the game's window (along the top left corner) by editing the NW.js JSON file.

    --Last and probably least, no support for installers for a game or easily selecting the default save directory.

    I am comparing these features mainly to Game Maker's suite of options for the same tasks. Game Maker has a set of options specifically for these, including setting the splash screen logo and window icon, as well as checkboxes to toggle "show mouse cursor," "allow full screen switching," and "borderless window." Some of those options are covered when you go to export an NW.js project, but for the rest, it's like pulling teeth to get these standalone options the way you want them. Integrating these options into C3 would go a long way towards QoL improvements for NW.js users (instead of changing data in the NW.js installation files and then exporting the entire project to verify that it all worked out correctly).

  • Seems to happen a fraction of the time without any specific cause.

    r244 x64

    English

    Nw.js

    Windows 7

  • Without creating a large group of events customized to each project, there's no way that I know of to take a snapshot of all the current global variables and their values (same with an instance and its variables). The easiest way to compare global vars in two different game states would be to do it one at a time in debug mode and try to hunt down any differences (but debug mode is often sluggish enough that it's not worth the trouble to try to navigate).

    Is it even possible to have some sort of behavior or plug-in that allows one to use the condition "for each global/instance variable" to immediately capture all variables and their values, then store that data (in a dictionary, an array, or in a text file or something).

  • I haven't been able to find any news about a release date, although I did see that license plans are now for sale. Or was this more of a soft launch and it's essentially released (with updates to come, of course).

  • Before I begin to explain the premise, I have already considered doing it in small chunks in intervals or in real-time, but both of those methods will require a lot of code re-writing.

    Currently, the credits screen for my project is about 7,000 characters, and I want each spritefont character to be a separate object, rather than a single block of even a line at a time. Of course, at the start of the layout, the loop that requests "credits.txt" runs 7,000 times, and the game hangs for about two seconds while it's loading. The benefit to this text file is that I can edit the credits any time in a very intuitive way inside the text file, rather than doing it line by line in the events editor. I do have a copy of the spritefont outside the layout as is normally recommended with sprites (to prevent short stutters when a sprite is created for the first time), but I don't expect it's doing much to help.

    There is an excellent tutorial about creating a new "loading" layer on top of layouts so that the player doesn't see the ugliness of a game chugging along while sprites load. While that will require some tinkering to get working, I'm happy to do it. But I would love to know about any other potential options I have in forcing a layout to wait until all objects are loaded before it beings "playing."

    Thank you!

  • Thanks for this information. I see your posts all the time on the forums. You have been endlessly helpful in answering questions for me and others in the past. Cheers!

  • I've been encountering this issue for some time and I still haven't been able to pinpoint the origin, but it keeps appearing whenever I use the Timer behavior.

    I have 20-30 instances of Enemy A, and when they enter their attack phase, each one sets a timer for 0.5 seconds to prepare. Example:

    On enter "Attack Phase"

    --Set Timer "AttackPause" to 0.5 seconds

    On timer "AttackPause"

    --Spawn bullet

    --Set bullet angle of motion to....

    --etc

    When "Attack" animation finished:

    --Return to "Patrol" Phase

    However, sometimes, if there are many instances of that enemy, one instance will occasionally enter the attack phase and then suddenly leave it as if he had already attacked. I believe this is caused by another instance of the same enemy having just recently completed his own attack phase events. In other words, the Timer on an unrelated enemy instance is causing another enemy to proceed with his behavior too soon.

    Is the timer function specific to each instance of an object? Can having each instance use their own timer possibly cause issues like this?

  • I'm designing a level that is made of narrow platforms. Each platform has square sine behavior, and every 3 seconds shifts to the right, then back 3 seconds later. The problem is that if the player is standing on a platform when it changes positions, he will move along with it! I want the player to stay in place so that if he doesn't jump before the platforms move, he will fall. It seems that the player's position is linked to the position of the platform he's standing on.

  • Having never done an achievements system before, I could do it in what is certainly a very inefficient way. I bet that someone out there knows of a convenient and code-efficient way!

    My current system is as follows: I have 16 achievements, each with an icon that is gray if not completed or colored if completed.

    In an event, once the player's save file is loaded, I have 16 separate conditions checking to see if each achievement is met. For example, collect X amount of money or play X amount of hours. Once triggered, the achievement sprites have a variable for "IsComplete" that gets turned "true." Any icon that is "IsComplete" changes to its 2nd frame, which is a colored version of the sprite.

    EXAMPLE:

    If sAchievementIcon.Number = 1 & Hours played >= 50, set "IsComplete" to "true."

    If sAchievementIcon.IsComplete = "true," set frame from 0 to 1.

    I suppose this could be done in an array, but the conditions for the achievements are not always as simple as "this value is greater than or equal to X." Some achievements involve doing multiple things at once (having a powerup while killing a certain enemy, completing two stages in under 20 seconds, etc), so putting the condition for each achievement in the array is probably more complex than it's worth. So my solution is simply to have 16 separate events that check each time the player's save data is loaded, which seems really inefficient, but is much more user friendly than trying to force unique achievement conditions into arrays.

    Thank you!

  • Wow! This is exactly what I was going for. Thanks so much taking the time to help me out with this! <3