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 - ETHproductions

Pages: 1 2 3
1
Chit-Chat / Ludum Dare 44 - Your life is currency
« on: April 26, 2019, 08:40:23 pm »
Ludum Dare is upon us once again! The theme this time around is "Your life is currency." Interpret this as creatively as you can: a magic-based setting where you buy upgrades with HP, a vampire economy where everyone wants to buy your blood, a game where you play as a dollar bill, etc.

Feel free to post ideas, progress, and/or completed entries in this thread. At the end of the weekend I will attempt to compile a list of the Stencyl entries.

For those who are not aware, Ludum Dare is a 48/72-hour competition where the goal is make a game from scratch based on a given theme. The Compo is strictly for solo entrants and lasts 48 hours; the Jam is for teams and lasts 72 hours. Both events start when the theme is announced at 9pm EDT on Friday; the Compo ends 9pm EDT Sunday, and the Jam at 9pm EDT on Monday. Visit ldjam.com to enter!

Happy Stencyling, and good luck!

2
Extensions / File Dialogs [in progress]
« on: October 24, 2017, 06:26:57 pm »
So I made a bit of an extension that allows (non-Flash) projects to open an "open file" or "save file" dialog. It's still a very early version, but you can download it here, or view on GitHub.

Please note that this requires the lime.ui.FileDialog library, which I believe was only added in one of the betas for Stencyl 3.5.

Example usage:



(Note that that is probably not a good title for the dialog...)

I'll add more information as the extension progresses.

3
Ludum Dare 33 / Raging Snowman
« on: August 24, 2015, 07:37:39 pm »

So, I've survived another Ludum Dare. This one didn't go as well as I'd hoped, mostly because I bit off more than I could chew. I was originally planning to enter it in the Compo, but I didn't have Internet access for the final hours, and the game wasn't ready to be entered anyway.

What was the biggest cause of this non-readiness? The art and animation, which took up half my time (again). From now on, I'm only going to use ideas that require little or no animation. Perhaps I'll take a hint from DreamBox Learning, an online math program, which uses individual images with a bunch of tweening for a great cartoon-y effect.

The extra 24 hours gave me much more time to polish the gameplay, but I still ran out of time for sounds, music, terrain, and more characters. Oh, well; I'll add those in the post-jam version. And next time, I'm going to plan to finish in eight hours so I can actually finish the game. :)

Description:
By some miracle of creation, a snowman has come to life and is trying to kill anyone who crosses his path! Fortunately, his only weapon—the snowball—is enticing people to join the snowball fight. Play as the Raging Snowman and clobber as many kids as you can in 60 seconds!

Controls:
- WASD or arrows to move
- Mouse to aim/fire
- R to restart
- P or Q to pause/unpause

Hints:
- You shrink when you throw a snowball, and grow when you're hit by one.
- If you get too big or too small, you'll suffer the consequences!
- You deal more damage when you're big.
- Face shots deal more damage, as well.
- When the 60 seconds are over, you gain points for being small and lose points for being big.

Any feedback is appreciated. Have fun! :)


4
Ask a Question / Creating suspension with joints
« on: July 22, 2015, 06:25:21 pm »
I'm working on a game similar to Hill Climb Racing, with two wheels loosely attached to the body of a vehicle. At the moment, I'm using the Joints extension to attach the wheels to the body. It would be pretty easy to use some revolute to make the tires stick to one place relative to the body, but I'd like there to be a bit of looseness to it, like suspension.

My current solution (which is not working) involves using some invisible "anchor" actors to attach the wheels to the center of the underside of the car using revolute joints. The revolute joints have their limit angles set to the proper amounts, which apparently need to be in radians, as opposed to degrees. However, the limits seem to be ignored if any force besides gravity is applied to the tires (for example, the ground). Observe (all limits set to 12 degrees, motors disabled):

<a href="https://www.dropbox.com/s/vb4s3ps1ur7y6yg/HillClimbTest.swf?raw=1" target="_blank" class="new_win">https://www.dropbox.com/s/vb4s3ps1ur7y6yg/HillClimbTest.swf?raw=1</a>

