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.

Messages - oripessach

Pages: 1 2 3 4 ... 11
Dialog Extension / Re: Possible regression
« on: October 20, 2015, 07:34:32 pm »
I change the position before opening the dialog.

Here's something weird - I don't know whether it's relevant or not. My extensions tab in the palette looks like the attached image. Could I be changing the wrong thing?

Dialog Extension / [SOLVED][October update] Possible regression
« on: October 20, 2015, 05:51:35 pm »

I previously used this code to manipulate the dialog window position in my game:

Code: [Select]
DataStructures.get("Dialog Window").position = new scripts.ds.dialog.RatioPoint(20 + offset, 0., 60, 0.);
Recently, this stopped working. The code runs, and I verified that the position variable is updated, but the window doesn't change position. Has something changed recently that could break this?

Dialog Extension / Re: [FIXED] HTML5 export?
« on: October 13, 2015, 10:58:02 am »

Did it, got an exception, and now I get this error when compiling to HTML5:

/Users/oripessach/stencylworks/engine-extensions/com.polydes.dialog/src/dialog/core/Dialog.hx:13: characters 7-44 : Type not found : com.polydes.datastruct.DataStructures

Dialog Extension / Re: [FIXED] HTML5 export?
« on: October 13, 2015, 07:02:52 am »
Where is this fixed, exactly?

Ask a Question / Re: Basic platformer issue - TIS request
« on: October 13, 2015, 06:56:15 am »
At first glance, your problem is likely due to comparing two y coordinates instead of a range of coordinates. You're also adding the width of an actor to its y coordinate, where you probably meant to add the height.

Use something like:

if ( (y of self) < (y of player actor)  and (y of self) + (height of self) > (y of player actor)+(height of player actor) )

if the actor is smaller than the enemy, or:

if ((y-center of self) < (y of player actor) + (height of player actor)  and (y-center of self) > (y of player actor) )

to check that the player actor's y coordinates overlaps the midpoint of the enemy's y coordinates.

The most general way to do this is to check whether the interval [y1, y1+h1] of one actor overlaps the interval [y2, y2+h2] of another actor. This is true if the following expression is true:

(y1+h1 > y2 and y1+h1 < y2+h2) or (y1 > y2 and y < y2+h2)

Which means that if one of the end points of one of the interval is contained in the other interval, the intervals overlap.

Dialog Extension / [FIXED] HTML5 export?
« on: October 11, 2015, 05:42:52 pm »
Games using the dialog extension won't export to HTML5. The error (at least the one that ends up in the Stencyl UI) is:

Code: [Select]
/Users/oripessach/stencylworks/engine-extensions/com.polydes.dialog/src/dialog/core/G2.hx:45: characters 2-8 : Unknown identifier : canvas
I understand if fixing this is not a priority, or won't happen at all. What I was wondering about was just how involved it would be to fix this?

Dialog Extension / Re: Dialog Extension General Discussion
« on: October 07, 2015, 01:30:56 pm »
Oh, well. I guess I could use the break. I should thank you for the chance to get a full night's sleep instead of working...

Dialog Extension / Re: Dialog Extension General Discussion
« on: October 07, 2015, 12:21:23 pm »
OK then - where can I find a version of the Data Structures extension that works with the last stable release? (8678)

I'm at the point where I can't get any work done. I'm not too happy about that.

Ask a Question / Re: Continuous sound between scenes?
« on: October 07, 2015, 12:19:30 pm »
Sound will continue playing across scenes unless you stop it.

For more complex situations, where some scenes play one music track and others play a different track, I implemented a system where music is always looping on channel 0. I have a custom block that runs at the beginning of every scene, and tries to start the track associated with the scene. If the name of the track that's currently playing is the same as the track I try to start, I do nothing - the track is already playing and I don't want to restart it. If the new track is different from what's already playing, I start the new track on channel 0.

It's a bit more complicated than that, with a fadeout happening before the new track starts, but that's the general idea.

Dialog Extension / Re: Dialog Extension General Discussion
« on: October 06, 2015, 07:36:22 pm »
I reported this in the issue tracker, but I'm impatient (and can't work on my game until this is fixed) so I'll ask here, too - a recent buggy Stencyl build failed to recognize the data structures extension and removed all the data structure manipulation blocks from my game. Silently.

The dialog extension is now missing from my dashboard. Dialog blocks still show up in the palette and in the game, but I can't edit dialogs, obviously.

I just reinstalled both extensions but my dashboard looks like in the attached file.

