Lou Bagel's Forum Posts

  • First thing is usually art and aesthetics because a screenshot (or packaging) is usually the first thing you see. "Graphics" aren't a huge deal to me but if it looks like they didn't put a lot of effort into the art then they probably didn't put a lot of effort into the entire game.

    Next is a hook, either some kind of story or unique feature of the game. Something that when you hear/read you think 'hmm, that seems unique. I want to hear more'. This could be in the text description of the game or a video. I don't want to play a game that is a copy of others with nothing original. (unless it is a copy of a favorite game, I guess)

    What really gets me hooked on games though is making me think, to put it simply. Someone mentioned Zelda games earlier, they are great with puzzles, strategy battle games such as Xcom and Final Fantasy Tactics, even first person shooters that aren't just run and gun but have stealth, cover, tactical vantage points, etc. Hitman was a favorite of mine due to having to monitor the guards and think what is the best way.

    "Progress" is another good point. Leveling up in RPGs, getting better weapons in FPS, more money and bigger towns in games like SimCity type, Clash of Clans, etc. People feel good when they can see progress but I don't think it keeps people there if it gets repetitive.

    Another important part is that it is challenging but fair. If it is too easy it gets dull from, well, basically not having to think. But it is frustrating if a game is 'unfair' such as you die or lose from no fault of your own, as in there was nothing you could do to stop it.

    Hope this helps. As I'm becoming more comfortable with Construct I've been thinking more about what makes a game fun so I don't just make a game, but a fun game!

  • Did you check that the animation speed isn't set to 0?

    I didn't follow your link you posted previously but do you have a capx or screenshot of your events to share?

  • Anyone can help me?

    Did you try my suggestion above? I'm not sure why it wouldn't work...

  • I don't have time to cover every detail right now and not on my computer with Construct so I can provide a capx or anything but thought I would try to explain and you can ask questions on what you don't get.

    Lerp(pointA, pointB, position)

    So lerp will move something from pointA to pointB and the position tracks where it is at between pointA and point B. So the position is from 0 to 1, where 0 is equal to exactly point A and 1 is equal to pointB exactly.

    I have seen two methods implemented

    -every tick

    --set x to lerp(viewport.x, pointB, 0.02)

    So this will calculate the distance between where viewport is currently and point B and move it 2% of the distance. The distance is new every time since viewport.x is constantly changing. Therefore the movement will start out fast and slow down near the end. (maybe never reaching the target exactly because the position is never set to 1)

    The other way, lets say you are moving from 500 to 2000

    Global variable position = 0

    -every tick

    --set x to lerp(500, 2000, position)

    --add 1/60 to position (so maybe about a second, you may want to make this frame-rate independent)

    So this will be a smooth movement as you are moving the same distance every tick.

    So the second version I would to this:

    Global variables

    StartX

    StartY

    FinishX

    FinishY

    Position

    Group (start disabled)

    -every tick

    --set x to lerp(StartX, FinishX, position)

    --set y to lerp(StartY, FinishY, position)

    --add (how fast you want it to go) to Position

    --If Position >= 1

    ---Group Disabled & set Postion to 0

    Function Camera move

    --Set all the Global variables

    --enable Group

    Hope that is a good starting point for you!

  • I found 2/3 easter eggs

    I bet if I could see an over-view map I could find the third- I couldn't figure it out! That second one was very clever though! I knew there had to be something on that screen.

    Nice work! Congrats on being the first!

    I see you are missing the green egg. That is actually my favorite I will send you a map as requested when I get a chance because I'm not sure that will help you as much as you think!

  • That worked perfectly- thanks so much!

    Now I feel challenged to find an easter egg... Ill have to try again after work tonight

    Great! (to both)

    Hint: two of them require very detailed observation to surroundings. The other, a little creative thinking, but most likely luck in discovering it.

    Happy hunting!

  • I avoid Wait for anything but the simplest things. Timers give you 100% control over your timing.

    Thanks, makes sense. So easy to throw in a wait without thinking about it. Need to get out of that habit and get more familiar with timers.

    If you don't mind a follow up question: How do you organize your timers? (or more accurately name them)

    So lets say it takes a small amount of time for the main character to do certain actions (cast a spell, open a treasure box, prepare special attack, etc) but if hit by enemy that buildup is stopped. So if you had a timer tagged "fireballSpell" & "openChest" & "superPowerUp" etc. you would have to add a stop timer for each one of those tags in the event for the character getting hit, no? Or can you stop all timers for one instance? (of course that might lead to issues stopping all timers, not just relevant timers, for that instance)

    Or I was thinking have an instance variable, lets call it timerFunction. Then could do:

    On key/button pressed:

    -set timerFunction to "fireball" or "openChest" or whatever they are doing

    -start timer "mainCharacter" (always keep the tag the same)

    On timer "mainCharacter"

    -call function character.timerFunction

    On main character hit

    -stop "mainCharacter"

    Sorry I am using you to think my thoughts through but it seems as you are filled with wisdom

  • Are you sure you don't have more than one tile selected in the editor?

  • Ugg. My first instinct when I saw your code was to blame Wait, but as is, it does work, except of course if you destroy the Monster that is then later still referred to, as you painfully found out. So switch to using a Timer on Monster instead. Then if the Monster is later destroyed, the timer will be cancelled automatically. Sorry I didn't speak up sooner.

    Ahh. So in general it would be a good idea to replace any waits with timers when dealing with monsters and combat and such?

  • No worries!

    ~Sol

    Actually, it is still doing it but I think I figured out why.

    This is basically what I have

    On timer

    --animate

    -- Wait short time (0.3 seconds or so)

    -- Monster spawn bullet object

    -- Set bullet direction

    I actually thought this through while away from project and testing but I think this is why it is happening:

    If the monster is hit/damaged and destroyed between the timer going off and the spawning (so 0.3 seconds time window) there is no new bullet spawned. Only one monster is picked and it is destroyed so no monster is left picked to spawn a bullet. And since no bullet is spawned then setting the bullet direction will pick ALL of the bullets.

    So I was thinking of changing it to:

    -- Monster spawn bullet object

    -- Set instance variable (to the angle)

    On bullet created

    --Set direction to instance variable

    So even if monster is destroyed and all bullets are picked it will just set an instance variable that won't be used again.

    Will the On bullet created fire before the instance variable is set though? Should I put a miniscule wait in there? How small? 0.05 seconds?

    Or can anyone think of a better solution?

  • Why do you have the repeat 10 times? The for loop will run it for each so you are running it 10 times for each.

    This is how I was thinking.

    On start of layout

    -for each npc

    --start timer "idleAnimation" random seconds

    On timer "idleAnimation"

    -for each npc

    --Idle animation

    --restart timer

    The for each on the timer is due to if two timers go off at once they will be separated.

    Let me know if you have any more questions.

    ...and thanks for trying my project! And don't worry, no one has found any of the eggs yet

  • What doesn't work about using the mouse or touch event of clicking on object?

  • This is setting them all at the same time. Use a for each loop. Also could use the timer behavior.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Have you tried using an every tick event to move the viewport incrementally?

    lerp() is also recommended.

  • You can't technically spawn something in a different layout because only one layout is really active at a time.

    One way you could do it is have global variables. This would only be efficient if you are tracking a few.

    spawn1 = 0

    If something happens in this layout spawn1 = 1

    On start of layout & spawn1 = 1 THEN spawn

    There is also Global setting in the instance property:

    [quote:100s9zr3]Global

    By default, all instances are destroyed when the layout ends (e.g. when going to the next layout). If Global is Yes, none of the instances of this object type will be destroyed when switching layouts.

    Maybe you could spawn in this layout, set to be inactive and hidden, then have it be global to carry over to next layout, then activate it. I haven't used this though so not sure if it works that way

    There is also the persist behavior. Don't believe this would help if spawning an object in a different layout but would help if wanting an object to stay the same when coming back to a layout.

    https://www.scirra.com/manual/161/persist

    Hope some of that is helpful