(Don't worry about the number in the top left; it's just the distance from the anchor to the front tire.)

I've experimented with a bunch of different variables, including:
- Limits set to the desired values (tires swing around very easily)
- Limits set to 12 (tires still swing around, but not as much)
- Gravity changed from 20 to 2 (tires swing around, slowly at first, then getting more and more crazy)
- Gravity set to 0 (tires swing slowly to 12 degrees)
- Enabling motors with motor speed and max torque of 500 (I can't tell the difference)

I've done a bit of research, and what I've found is that the line joint is the suggested joint to use for a tire (apparently, it was created for just this purpose). This was what I was originally intending to do; however, since there is no block to attach two actors with a line joint, I thought it was impossible.

So, my main question: Is it possible to attach two actors with a line joint? If not, I'd be happy to show my code for someone to look over. Thanks in advance!

5
Suggestion Archives / More camera functions!
« on: July 08, 2015, 07:38:48 pm »
Over the past few months, I've noticed three important camera-related features that Stencyl is lacking. Some of these are more common than others, but all three combined would put Stencyl further ahead of some of the other game-making software.

0. Basics

I know I said there were only three things in this list, but before anything else here is implemented, I believe that these minor things should be changed first.

- Actors that are anchored to the screen (on the GUI layer) still have their drawing events run on their original layer. This makes anchoring actors to the screen useless if, i.e., a button needs text, unless it has the text pre-drawn onto it.

- All of the scene drawing, including the GUI actors, will need to be run AFTER the features listed below are applied. Otherwise, we'd have zoomed-out, rotated text/shapes drawn inconsistently across multiple cameras.

Now, onto the good stuff. :)

1. Zooming

Zooming is a somewhat common feature in game engines, and can often be simulated in those that don't have it with pure code, including Stencyl. However, the workaround scales everything, including the text and shapes that are drawn on the screen, which is not helpful when trying to create GUI.

My geeky idea: Render a larger section of the screen, then scale it down (using the Image API or similar) to the screen size.

2. Rotation

Like zooming, rotation is a feature that is somewhat common in game engines, and can be simulated in those that don't have it. For Stencyl, there are two workarounds that I'm aware of:

1. Rotate the entire Sprite object that makes up the screen, or rotate the image using the Image API. The problem with this is that the space outside of the rendered area is an ugly black, which does not fit in well with most games.

2. Make the screen size larger than needed, then use the Image API to rotate it and crop it down. However, another (usually black) shape will need to be drawn around the border to hide the remaining parts. I have not personally tried this method, but from the split-screen experimentation that fillergames, letmethink, and I have been doing recently (more on that later), it seems like it could work.

However, neither of these are going to be satisfactory if a sponsor buys the game, whether the problem is the ugly black triangles or the extra-large black border. So it would be nice if a proper way to do this was integrated into Stencyl.

My geeky idea: Render a larger section of the screen, then rotate it and grab a rectangle out of the center (using the Image API or similar).

3. Split-screen

Now this feature I didn't even remotely think was possible with a workaround. That is, until fillergames proved me wrong. letmethink and I worked out a solution so that it doesn't flicker, but it still only works at ~30 FPS. So, it is somewhat possible as a workaround, but not good enough to run smoothly.

Thus, it would be truly awesome if this could be directly integrated into Stencyl. I know, I know, it would be a ton of work, but in my eyes, it would be worth it. Here's my detailed explanation of how it could be implemented:

There would be 5 split-screen modes:

1. Single-screen - the default mode; only one camera
2. Horizontal - the screen is split horizontally into two equal sections
3. Vertical - the screen is split vertically into two equal sections
4. Variable - the screen is split into two sections; the angle of the line between them can be changed
5. 4-way - the screen is split both horizontally and vertically into four equal sections (for 3-player, the fourth screen could manually be set to be black, or show highlights of the players, like Mario Kart Wii)