How do I fix this?

Oh, that wasn't me.

Ask a Question / Re: Key to unlock door ??
« on: September 29, 2015, 07:50:50 pm »
I came up with a more elaborate solution, but it gives me a lot more flexibility - I can have multiple items that open multiple doors. It consists of three actor behaviors:

Inventory Item - attached to the key
Has inventory - attached to the player actor
Door behavior - attached to the door.

The inventory item does this in a collision event when the player actor picks it up:

The Has Inventory behavior has these two custom blocks:

'inventory' is an attribute of type Map, name is just a string. All items must have a unique name (which doesn't have to be visible to the user.) I customize the name for each actor that I want to function as a key.

The door behavior does this on a collision with the player:

So basically, the key adds its own name to the player's inventory list, and the door checks to see whether the name of the item that opens it is in the player's inventory before opening (in my case, it just disappears.)

The basic implementation is dead simple. The only adaptation you might need is to use game attributes instead of actor attributes to maintain the inventory, because you said you wanted the player to open a door on another screen.

Keep in mind that things that you would take for granted in a tool designed for mainstream application development may not exist or be difficult to implement in Stencyl. Text entry fields, cut and paste, list controls, tree controls... These sort of things.

Ask a Question / Re: Did I discover Stencyl at the wrong time?
« on: September 27, 2015, 08:59:20 am »
@oripessach - The two regressions you've mentioned are both tied to OpenFL. We're stuck behind a rock and a hard place, needing to update OpenFL/Lime to take in fixes on their end and having to put up with some regressions along the way. We emphasize in a way, because now, we're the customers of OpenFL reporting bugs and waiting on fixes. It all comes full circle.

There are a few ways to deal with upstream changes and regressions, all of them less than ideal. I don't know how vocal you are when dealing with the OpenFL project, but I would expect someone in your position to advocate for your users and be at least somewhat active in trying to get the maintainers of upstream projects to address issues.

You could fork the OpenFL code and backport certain fixes for a more controlled release cycle of Stencyl.

On your end, having clearly defined beta releases can help you to deal with the uncertainty involved in pulling huge changesets from OpenFL into Stencyl.

I've had to deal with large open source projects breaking things for my day job, and sometimes there's no way to avoid just diving into the code and figuring out how to fix something that the upstream maintainers broke. It's not my favorite thing to do, but it's part of the job. In other cases I had to be pretty active in pushing the maintainers to fix specific issues, and follow up to make sure that it got done. Sometimes all it takes to get something fixed is to complain about it and to explain the impact an issue has on your users - no developer enjoys it when their users have a bad experience.

Unit testing has constantly been on our minds, but it's challenging to do this in a meaningful way with a complex UI app. Basic tests will catch the easy stuff, but there are so many possible actions, especially in the block editor, that designing a good suite tests for that seems daunting. Given your 30 years of experience, how do apps like ours tackle this challenge?

I'm not a fan of unit testing. I think it's a waste of time for anything but the most stable pieces of infrastructure code - file systems, encryption libraries, media codecs and such. For UI projects you need to do something else.

Automating a quick smoke test verifying that you can create a game, import a couple of resources, create a scene and a couple of behaviors and compile a game should be relatively manageable using any number of tools designed to test Java applications. You don't have to test everything, but testing some basic functionality will at least prevent the most embarrassing bugs from slipping through. I believe there was at least one release that couldn't compile to Flash, for example. You should be able to catch that sort of thing, at least. Or the latest regression where some blocks can't be snapped into place.

I don't have experience testing Java GUI apps, but a quick search shows that there's a few open source tools out there that are designed to do that. You might want to see if any of them could do the trick.

As for volunteer work, it isn't so much the issue of incentives as it is drudge work that not a lot of people like to commit to in the long term. We used to have volunteer-based QA, but the people doing it couldn't keep up with it in the long term. The best thing we can do is to clamp down harder and ask ourselves to more rigorously test what we check in, but we've all been guilty at some point of checking in code with minimal testing. It's just like documentation, which many devs don't enjoy doing.

Yeah, QA is hard work. Good QA folks like to get paid for their work... There's probably no way around that. And you're right - staying disciplined about testing your own code is extremely important. I wish I could say I've never checked in untested changes, but I can't. What I can say is that I'm typically paranoid about releasing something to production that has embarrassing bugs, so I tend to spend some time writing automated testing tools and running extensive functional test suites overnight before I let any big release hit the wire. It's an approach that worked well for me.

Pages: 1 2 3 4 ... 11