fisholith's Forum Posts

  • Thanks Noga.

    I'm hoping to get the alpha release done sometime within the next week. Ideally in the next few days. Anyway, I appreciate the feedback. It always helps to know there's interest out there. :)

  • Hi everyone,

    I'm planning on building and releasing a suite of Construct Effects (Shaders) over the next little while.

    I still have a fair bit of work to go, but with luck I'll be releasing an alpha version of the set shortly. At this point, I mainly need to finish off a few more Effects, and then fill in the documentation for the parameters and such.

    Presently I have a little over 20, Effects, ranging from tone manipulations like soft threshold, bias, and gain, to more special case effects like a fairly flexible scan line generator.

    Once the first version is released, if anyone is interested in testing out the effects in that alpha version and giving me feedback on things I might need to fix and the like, any such help would be much appreciated. :)

    Anyway, I'm hoping to release the first alpha-ish version of the actual .fx files in the next few days. I also want to put together some interactive visual demos of the Effects, but I'll probably start doing most of that after the first alpha release.

    I did build a demo for the "Bias Gain" Effect, just to kind of rough out the style I'll probably use for the other demos. You can get a copy of the compiled demo from the link below, to get an idea of the kind of stuff I'm working towards. If you have time, let me know what you think. :)

    Download - Bias Gain demo app

    (I'm interested in making the demo apps resizable eventually, but the prototype at the link above has a fixed size of 1024x768.)

  • Thanks guys. I worked out a system that handles a simplified case of what I'm going for. It will link instances of a single object together in chains or bunches (trees).

    Download example cap here.

    I'm still interested in getting it to work for an arbitrary number of collisions on a single tick.

    (...also, I just got a dropbox account.)

  • I appreciate the reply, and the example.

    I may ultimately have to resort to using multiple objects, but what I'm looking for at the moment is a way to form links between multiple instances of a single object. That is, rather than having 5 instances of "ball" and 5 instances of "ball2", I'm looking to have 10 instances just of "ball", where any of those instances can stick to each other.

    I'm thinking I may need to employ some Python scripting to store selected instances in variables and or distinguish between individual instances in the Selected Object List. Awesome as Python is, in this case I'd prefer to avoid it if possible.

  • If I have a bunch of instances of an object, with the physics behavior, (such as a bunch of marbles), is there any way that I can form a hinge between two instances that are colliding? This would, in theory, make these instances stick together. And, as more and more collided with each other, they'd start sticking together in chains or bunches.

    The problem I have is that,

    1: I'm not sure how to differentiate between objects in a collision, such that I can ask only one of them to form a hinge to the other, and

    2: since a collision is not a triggered event, but rather the collision condition is tested for on each tick, on a single tick I may have several (e.g. 20) instances colliding.

    Is there any simple way to get the kind of behavior I'm describing, or would it really require a triggered event style collision detection?

  • I would recommend looking into Python.

    It depends on what you're doing, but if I understand what you're going for, you might have the most flexibility in the long run just using simple Python data structures (e.g. lists). They can easily be converted to text, which in turn can be converted back into data structures, so testing and visualizing the contents of something like an inventory would be easy even before a front end viewer is implemented. Likewise editing the inventory for testing purposes could be done by editing human readable text.

    I had put off using python in Construct for quite a while, and in retrospect I should have started in with it much earlier. It turns out it's much easier to use than I had anticipated.

    Tutorial: A very simple Python-in-Construct intro tutorial on the forums.

    Scirra Wiki: The Construct Wiki page on Python:

    http://sourceforge.net/apps/mediawiki/c ... _Scripting

    Reference: A pretty good reference and documentation site for Python:

    http://docs.python.org/tutorial/index.html

    The above site might be a good place to start learning python if you're not already familiar with it, (but wait till after doing the tutorial at the first link I provided).

    Anyway, if you decide that you want to try using Python I recommend using the reference site above to read a little about the basics, like syntax, operators, if/then/else, loops, and functions, and then just start building stuff. And when you need to know more, look it up on a case by case basis.

    In your case, you'll probably be using lists and dictionaries.

    One bit of advice though, is that you'll want to write down in one place the names of all global variables and functions you've created, so you don't have to go hunt them down to remember what they were named.

    And if you've never done traditional text-based programming before, don't worry. If you can use Construct, then you can use Python in Construct.

  • I came across a pretty interesting licensing method recently, that being the Unreal Development Kit (UDK) license. You may already be familiar with it.

    I figured it would be worth mentioning since it sounds like you guys are still surveying your options.

    Bellow is a summary, followed by some thoughts on the pros and cons of the main aspects of the model. It's a little long, but I hope it'll be helpful.

    In summary, the UDK is licensed like this:

    * 1: The UDK development tool is closed source.

    * 2: It's free to use for non-commercial purposes, for as long as you want.

    * 3: You can also buy a 99$ license, which grants you the ability to sell games commercially.

    In this case, as you accrue revenue from selling your game, you would pay nothing to Epic Games, up until you make your first $50,000.

    After your first $50,000, you would begin paying 25% of any additional revenue to Epic Games, keeping the remaining 75% for yourself. Obviously, for Scirra's purposes that royalty threshold of $50,000 should probably be a little lower, if you want to include that aspect of the license.

    I don't know how effective this kind of license model would be for Scirra, (obviously Epic Games is quite different from Scirra structurally), but it has some interesting properties.

    * 1: The tool remains closed source. (Strictly speaking this is optional.)

    Pros:

    You don't have to worry about a nefarious third party stealing it, modifying it, repackaging it, and selling it out from underneath you, as a form of direct competition with your business. Granted, making it closed source would not protect you from such a miscreant stealing it, NOT modifying it, repackaging it, and selling it out from underneath you, as a form of direct competition with your business. This has happened even to products where the legitimate version is freeware. Though in the case of freeware, the legitimate authors don't have to worry about the bad guys undercutting their price. That threat of theft and price undercutting might be a valid reason for Scirra to consider closed source, at least initially.

    Cons:

    Good third party developers won't be able to help out as much, and this might slow the development of the software. This tradeoff is explained at length in Eric Raymond's well-known analysis of open source phenomena "The Cathedral and the Bazaar", available online. Additionally there will undoubtedly be some community resistance to a change from open source to closed source.

    * 2: It's free to try the full version, for as long as you want, for non-commercial purposes.

    Pros:

    New users have no entry cost to trying out and experimenting with your software. (No monetary entry cost at least. There's still time and learning involved.) This gives new users the unusual opportunity to see first-hand how useful the fully functional software will be to them.

    Because they aren�t stuck with a time-limited trial, they can learn the software at their leisure. This non-rushed atmosphere is especially welcome to people who have a strong interest in the product, but have many other obligations occupying their time, or an otherwise unpredictable schedule. In effect, the time-limited trial adds an additional (non-monetary) cost onto trying out a product, and that is the commitment to spending the next X days learning it to the best of your ability, while not daring to actually start a real project in it, on the off-chance that it's ultimately not worth it. Understandably this cripples a new user's ability to truly get a feel for using the product.

    (That's not to say that time-limited trial's are all bad, but anecdotally, I wouldn't even have considered investing the time to learn UDK had it been a time-limited trial. I simply had too many other things consuming my time. As it turned out, it was a full 6 months after I downloaded it before I finally got time to work with it. And when I finally did, I was able to begin building something worth while to me, in broken patches of time over a few months, as I wasn't looking at potentially losing all my work after 30 days. )

    Some users have more free time and some have less, but by and large, they all have a willingness to pay for software that they come to like and enjoy using, especially if they can make a business of it.

    Cons:

    If you release the software for free, there is a chance that some nefarious so-and-sos will use it to produce and sell games without buying a proper license. This is less of a problem for Epic Games, as their engine has a distinctly recognizable look to it, and I assume they also have a sizable legal staff. To my knowledge, Scirra unfortunately lacks these things, although it is conceivably possible that some kind of encrypted watermark could be included in the exported files. Though this would not be entirely tamper proof, and in the case of HTML 5 the code would be openly viewable and editable, pretty much eliminating the purpose of an embedded watermark in the code.

    Again anecdotally, I myself am interested in starting a business in the near (hopefully) future, and I ran into the same kind of dilemma. I spent quite a while thinking about how I might surmount such an issue, and finally it occurred to me that doing nothing may actually have a better cost to benefit ratio than any of the other only theoretically effective solutions I considered. This is because it only takes a single person to bypass the security measures on a piece of software for it to become downloadable by anyone. If super-massive industry giants can't thwart this phenomenon, then

    (A) I can't expect to do much better;

    (B) all the time and effort I spend learning and perfecting the "completely-unrelated-to-my-actual-business" skill set needed to safeguard my software, could be better spent growing the functionality and value of my software; and

    (C) there are oceans of people who devote all their time to reverse engineering software, and I, as a single individual, have no interest in spending an equal or greater amount of time learning how to stay a step ahead of all of them, in a futile mental arms-race which will likely only serve to make my software harder to use for my actual customers.

    This is not really as bad as it sounds though. All it really means is that most honest people will be honest, most dishonest people will be dishonest, and no matter what kind of security system I add to my software, I'm not going to get the dishonest people to buy it. When you think about it, that's not really much of a revelation. On reflection, I realized that I really didn't feel too broken up about not being able to capture the dishonest-people corner of the market. Practically speaking, when you start a business, instead of asking, "Are there enough people interested in my product to support it?" you should instead ask, "Are there enough honest people interested in my product to support it?"

    In Scirra's case, given the support and impressively helpful and kind nature of the community on the forums, I would guess that there are by far more than enough honest and well-meaning people to keep Scirra going as a business.

    It's hard to imagine that anyone reading this is unfamiliar with Minecraft, but that is perhaps the pinnacle example of the influence honest users can bring to bear on the success of a small business with a good product. (Admittedly, Minecraft is something of an outlier, in that there is scarcely anything else quite like it, but the same can be said of an HTML 5 compliant Construct 2.)

    * 3: To sell games commercially, users simply buy an inexpensive commercial license with a royalty threshold.

    Cons:

    (Yeah, I'm doing the pros and cons in reverse for this one.)

    As a business, Scirra wouldn't necessarily begin getting buyers right at the outset of C2's development. This is because even buyers who are strongly considering buying it could hold off for quite a while as they continue working on their projects. For a massive company like Epic Games, this initial lag in sales is likely easily absorbed. For Scirra though, this could potentially be a bigger problem. Although, C1 has been free for 4 years, so Scirra might be able to stand waiting for revenue for another few months even after starting up the official C2 license model.

    Pros:

    That said, with people already looking to become paying early adopters, the future looks bright for Scirra indeed. As new users spend more time with C2, their ability to leverage its capabilities will increase, and it will literally become more valuable to them. However, before the value of C2 has grown on them, you might run the risk of chasing them off by requiring an upfront payment of a tool they have no practical experience with. Likewise, those with commercial games in the works will almost certainly have no problem buying a license whose cost they can expect to make back in a few sales.

    Additionally, for new users who start out making games for free, the software itself will train them for as long as they wish, at whatever rate their comfortable with, until if they're persistent, they reach a point where they could actually make a commercial game, and buy a license to sell it.

    The strange beauty of this system, is that since the user is in control of that entire progression, it doesn't matter how fast they learn, if they have unlimited free time, or almost no free time; once they feel they've reach the commercial-capable threshold, that is exactly the same time they will be willing to buy a commercial license. They will know the software inside and out, and they won't ever have needed to take anyone's word that someday they'll know it well enough to be a commercial developer. This is even true of user's who start out not expecting to ever make it to that level. Users who might otherwise shy away from trying to in the first place as a result of the price. It's oddly self regulating. Or more accurately, its user regulated.

    Interestingly, UDK has been using this license for a while now, though they actually recently raised the royalty threshold at which sellers start paying royalties from $5,000 to the $50,000 quoted at the top of this post. That would seem to indicate that Epic Games is becoming more confident in this model.

    Having said all that, (certainly more than I was expecting to when I started writing), I'm not trying to say that this is the best model for Scirra. You guys have a birds-eye view of Scirra's specific assets and limitations that I don't have. So you'll ultimately be a better judge of what looks viable, but I figured that at least presenting this as a possibility, and explaining my thoughts on it, might help to provide one more option to the pool of things to consider.

    Take care.

    -fisholith

  • If I start an app with a Python based timer "time.time()", and then log out of windows, the timer seems to stop working at the moment that I log back into windows.

    Am I doing something wrong, or is this a common thing?

    I've seen that

    nohup python script.py &

    is supposed to fix this kind of thing on some platforms, but I'm not sure if it works for windows, or for my specific problem. Also, I'm not sure what I would put in place of the "script.py" part of that code, since as far as I know, the script is built into the compiled exe, (unless "script.py" works on all scripts).

    • - Overlapping shadow:

    The way shadow casters and lights work is that the shadow casters essentially "paint" shadows into the light object's image. Therefore the shadows will be at the same z-order (front to back layering order) as the light casting them.

    So, if you want the shadows to appear underneath all the objects, then you need to send the light object to the back of the z-ordering. If you have multiple layers, then you need the light to be either at the back of the layer with the shadow Casters, or on a layer below the shadow Casters.

    (Note: To send an object to the back of the z-order, right click it and choose Order > To Back.)

    • - Round shadows coming from square objects:

    You have created a single barrel object, and you have placed 4 "instances" of that object in your level. You have also applied the "Shadow Caster" behavior to this one barrel object.

    So far so good.

    Here's where the problem arises.

    You have used a custom shadow collision shape for the shadows that this one barrel object will cast, but for your barrel object, you have created two different images stored in frame 1 and frame 2 of the animation strip. Frame 1 is a circular top view of a barrel, and frame 2 is a square side view of a barrel.

    If you create a custom shadow collision shape for your "Shadow_Clutter_Medium" object, it doesn't matter which frame of that object is showing, every "instance" will use that same shadow shape.

    To solve this, you'll need a unique object for each shadow collision shape you want to use.

    Hope that helps out.

  • I'm trying to reduce the CPU (and GPU) usage of an app I'm building, but without limiting the frame rate too much. I'd like to leave it at V-sync if possible, but I'm not sure how many other ways there are to tweak the app.

    Strictly speaking, all I'm looking for is for this app to never noticeably impact the performance of any other running programs.

    It's essentially a specialized clock that automatically logs the amount of time spent on various tasks, and provides a nice visualization. Being that it's a clock and logging tool, it will be running non-stop.

    The application needs some of the graphical elements of the DirectX runtime, but very little beyond just animating some sprites.

    Obviously, I don't really need GPU acceleration for something like this, but I'm not even sure if I can disable it. I can probably get away with knocking the FPS down to 30 without anything really noticeable changing, but I'd prefer to exhaust other options first.

    Is there a way to set the application to the minimum process priority at startup for example?

    Does the Process object do that? I tried using it, but it doesn't seem to change the priority, at least not in any way that I can see from the task manager.

  • Is it possible to access a "Box" object's private variables from Python?

    (Just to be clear, by "Box" object, I mean the object found in the "Insert new object" dialogue you get from right clicking in the layout editor.)

    I've tried using the following python expression,

    Box.Value( 'privateValueName' )[/code:38ktw271]
    
    but it does not seem to work. I get nothing back.
    
    Now, for other object types, such as "Sprites" or "Panels", it does work.
    
    Am I doing something wrong, or can python simply not access "Box" object variables?
  • Okay awesome, I just built another test cap to try it out in a simpler environment and it works.

    What worried me is that I had tried a simple test earlier and gotten back nothing, so I must have just done something wrong without noticing.

    Thanks.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Is it possible to access private variables from Python?

    I've been trying to get expressions like

    Sprite.Value( 'privateValueName' )[/code:3vrx0x9k]
    to work in python, but so far it seems like I only get back some kind of null value.
  • What is the purpose of the "PreviousTexture" mentioned in the wiki?

    http://sourceforge.net/apps/mediawiki/c ... el_Shaders

    It seems to be exactly the same as "BackgroundTexture" when it is the first effect, and exactly the same as "ForegroundTexture", when any effects come before it.

    Is it just so you can make effects that work on both the background and the foreground depending on its position in the effect chain?

  • This may seem like an odd question (and it's unrelated to Construct), but is there a way to flip the entire XP desktop vertically. By "flip", I mean mirror vertically, not rotate 180 degrees. By "desktop" I mean everything shown on the monitor. That is to say, the mouse pointer, windows, menus, text; everything would be upside down, while the computer continued to operate in real-time. I know there are ways to rotate the display, but that isn't what I'm looking for.

    e.g. If you laid a mirror flat across the keyboard of a laptop computer, ordinarily the reflection of the screen would be flipped vertically, but not horizontally. To make the reflection appear right side up, you would need to vertically flip the image on the monitor. Rotating the image on the screen 180 degrees would not work, because you would get the reflection right side up, but it would be flipped from left to right at that point.

    Essentially I'm looking for anything that will allow me to flip the screen along the X or Y axis in software. I don't know if there are any third party tools or plugins for windows that do that but I figured I'd ask.

    I've looked around for something to do this for a while now and if anyone knows of anything, please let me know. Thanks