There would then be blocks to switch between the different modes, determine which mode it's in (a boolean block would probably work best), get/set the angle in Variable mode, and change the size/color/opacity of the inside borders. All of the existing camera blocks would need to be updated to include a 1st/2nd/3rd/4th camera dropdown, so it may work out best if there were a button in the palette which activated the split-screen blocks.

________________________________________________________________________________________________________________

It may be better if we were able to simply grab a section of the scene as an image, no matter where it is or how large. (Everything in that image would need to be simulated as if it were on-screen.) Then all three of these features could be done manually by the user, and behaviors could be shared to Stencylforge to accomplish them. Now that I think about it, this actually opens up a whole new range of possibilities. Along with the aforementioned features, there could be in-game security cameras and similar mechanics.

Finally, it would be great if we could have a set of camera tweening blocks. At the moment, this would only be one block, to tween the camera to a set x/y location. This can be done without modifying the core code; I got it working in an extension by tweening x/y variables, then repeatedly setting the camera position to those variables.

Thanks for taking the time to read this really long post. I hope that these suggestions are helpful for the future of Stencyl. :)

6
Paid Work / Need Facebook Leaderboard for Android/iOS [Closed]
« on: July 07, 2015, 03:31:16 pm »
Hey y'all,

A friend and I are (almost certainly) going to be hired to create an app for both Android and iOS. However, there is one obstacle that currently stands in our way: the licensor wants us to integrate a Facebook leaderboard into our game, and neither of us has any experience whatsoever with the Facebook API. So, we're looking for someone who can integrate a Facebook leaderboard into Stencyl, preferably into an extension. We are willing to pay at least U.S. $500 to someone who is able to do this for us; we can work out the details via PM.

If you are interested in applying, please shoot me a PM. Thanks in advance!


EDIT: Found someone who can do it for us.

7
Ask a Question / Leaderboard extension suggestions
« on: June 22, 2015, 06:34:59 pm »
Hey guys,

I'd love to get an extension set up for online leaderboards and similar features that can be used on any website. However, as I don't know how to create my own server-side stuff, I've been looking around the web for services that handle the dirty work for you. So far, I've found three that have caught my eye: Playtomic, GamerSafe (these two have been suggested side by side several times), and Flox.

Here's my brief description of each:
- Playtomic is an open-source API built for multiple languages. Lots of great features, but (IMHO) a nightmare to set up.
- GamerSafe is more like a universal game portal, featuring its own currency, micro-transactions and global saves.
- Flox is a professional, highly scalable service, designed to be as simple to integrate as possible.

And here is a comparison table:

Service:PlaytomicGamerSafeFlox
Cost:FreeFreePay for what you use (free trial)
Player authentication:Facebook or manualLog on to GamerSafe account    Email or Key
Leaderboards:Day/week/month/all-time/newest,   
player's best or player's friends,
plus filters and metadata
Yes, possibly brandedDay/week/all-time, player's best
or player's friends (?), plus filters
Achievements:YesYesManual
Per-user data-saving:YesYesYes
Global variables:YesNo?No
User-shared content:Yes, including filtering, rating,
and metadata
No?Yes
API:Many, including Haxe/OpenFL
(all open-source, too!)
AS3AS3
Online documentation:    YesOnly for membersYes, very complete
Ease of set-up:2/10, couldn't get it set up a while
ago (although I may try again soon)
Haven't tried itLooks like a 9/10!
Other features:Connect to FB, get list of friends,
send newsletter to users
GamerPoints, GamerGoldLots of online analytic tools,
custom log files for debugging

So, here's my question to you: for which one of these services should I set up an extension? Playtomic has a lot of great features, but is difficult to set up; GamerSafe looks pretty good, but each user needs an account; and Flox is a paid service, although it's a very professional one, and you only pay for what you use. If you have suggestions for other services, feel free to share them here!

8
I was trying to test the Top Down Racing kit on Windows, using Stencyl 3.3.1, and I kept getting an error about something being wrong with one of the behaviors. While I was debugging this error, the game started to not pop up after it finished compiling. I took a look at the Log Viewer and saw this:
Code: [Select]
[openfl.bat] Error: Cannot copy to "Export/windows/cpp/bin//Top Down Racing Game New 2.exe", is the file in use?
I tried to test the game several more times and kept getting this error. Then I noticed the double slash between "bin" and"Top Down", which should be a single slash instead. I restarted Stencyl to see if that fixed it, but unfortunately, it didn't. I tested another game on Windows, and it launched properly.

