Ruskul's Recent Forum Activity

  • > snip

    >

    I agree with all this. Got to say, reading about some problems make me feel like I live in a different universe or something. I can vibe with the sentiment that C2 feels limited because of certain assumptions about what users need and what they don't. The recent parallax discussion for instance springs to mind. But I don't see why we couldn't recreate Mario, or any kind of platformer gameplay we like, with the platform and solid behaviours and some events to supplement them.

    It's actually because the way the platformer handles collision detection and response, that you can't clone mario. Iv'e been repeating myself multiple times in defense of the "you can't clone mario" argument with behaviors. You need a custom system for handling mario and his collisions. Trust me, I am not simply talking on conjecture but on actual experience. I event scripted a mario clone and I coded one via the sdk. In the future I may share this project, but I don't want to deal with people trying to figure out how to use them.

    In many cases you can get away with the platform behavior. but the moment you need a low level control, you are up the creek. For example: if you need collision grouping, things are impossible with the behavior atm. If you wanted to altercate the way collision response takes place on slopes... well... now you are in the behavior itself recoding it. You can't fix the way a behavior works in events. Try adding kinematic bodies to physics using events. lol. You can add in 10 minutes though, via code, but it is impossible through events

  • I think it's more like...leave behaviors alone and give us more options to make what we need when we need it, using events. What Newt said is actually how Stencyl works lol.

    This!

  • I don't really get this talk about all these behaviour limitations? If my project needs something and a behaviour can be used then I use it. If there is no behaviour that suits my needs I make my own logic with the event system. What is the problem?

    I don't think anyone was getting at behaviors as being a problem. It is the weakness of the event system in creating extensible, manageable, abstract systems to be used in multiple projects.

    If you need raycasting you can make your own with the event system. If the platform behaviour doesn't work for you, then make your own or tweak it.

    Ya, I think several of us did that. But events are a dumb way to go about creating raycasting. It is already a cpu hog and running it through events would be sort of short sighted. Programing behaviors is not as fast in construct as it is in unity. Because the end path in construct for an advanced developer usually involves creating their own plugins and behaviors it makes sense to be somewhere else as Colludium said. You have lost the advantages of construct at that point.

    People seems to think that you are limited to only use the behaviours for the whole game. I only use a few and mostly do my own with events and functions that can be reused. I also work in Unity and Unreal Engine and you can download behaviours there as well but just like in C2 they might not suit your project and you simply make your own. So stop thinking that behaviours is a limitation. It's just a tool you can use if they suit your needs. I'm not saying that C2 doesn't have limitations. I'm just saying that behaviours isn't a limitation.

    I couldn't agree more. But the limitations of event system don't make some extensions economically plausible if time is a resource... back to the sdk!

    Saying that you can't make a Super Mario clone in C2 is not true. It is actually pretty easy to make with behaviours and custom events and if you know what you're doing you would be able to make an exact clone of mario in no time compared to other engines like unity.

    Go back and read the comment that was made in this regard. It wasn't that you CAN'T make mario in c2, it was that you can't make a mario clone using the platform behavior. Making an entire system to handle and resolve collisions, provide the backbone to all platforming characters (mario, goomba, etc), and so on, is an endeavor best attempted via the sdk in construct: not the event system. I know. I have made a framework to handle the above in c2 events and in code, and I can assure you I know how, I know what I am doing, and I speak from experience. Unity provides a better environment for coding and would be a better place to be if your development is code centric. Which given the above, probably should be if you don't like wasting time. I also am going to make the claim that you may know what your doing in construct but you don't in unity if you think you can event script a basic system like collision detection in construct faster than in unity. In the end, the coded system will also be better, as code allows for scope, among other more important things.

    Just to put things in perspective, I have given the code to fix several bugs in the box2d physics system, which I have read the entirety of and understand. I have made my own box2d behavior that includes several missing features in the vanilla behavior. I have created several of my own retro collision detection systems, and reverse engineered mario 3 collision basics using frame by frame analysts. I have taught children's classes on programing, ... blah blah blah... obviously this is the internet

    "If you knew what you were doing..." ... You could make the cone mario in code much faster than in c2 events. Also, on a trivial note, Mario's position can only be stored and changed by a minimum of 1/4 pixels. This is important if you want to make an "exact" clone.

    I think this remake of Donkey Kong by Ribis in C2 is alot more complicated than a simple mario game and it shows what you can do by combining behaviours with custom events.

    Subscribe to Construct videos now

    I never played DKC so I can't readily compare this clone for specidic details. This is an awesome example of what can be achieved using c2, but nowhere could I find the author stating he didn't use the sdk to help him make this.

    You may be surprised to know, but there isn't really anything going on in DKC that makes it significantly complicated than mario 3, at a core level. I am making this claim based on only what I can see in the demo. Sure the snes could handle more x,y, and z, but the basics concepts of how x, y and z are handled and resolved didn't change much from the nes to the snes.

    So people who are saying that you can't make unique games with C2 are just not experienced enough. If you think outside the box and stop relying on behaviours and use the power of the event system instead you can create almost anything.

    Uh... I don't recall anyone saying you can't make a game in construct. And I also think that that Tokinsom amongst others simply stated the problems with using a behavior to get the results you want. Obviously they understand you can't simply use behaviors and expect unique results.

    "Almost anything" I am sure doesn't include the missing features of physics behavior, projection angles, or how about this: your own broad and narrow phase collision detection algorithms. Ya, you know why, because you would be crazy to attempt to write that in events. You have to code, because it is more reasonable.

    And many people say that C2 isn't capable of making big hit games because there are so few good C2 games on the market. The truth is in fact that C2 attracts people without experience and most games released are to be honest pretty bad and the overall quality is really low. But the engine itself is capable of doing almost anything if you use it the right way but as any other engine it has its strengths and its weaknesses.

    Did anyone even mention this on this forum yet? But you are right. C2 can make amazing stuff, if you use it right. Using it right, at a low level, involves programing <img src="{SMILIES_PATH}/icon_e_smile.gif" alt=":)" title="Smile">

  • newt - I think that is what is kindof being hinted at. You can't make one behavior fit every need. There are a few platformer behaviors in unity that, rather than being one behavior they are a multitude of behaviors. You add a single manager behavior that coordinates the sub behaviors. Things like wall run, and jump, can then be added. Duck, slide, roll, jump, climb ladder, drop through, get surface angle, run, and so on are then added to the object. Each has its own parameters and what not.

    The basic manager only has stuff like collision detection (no resolution) and keeps track of state and whatnot. In a way, when you extend the platform behavior via events, you are doing much the same thing. The problem is is that the basic platformer already does more than it should and can't have things turned off. It is also missing some low level features that enable much more advanced derivatives of it (like being able to chose how collision response works, being able to ray trace, and so on)

  • Tokinsom - ...I'm definitely interested in addressing this in the long-term with C3. However I can tell you getting a bulletproof movement with no difficult edge cases is extremely difficult even as an experienced developer working with a traditional programming language. Implementing movements in events and leaving it for the user to fix to their purposes probably just shifts this difficult problem to the user, which may be suitable for expert users, but probably is not much help to the majority of less-than-expert users.

    However (mostly aimed at other posts in this thread) I don't think it's fair to say that the behaviors are useless if they don't serve your purposes or they are missing your favourite feature request - as far as I can tell, they are very useful for the majority of users, and we frequently hear positive feedback about how effective the behaviors are for many users.

    I just wanted to say that the behaviors are indeed, not useless. But they are what they are and don't offer much beyond that if that makes sense. Its the lack of control at a finer level that I find "lacking". And I wholly understand your point about the whole average user vs expert user. But I think there could somehow be a way to accommodate both. I think the platform behavior is great for busting out a simple, normal platform game. Shoot, there is even gravity flipping available which is less than a common use case would need. So in that way, isn't the beginner- intermediate user base satisfied?

    I'm not wanting, more behavior options but rather access to more basic things. An advanced tookit, similar to what can be found in other engines, with good access in the sdk and in the event sheet is what I want... and it is important that they can be accessed seamlessly in both places. Things like ray tracing and surface normal info, Collision detection that yields more information, collision masks, bitmasking, polygon overlap area, point based collisions, and so on.

    The most that construct 2 offers at a low level is push out of solid, but that is it. You can access it as a custom movement behavior, or you can access it in the sdk, but that is the end of the tools for collisions.

    And as pointed out, it seems likely there amongst the advanced users there is more demand for the tools to make a platform behavior than simply a behavior that handles platforming, right? And I think this can be extended beyond the platformer behavior issue and apply to the rest of construct.

    High level tools can only go so far, if you can't modify them at a low level. Low level tools would enable much more possibilities and those are the types of things I want most in a game engine. Many of the behaviors work well in the way they are intended to, and they make good jump off points. But at some point one needs to delve deeper to make something unique.

    I also think I understand that either way, this is a difficult issue. Construct 2 needs to be accessible for the beginner (I use it to teach 3rd graders how to program). But it would make sense to offer more expert options.

    But ultimately construct is your project and not mine and I am glad you made it!

  • (insert list of problems with platform behavior)

    You nailed it. and this is like you said, just off the top of your head.

  • Not sure Mario's the best example here...C2's platform behavior is fairly capable of that.

    That is where I must say point blank: the platform behavior isn't capable of that. That is what makes mario such an amazing example. You can make a approximation, but you can't make mario with it. And mario is a very old game. So when you make a game using c2 platformer, you are stuck with all it's inherent advantages and disadvantageous. You have made a c2 platformer at the core of your game, whatever the game may be. Now, obviously we want to avoid cookie cutter behaviors, right? Making a mario platformer behavior, would be cookie cutter. But in my mind, it would be no more cookie cutter than the current system. What I want, is to see behaviors boiled down to more basic ideas, and the platformer has to much going on in it that you can't control (ie, collision response).

    First and foremost, the mario games in the nes and snes era actually tolerates mario overlapping "solids". When collisions are resolved in a left/right manner mario is only pushed a maximum amount of one pixel per frame, out of the object. when marios head overlaps a solid, it is not resolved at all, but rather his velocity if <0 is set to 0.

    The genius of old school mario games lay in the sheer simplicity of how collisions are detected and resolved. The subtleties of how that impact the game are numerous but mostly positive. The collision resolutions often favor player intent rather than mathmatical precision. Its what makes mario a great platformer. Mimicking this system is possible in events alone. But for ease of use I wrote a behaviors because that made it much more extensible and reusable. It also reduced how much work I have to do per object in events in construct.

  • GenkiGenga - I agree with you 100% as I understand it. I know for a fact that coding background has hindered my ability to grasp simple event patterns that solve much more complex coding issues. I kinda get those "Oh, right, herp derp moments. And it is really cool that, as Ashley said, event scripting is a new land with new problems to solve. It is unique and some of the paradigms are completely new.

    I also like events better than coding, which may seem odd given my remarks. What I don't like is that the event system makes some things take more time than it should, this in turn compels me to code. It's those basic modularity problems that bug me... Like, why can't I define structures of variables and add them any object in any project. Same thing for object specific functions, and so on...

    Colludium was metioned in terms of making mario. To my knowledge, mario can be made using events alone, but you can't use the platformer behavior. I made a tilemap based collision detection system for resolving collisions using tile IDs and linear inequalities. Here is the problem though, given the lack of oop, making something like this in construct as far as I can tell, forces some bad programing practices. There are large swaths of events that nearly replicate other large swaths of events. As most would guess, editing this system becomes a big problem. The events are unmaintainable and as the scope of the project increases so too does the amount of time needed to add something new. I have over 2,000 events in the collision detection and response.

    It took much less time in javascript making a behavior to do the same thing (construct doesn't have switch statements which is a major problem in tile id collision detection.

    The final problem comes with sharing this. It would take a large manual to describe how the user must then use this system. In traditional code, I can force things to be certain ways via properties. In a behavior I can make sure that anytime variable A is messed with, variable B is also updated, but I can't do this in events.

    And this is all due to certain features lacking in the event system, like properties, and private functions, and scope for that matter.

    It doesn't come down to "You can't do it" but rather that you can't do it because its currently the wrong tool for the job. By and large the best ways to make advanced systems in construct is to bust out the sdk. I would much rather do it via events but... as I said above. Does this make sense?

  • GenkiGenga - The problem with trying to create reusable events now is that it takes a long time. Not to make the events, but to get them copied into a new project. I use stub projects where whne I get a particular framework where I want it, I then strip it of its specifics and save it as a template. But inevitably I find I am always reinventing the event sheet wheel in multiple projects. and that gets annoying.

    Similarly , I am not trying to be antagonistic, but If you haven't found the behaviors to be lacking, then you haven't pushed them very far. Or, you have pushed them with the greatest flexibility of expectations. I know I don't compromise, and being able to do so is important when you use other peoples code. However One post up from yours, I make the claim that you can't make mario with the platform and solid behaviors.

    I don't want more behaviors though. I want better ways of making my own. And I would very much poo poo using events to recreate marios platform behavior and collision resolution. It's more efficient to code it in light of events being very much tied to the original project.

    On a final note: I love the events. I love the visual nature of it, but in the oop department, extensibility department, and scalability department., it is hard to beat code, atm

  • group variables! I often organize an objects variables by creating multiple objects and putting them in a container, but this gets messy with families. Having a hundred variables on an object is also messy. It would be much better to be able to create a predefined group of variables that can then be added whole sale to an object. Much like a structure.

    Example: tired of always adding ceartain variables to objects...

    Instance variable group "Velocities" = {

    x as number

    y as number

    lastx as number

    lasty as number

    };

    Once defined, this group could be added to any object in any project. It could be accesses in expressions via someobject.Velocities.lastx.

    Also, one could create functions and attach them to objects in the same way. the contents of the function would be an event sheet where the object reference self would always point to the object calling the function

    And instance function "SaveLastPosition" = {

    self.velocities.lasty = self.velocities.y

    }

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • > I heard that you can now copy a single tile in the tile map work area. How is this done. Also, why can't you copy an entire area like you can from the tilemap palette. Also, is there a way to copy and move sections of the tilemap? ... -.-

    >

    1. It's shift + click (or + right-click, not sure)

    2. That will be available soon (hopefully very soon)

    3. No

    Was Ashley planning 3? I thought that was seen as fairly necessary and basic. I mean why bother with the ability to edit a tile map at all if it is missing basic features.

  • You can use the program Tiled, it is much more comfortable.

    yes but I feel the development workflow is quite bad and doesn't allow fast level editing when designing "tight" levels.

    I will have to give it a go again though, as it seems the "less favorable work flow" will be faster in the long run.

Ruskul's avatar

Ruskul

Member since 23 Nov, 2013

Twitter
Ruskul has 2 followers

Trophy Case

  • 10-Year Club
  • Forum Contributor Made 100 posts in the forums
  • Forum Patron Made 500 posts in the forums
  • x6
    Coach One of your tutorials has over 1,000 readers
  • Educator One of your tutorials has over 10,000 readers
  • Regular Visitor Visited Construct.net 7 days in a row
  • RTFM Read the fabulous manual
  • Email Verified

Progress

17/44
How to earn trophies