snoopbaron's Forum Posts

  • Welcome to the forum Asparagus Trevor !

  • I see your point. But we could add a link from the wiki to your thread under external site/resources. This way someone reading the wiki is more likely to find it and your tutorials can maintain their unofficial style. It's easy for things to get lost on the forum so any help for new users in finding any and all documentation available I think is important. Like you said it could also be used as a starting point. Sure your English is not perfect but it is understandable which is what matters most and someone else can clean it up the wording and grammar. Well I just wanted to share my appreciation

  • I've created an example of an OO pattern in Construct, I came up with that I think maybe useful in organizing event code. I've attached a simple example of this pattern to this post. In this example project I have a simple object hierarchy that looks like this (using pseudo code):

    class Ship: abstract

    method: DisplayName

    class LandedShip: extends Ship

    overrides method: DisplayName

    class FlyingShip: extends Ship

    overrides method: DisplayName

    class DeadShip: extends FlyingShip

    overrides method: DisplayName

    You can call the invoke the action DisplayName function on any picked Ship object and have the correct overridden implementation of DisplayName invoked (see the Layout 1 event sheet for an example).

    Ideally if something like this is considered useful we shouldn't have to build it up manually as this pattern is labor intensive, but at least it works.

    If an "O is in family X" condition where added to Construct it would make this pattern easier to implement and a little cleaner. Plus such a condition would be useful in other circumstances.

    It would also be nice to be able to be able to use Python expression to invoke these functions and pass along the picked objects so that the same pattern could be used in both cases without modifications. Perhaps something like "Function.MyFunction(param1, param2, PickedObjects)" where PickedObjects is not the name of the PickedObjects but a token to let the FunctionObject know that we want to pass the current set of picked objects to MyFunction. The syntax doesn't matter much it could also be something like "Function.Delegate(MyFunction, Param1, Param2)." The picked objects are similar to the object "this" or "self" pointer in this pattern so it would be nice not to have to pass them along as explicit parameters.

    What I think I would like to see is some sort of prototype inheritance in Construct that would make this pattern obsolete. I think prototype based inheritance instead of traditional class based inheritance could be a good fit for Construct. I think it could be added to the current ACE programming model in a very natural way extending what is already in place and keeping the simplicity and ease of use.

    I don't have the time right now to elaborate to much, but what I think might work is the following:

    Every object in Construct has a prototype property this property points to the object that is this object's prototype. New objects start with the prototype object "Object" which is a the root level of all object hierarchies. You can also can also select an object copy it and then select "Paste as Prototype" to create a new object that uses the copied object as its prototype. The prototype property establishes a live link between the new object and its prototype object instance. Unlike a cloned object this new object will inherit the value of any property changed in its prototype object unless that property has been set to a value in the object.

    You would also be able to add methods to an object. These methods would work like today's functions but would be associated with an object instead of an event sheet. You could use an event sheet user interface to modify them . Since these methods are additional properties of an object they would follow the same prototype behavior that I described for regular properties. So any new methods added to a prototype object would automatically be seen by any objects that derive from it. And any object that derives from a prototype object is able to override the implementation of a method property and the new overridden implementation is then used for the object.

    Everything else in the programming model would stay the same and this would be backwards compatible.

    I'll try and clarify things later, if there is any interest in this. If you want to learn more about prototype based inheritance (aka class-less inheritance) do a search on Google for prototype inheritance and JavaScript (JavaScript is the most well known language that uses this approach).

    Please let me know what you think. I debated whether I should wait until I had more time to fully document this and think about it, but I decided it was better to share it first before I wasted any more time on it.

    Snoop

  • I think your tutorials for the absolute beginner are a great service TheInstance. I think you should add the final version of them to the wiki.

  • Well at least we are getting somewhere now. That's a good work around for this specific case using two behaviors on two separate objects to get the net effect that I described. Thanks for sharing it. I'm still interested on how behaviors and events interact. When I do spend some time with the source code I'll be sure to share what I find out about this if no one else explains it.

  • Thanks Captain, I appreciate you trying to diffuse the tension. I do believe the language barrier may have something to do with it. But I think there is also more to it than that. TheInstance really does seem to want to go out of his way to upset people, me in this instance (no pun intended).

    I admit that I posted multiple bug threads and suggestion threads that could be centralized into fewer threads. I already did that with my bugs keeping them in only one thread and posting them on the official bug tracker exactly as Ashley asked me to. When I posted them I wasn't sure if each issue should be put in a separate thread and I didn't follow the best procedure, but I wasn't trying to cause anyone grief or "bubble" things. TheInstance has now gone and posted "bubble" in all of these threads in effect contributing, in this case on purpose, to what he is accusing me of doing. I'd be happy to have an admin delete the old redundant bug threads, but there was no need to attack me. It seems to me he is the one causing the greater disturbance.

    Then on top of all this he gets offended even after I explained that no offense was intended because I mentioned I was a software developer. "ell me, a computerlanguage dumb person ..

    what exactly is gooing on" here he is with more sarcasm followed by more accusations and even going so far as calling me lazy. There is more than a language barrier there. It says more about him than it does about me that he took such offense to what I said and continues to do so even after I explained myself.

    I am a software developer working on C++, that's what I do for a living, I didn't say that to boast nor do I think it is something to boast about. I like Construct because it's such a high level tool that you can get a lot done easily and quickly. Time for my hobbies is limited and I do hope to be able to help more in the future including the Open Source C++ code. I don't think that being the case should mean that I can't ask questions about how the engine works on the forum without expecting to be called lazy.

    Well I've had my say and I'll try to leave it at that. TheInstance if you still want to attack me please create your own thread and do not take this one further off topic. If you want to be civil about it feel free to send me a private message. If you want to drop it, I'm fine with that to. Lets move on from this, we both like Construct and are here because of that there is no reason to get into more conflicts.

    I started this thread because I had questions about the interaction between behaviors and events, lets stay on that topic.

    Thanks,

    Snoop

  • Thanks David, the effects look awesome !

  • Construct does not currently support GIFs or Animated GIFs, so you will have to convert them to a format that Construct does support. If you do a Google search you'll find several programs that can convert the frames in an animated GIF to still images in another format say PNG. I've been using a GIMP script to do my conversions (you can also do it manually but it takes longer). It's probably not the easiest or most convenient method but it works. If anyone knows an easier way I'd be happy to learn about it.

    Snoop

  • Good midday Snoopie.

    I have read your threats. I followed them. And i am sure many did.

    I trust Ashley will take care of them.

    Good day to you, I hope you meant threads and not threats I'm sure Ashley will take a look at them when he gets a chance. I've posted them on the official bug tracker. I'm simply trying my best to help.

    [quote:23z97juv]

    I feel like the bubble up your post action is a little unneeded.

    What did I do to you to upset you? I'm not trying to bubble up anything.

    [quote:23z97juv]

    ***shrugz***

    (he told me to be nice in a unconditional while loop)

    ***shrugz***

    But .. To Stay on topic.

    Well it's good to be nice I don't know what are you trying to say? Did I offend you some how???

    [quote:23z97juv]Could someone explain to me at a technical level why the system works this way (I'm a software developer so you don't have to simplify things). Is the behavior implementation running after my events and overwriting my changes? Could behaviors run before my events so I could tweak their results in my events? Or are behaviors able to make certain object properties read only? How are user events and behaviors inserted into the game's main loop.

    [quote:23z97juv]

    Now well, thats a good question.

    I would love the know the answer.

    I've been fighting with the systems priority's from day one.

    Now well but, since you are "software developer".

    Would you be so nice to look into the CVS ..

    http://construct.cvs.sourceforge.net/construct/

    and tell me what exactly is going on ?

    I don't know if you are offended by me disclosing that I'm a software developer. Hopefully your intent was lost in translation. Construct is really nice in that you can accomplish a lot through visual programming, but since I was interested in the internals I wanted to let Ashley or anyone else know that they could explain things at the code level without having to over explain things. My long term goal is to contribute however I can and hopefully that can include lending some help with the Open Source C++ code. Right now I still haven't learned all the basics.

    [quote:23z97juv]

    Thank you.

    Oh and when you are reading into the code.

    Plz also explain me how events pick objects, and how it keeps track of the "picked".

    I'll be sure to share anything that I learn and update the wiki as I've already started to do as I learn more about Construct.

    [quote:23z97juv]

    Thank you very much in advance.

    Appreciated.

    Always nice to have a real "software developer"in the community.

    I hope you are not trying to "sarcastic" I don't appreciate it and I wasn't trying to "brag" or whatever you took away from my post. It wasn't intended to be negative.

    Snoop

  • Good find, be sure to report it on the official bug list:

    http://sourceforge.net/tracker/?group_i ... id=1003219

  • 1987099 Deleting Event Sheet crashing contruct

    The following crashes Construct on my system:

    1. Create a new project

    2. Add a new event sheet

    3. Open the new empty event sheet (if you don't open it before deleting it Construct will not crash)

    4. Click on Add/Edit Event Sheets in the Applications properties inspector

    5. Select the newly added event sheet click the red X button to remove it

    6. Click on the Done button and on my system you immediately get a crash

  • 1987087 Transitions crash application when restarting current layout

    Transitions work fine when going from one layout to another different layout. But when going from the current layout to the same current layout in order to restart it they crash the application. I've attached an example that has a successful transition followed by a crashing transition (see bug tracker).

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Here is a list of bugs I reported in separate threads before I began this list:

    1987077: On Animation Finished event not working

    1987075: Every X milliseconds always triggered at start of layout

    1987074: Layout end and Application end events not triggered

    1984964: Recent Documents list is showing duplicates

  • I'm going to keep track of all my bugs in this single forum thread. For each bug that I find I will first add an entry to the official bug tracker on SourceForge and then add a post to this thread.

  • It's good to know it helped save you a few hairs

    As awesome as Construct, is it is still beta software so what I have found very helpful is whenever something very strange happens or doesn't work as I expect it I quickly create a new project and make the simplest possible layout that tries to reproduce the problem. If I can think of some work arounds I'll also try those in my simple test case. Then when I'm done I make note of the problem and add it to the bug tracker at source forge and report it here as soon as I get a chance.

    I just added this to tracker with an example cap.

    Snoop