Then I tried using Clean Project and compiling again, and thankfully, it worked! But it would be nice if this bug could be fixed, so that nobody runs into this problem again. I've attached the logs, for those concerned.

9
Bug Archives / [3.3.?] Pressing key in Design Mode causes error
« on: June 20, 2015, 07:36:20 pm »
I got this error a couple of days ago, while working on one of my many ongoing projects. At the time, I was moving blocks around in a behavior. I went to hit Shift, but instead, I hit "/" or something else nearby. Here's the error that popped up:
Code: [Select]
Unexpected problem on thread AWT-EventQueue-0: null
java.lang.NullPointerException
at javax.swing.plaf.basic.BasicComboBoxUI$DefaultKeySelectionManager.selectionForKey(Unknown Source)
at javax.swing.JComboBox.selectWithKeyChar(Unknown Source)
at javax.swing.plaf.basic.BasicComboBoxUI$Handler.keyPressed(Unknown Source)
at java.awt.Component.processKeyEvent(Unknown Source)
at javax.swing.JComponent.processKeyEvent(Unknown Source)
at javax.swing.JComboBox.processKeyEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

I can't seem to replicate this now, but I easily replicated it a few times right after it first happened, using these steps:

1. Drag any block or press on any dropdown field in Design Mode.
2. Press any regular key (such as space or a letter key).

I can't remember if I was using 3.3 or 3.3.1 at the time. And since this was from a little while ago, I (sadly) don't have logs. Would it still be possible to track down and fix this bug?

10
Extensions / [NATIVE] Guide/Reference for info.txt
« on: June 12, 2015, 04:43:02 pm »
Extension Guide/Reference: info.txt

This little post is designed as a guide and a reference to the features of info.txt in engine extensions.

What is this info.txt thing?

When you open any extension folder, you should see a file titled info.txt inside. This file is important because it controls the name of the extension, along with the current version number, compatible publishing platforms, and a few other things. Here's an example, taken from the built-in Test Extension:
Code: [Select]
name=Test Extension
description=A test extension
author=Jon
website=http://www.stencyl.com
version=1.0
compatibility=all

Now, here's a basic rundown of each of these items:
name - The name of the extension, displayed in Settings -> Extensions and the Extensions section of the block palette.
description - A brief description of the extension, also displayed in Settings -> Extensions.
author - The name or username of the extension's author.
website - If the user right-clicks an extension block and presses View Help, this is the webpage to which they are taken. Make sure that users can view the extension's documentation on this page. Linking to the forum topic is usually a good choice.
version - Doesn't do anything special, but useful for keeping track of the latest version. Users can see it in the Log Viewer right after Stencyl is opened.
compatibility - Controls the publishing platforms for which the extension will compile. This can currently have the following values:
Code: [Select]
compatibility=all
compatibility=flash
compatibility=desktop
compatibility=android
compatibility=ios
compatibility=mobile

Using more than one of these (e.g. flash and ios) is not currently supported.

Note: all of these fields are required, and each field has to be on its own line; you can't do something like this:
Code: [Select]
name=Test Extension description=A test extension author=Jon website=http://www.stencyl.com version=1.0 compatibility=all
And that's pretty much all you need to know about info.txt. Please post below if you have questions, comments or suggestions. Also, check out the Guide/Reference for Creating Extension Blocks for more extension-y goodness! :)

11
On Sunday, I was working my way along on a project I hadn't gotten far on. I had decided to take a new approach, and I tried to remove a custom block I no longer needed. Instead, an "Unexpected Problem!" dialog popped up, with this message:
Code: [Select]
Unexpected problem on thread AWT-EventQueue-0: null
java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
at java.util.AbstractList$Itr.next(Unknown Source)
at stencyl.sw.editors.snippet.designer.EventsPane.removeSelectedEvent(EventsPane.java:1421)
at stencyl.sw.editors.snippet.designer.EventsPane.actionPerformed(EventsPane.java:1310)
at stencyl.sw.actions.SAction.actionPerformed(SAction.java:121)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

