OlivierC's Forum Posts

  • Do you need to do it at every tick? Since you set it at a constant 0.2, why don't you just do it once when the layout start? If the scale never change, there is no reason to to repeat it on every tick (unless I'm missing some information). I know it's a simple operation and that it's not significant enough to slow things down, but it's good practice to try to keep things optimize, even for the small things

  • Yeah, there is no expression to get a sprite scale, while you can set it (as far as I know, I might be wrong, but I think it's because you can modify height and width separately, so there is not one unique scale). So one way to do it is to store the original width or height of the first sprite in an instance variable when its scale is still 1:1 (like on layout start). Then you can calculate the sprite scale at any time by dividing the current width by the original width.

    It would be something like this:

    Every Tick -> Sprite2 scale = Sprite1.Width/Sprite1.originalWidth

    Not sure if it's the most efficient way, but that should work. There might be a workaround that does not require using variables.

  • I would look into effects to create different mood without having to create different versions of your assets. You can use effects to darken or change the color of the whole layout

  • I don't know if it's due to Steam or not, but I have the Steam version too and have a lot of stability problems, Construct just freezes, sometimes for a minute or so and finally become responsive again, but sometimes it just freezes permanently. It does not depend on the weight of the project, as it sometimes does it on an empty project. At first I thought it was just my computer being slow and needing a clean re-install, but it happened on my brand new laptop too, which has almost nothing installed on.

    So yeah, if it has something to do with it running on steam, I'd like to be able to transfer my license to a non steam version

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • People recommend using tiled backgrounds for games because in most case it's appropriated and more optimized than having a larger custom sprite.

    But while that's true for scrolling background in platformers or for floors in top views, it does not mean it has to always be like that. And for the case you are describing, an interactive book, I don't see the problem of using full screen sprite as background, it seems appropriate. In fact that's what I'm doing for my game, which is an old school point and click. Each screen uses at least one image as big as the game resolution to cover the whole background, or even bigger for scrolling rooms. Sure it uses more memory that repeating a small 64*64 image, and I'm aware of that, but that's the artistic direction I made and if my game ends up being 200mb, so be it.

    But if you do that, I recommend loading your image dynamically for each layout (pages in your case) otherwise the game pre-loads everything at the beginning, which can be a problem if it is played online (even if it's stored locally, loading a bunch of HD images can take a while), and also a bit wasteful, you don't want to load all the arts, from beginning to end, if the user is only going to read 4 pages at a time.

    But you'll have that same problem whatever program you decide to use anyway.

    So anyway, yes Construct is totally capable of doing what you want, at least in my opinion. Is it the best program for that? maybe not, since it's more game oriented, you'd ended up using only a tenth of it's possibilities. But if you like it, give it a go.

  • Hi everyone, I haz a question. Sorry if this has already been discussed, I tried to read the whole thread but gave up after a few pages since it's mostly talking about fixing bugs.

    I found about Spriter only recently (well, I have only used construct for a couple of weeks :P), really cool animation tool.

    I'm not a big fan of the paper doll look, so I'm not planning on using it for character animation, I'd rather stay with the old school hand drawn style (however it can be useful to design walk cycles and export as a template to draw over). But I must admit being able to animate sprite with bones and IK has a lot of potential, not just for game makers, but as an animation tool as a whole.

    In fact, that's what I'm more interested in. Coming from the 3d animation industry, the timeline and keyframes is really something I'm very familiar with and that I wish was present in some way in Construct.

    See, I started working on an adventure point-n-click game, this is a long term project, not something I expect to complete in two weeks, coming along nicely and I'd really like to have some cut scenes at some point (if I get to that point). I found some interesting plugins which could be really helpful for that (liteTween, Timeline...), but when I saw spriter, I thought it would be a lot easier to design and animate cut scenes in it than in Construct (don't get me wrong, I love construct).

    So the question is: Has anyone tried that yet? Create some cutscene animation in Spriter without worrying about events, just setting keyframes, import it in Consctruct, put it in it's own layout with nothing else, start the cutscene by simply going to that layout, let it play the animation and once completed, move to the next layout? Would that work?

  • Check out this tutorial by Ashley, he explain of to do this kind of thing using the Wait and Every N second conditions

  • Hi my name is Olivier. I'm french, I live in belgium. I started working as a web developer for 4 years but then I moved on working as full time 3d modeler. I work on animated films, TV series and video games as well.

    About two years ago I started working on my own 2d game in C++, from scratch, old school adventure. I had made some decent progress, I had a small prototype running but never had the time and motivation to develop the tools to actually create the game content. That's why I decide to switch to construct, which allow me to focus more on the creative part.

  • I'm also making a menu right now and I want it to be as user friendly as possible. My game support mouse/touch, keyboard and gamepad, all at the same time, and that include inside menus too.

    For the mouse, it's pretty straight foreward, I highlight the menu items on mouse-over and select on click. I had to use some of the workarounds you mentioned, especially for sub-menus in hidden layers still catching clicks (I was actually pulling my hair on this one until I realized what was really happening).

    For keyboard and gamepad, each menu item has a variable named index (I created a specific family for menu items). it's a numeric value and I give each item a different number. This allow me to navigate through the menu with keyboard and gamepad, when pressing up or down, I highlight the item with next greater/lower index value. If I reach the end of the menu (no more greater index available) I jump back to the first item (the one with the lowest index). Then for selection I use the button A or enter. In case I'm in a sub-menu (options, confirm quit...) button B and Escp act as a shortcut for going back to the main menu (as well if I'm in the pause menu, this will resume the game), you don't have to move the selection to the "back" item and confirm (but you still need to keep it for mouse/touch users). This might be a bit over the top, but it's this kind of polishing that really increase the user experience overall (sure if the rest of the game is crappy, it's no need to have a fancy menu)

    While all this is handled in a generic form with Families and function (I can easy create new menus and item on the fly now), I still need to specify for each menu what each item does when selected.

    For that I use a variable named in the menu item, which contain a string.

    Then when an item is selected, I run a function which get this variable, compare it to a bunch of keywords, and do the corresponding action:

    if action = "start" -> go to layout "firstLevel"

    if action = "options" -> Call Function openSubmenu("option")

    ...

    That's when I wish there were a Switch statement

  • you can create a loop which generate two random numbers X and Y until those coordinates are far enough from the player position (say 100 pixels). You can use the distance() expression for that. Unless your layout is very small, chances are that loop won't need to execute too many times until the exit condition is met.

    Edit: when generating the random numbers, you must specify limits which correspond to your layout size.

  • Indeed, you don't need to duplicate everything. Actually, the fact that the character is mirrored does not matter, you can remove it. You can make an OR event: drag and drop the left arrow pressed condition inside the right arrow pressed condition. That means you need to press both the left and right keys for the event to be true. Unless you right click on the condition block and select "make OR" and that means the event will be triggered if the right arrow or the left arrow is pressed. But the "is walk animation playing" is also in the OR block, you need to move it out.

    Something like this

    -Right arrow pressed

        OR

    -Left arrow pressed

       -luffy is animation playing ---> put your actions here

    same thing for the arrow release, you can combine both in one OR block

    EDIT: MY bad, forget what I said, you need to know which direction the character is already walking because if you press the right key while you're walking left, it would start running instead of turning around. But still I'm sure it can be optimized. And if you can't get rid of duplicated actions in the end, you should look into the Function plugin

  • you have something weird going on with your "is mirrored". First you check if the sprite is mirrored or not, but then, in the key press condition, you also check if the sprite is mirrored a second time. While in the facing left case it does not really matter, in the facing right it does because you first check that the sprite is not mirrored, then you check if it is, so the second condition will never be true.

    Then something is messed up with the left/right arrows too. In your "facing left group" you check if the right arrow is pressed. Should it be the left arrow?

    then in the "facing right" group, you check if the left arrow is pressed, but if the right arrow is released. There is definitely a mistake here

    finally, the actions in the facing left and right groups are exactly the same. So even if your logic was right, it would not work.

  • i guess you can just play with the car behavior properties: steer speed, friction, drift recover... i'm sure you can get the desired result with a bit testing. It might take a few try but it will still be faster than making a custom behavior

  • Yes, create a condition that test if the button is pressed (using the "on click" condition if you are using the actual Button plugin, or testing if the mouse clicked you sprite if you used a sprite as a button)

    Then, supposing you already created your loop condition, drag and drop it inside the click condition. This is very basic stuff, you should check out the tutorials

  • I would have suggested the invisible walls too. Add Pin behaviors to those walls and pin them to the "container" sprite, so thqt when the sprite moves, the walls follow.

    Otherwise you can re-invent the wheel, testing on every click or when your character moves that it is contained inside the sprite and if not, repositioning the player