I tried removing it several more times, and each time, the error message popped up again. However, when I saved/closed the project and reopened, the custom block was not there. Thus, this problem is no longer problematic to me, but it may be nice to remove it, so that it doesn't happen again. I've attached the logs, in case they'd be of use.

12
Ask a Question / Which version of Stencyl are you using?
« on: May 18, 2015, 02:21:49 pm »
Hi everyone,

As you may know, I have created/am working on some engine extensions for Stencyl. The problem I have is this: there are several different versions of Stencyl currently in use, each of which have their own extension requirements. I'm curious to know: for which versions of Stencyl should I continue developing extensions? Is there a certain extension you would like for a certain version of Stencyl? Also, is there a specific feature or features that you would like to see in an extension?

I've created a poll over at SurveyMonkey. You could also post your answers here, if you'd like. ;)

13
Ask a Question / How would I create a poll?
« on: May 11, 2015, 09:33:17 am »
I'd like to create a poll on the forums, but I can't find anything about how to create one. Is there some reason why I can't, or is it just hidden somewhere? Thanks in advance.

14
As I was working on my upcoming File IO extension, I came across a problem: there isn't a built-in Haxe method to get a .png image from anywhere on the hard drive, and convert it to a BitmapData object. I searched for a solution and came across this StackOverflow post, which uses the format.png classes. I modified it to fit my needs and came up with this:
Code: [Select]
public static function readPixels(file:String):BitmapData {
var handle = sys.io.File.read(file, true);
var d = new format.png.Reader(handle).read();
var hdr = format.png.Tools.getHeader(d);
var data = format.png.Tools.extract32(d);
var image:BitmapData = new BitmapData(hdr.width, hdr.height);
image.setPixels(new Rectangle(0, 0, hdr.width, hdr.height), data);
handle.close();
}

The problem I currently have is that this code returns an error when it's compiled:
Code: [Select]
Unknown identifier : format
Same thing when I try to import specific classes:
Code: [Select]
Class not found : format.png.Tools
So, my main question is this: are the "format" classes included in Stencyl's Haxe library, or am I doing something wrong? I've found the files in the library (Stencyl/plaf/haxe/lib/format/...), but I don't know if they are included in the compiled projects themselves. If not, is there a workaround I could use?

Any help is greatly appreciated. Thanks in advance!

P.S. I noticed that there is a large selection of SVG- and SWF-related .hx files in 3.3. I'm curious as to what the reason for this is, and if they're currently usable. :)

15
Ludum Dare 32 / Toaster Defense
« on: April 18, 2015, 08:25:26 am »

So! This is my second time entering Ludum Dare. Last time, I aimed for top 500 in Overall, and ended up #476. I did pretty well in Audio, capturing #141; on the other hand, Graphics did not fare so well, at #822.

So with that in mind, I decided to set two goals: top 400 overall, and top 500 in Graphics. As a result, I spent a lot of time designing graphics, and less time with everything else. I would have added SFX, more enemies, and some power-ups, but I ended up right at the limit with what I did create. In the future, I'm going to schedule my time, so that I don't end up with no SFX and less features, like I did this time... :))

Description:
In the not-so-far-away land of baked goods, a war has arisen. The Toast Kingdom is hogging the Toaster of Life, and the Kingdom of Toaster Tarts is demanding it for themselves! Your mission? Play as the Toaster of Life, and destroy as many Toaster Tarts as you can for the highest score.

This game was made in 48 hours for Ludum Dare 32. There are a lot of things that could be improved, and believe me, I am going to improve them. But I think this is a good enough game for 48 hours.... :)

Controls:
Mouse to aim
Hold mouse button to load
Release mouse button to fire
R to reload
M to switch to the menu

Any feedback is appreciated. Have fun!


Pages: 1 2 3