Mikal's Forum Posts

  • I saw the nice tutorial on particles and tossed that in to start adding some atmosphere, I also want to start changing the colors to be softer in a Monument Valley like pastel palette. I also have added to level the option to shrink the blocks by a certain amount. Currently, this is applied on all levels but will change it to be varied. With the shrink of blocks, the blocks become interesting and imperfect/impermanent. Wabi-Sabi style!

  • Fun game, some comments, hope it does well.

    • Agree on speed, a bit faster would feel better.
    • Along with faster, would be interesting if you have AI respond appropriately to good juke moves (equivalent of head fake of using the controls)
    • How about a spin move to break a tackle
    • How about a power up of a blocker in front of you (which gets taken out by the first opponent they run into.)
    • On extra point, scale ball smaller as it flies away from (a little juice)
  • Changes:

    • Level does not reset everytime you die, you have 6 chances before reset level. I will probably make the lives per level a level parameter (so it can change).
    • When you die, you change, become smaller, jump strength goes down but you become faster, you degrade and upgrade
    • When you return to starting position, you float up from the bottom and you can still change blocks that you pass through.
    • If you die 6 times, level restarts

    So getting amusingly philosophical for this very simple game, I was thinking about Wabi-Sabi and some of the tenets of Buddhism around impermanence and continuity.

    • I like that your player can also change/degrade over time (impermanence), in fact, I want to make the background fade as the blocks and the player trace over it, creating a unique background for your game over time.
    • Some continuity - you can revive in the same level with your work intact, or you can full resurrect, but there is no end, you stop playing when you want (which might be really fast if you don't like the game, so need to make levels interesting and rev up the programmer art engine.)
    • When you die and come back you can have an unintended benefit - blocks you pass through can still turn.

    Haha, too much thought going into this simple game vignette, but I am enjoying it. Iterate!

  • Talking about all the different game modes - have you seen this (perhaps it was an inspiration?):

    Multibowl

    I saw a demo at GDC, it was pretty amazing which games they chose, some were so obtuse and random and some were pure classics. Similar to this, the actual game play for each game was very quick.

    Subscribe to Construct videos now

    (with pretty funny commentary)

  • Some feedback I got that was lost, when the thread got erased.

    From Pandadoor:

    • Watch for playable by color blind [Agree need to make accessible.]
    • Anti-virus [Agree, original name was infex, but was cute and reversed that, because I like the theme being curing]
    • Change from red to green [Yes in the spirit of curing]
    • Jump sfx occurs, even if jumping is not possible [Yes, should change the sound to an aborted jump]
  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Looking at that last screen you posted... starting to remind me of the silos of 'Wool' and the top floor being the dead planet surface outside (which is a good thing, great book.)

  • Level Design

    Done through parameters which generate the initial blocks and some behavior:

    Level attributes

    * 00 Level Number

    * 01 Name of Level

    * 02 Number of blocks

    * 03 Blocks Size

    * 04 SineHMag

    * 05 SineHMagRandom

    * 06 SineVMag

    * 07 SineVMagRandom

    * 08 Animation start

    * 09 Animation end

    * 10 H random top

    * 11 H random bottom

    * 12 V random top

    * 13 V random bottom

    * 14 Vector Enable

    * 15 Vector Animation Cure

    * 16 Vector Animation Infect

    Example level file, JSON object loaded through AJAX objects and events from local storage (may change to cached cloud storage model later)

    {
    "c2array":true,
    "size":[11,17,1],
    "data":[[
    [0],
    ["Explore"],
    [20],
    [1],
    [10],
    [5],
    [10],
    [5],
    ["A0"],
    ["A1"],
    [1024],
    [0],
    [600],
    [625],
    [0],
    ["A0"],
    ["A1"]
    ],[
    [1],
    ["Shrinkage"],
    [25],
    [1],
    [10],
    [5],
    [10],
    [5],
    ["A0"],
    ["A2"],
    [1024],
    [0],
    [600],
    [720],
    [0],
    ["A0"],
    ["A1"]
    ],[
    [2],
    ["A Little Faster"],
    [25],
    [1],
    [100],
    [50],
    [100],
    [50],
    ["A0"],
    ["A1"],
    [1024],
    [0],
    [600],
    [720],
    [0],
    ["A0"],
    ["A1"]
    ],[
    [3],
    ["A Little Faster Shrinkage"],
    [25],
    [1],
    [100],
    [50],
    [100],
    [50],
    ["A0"],
    ["A2"],
    [1024],
    [0],
    [600],
    [720],
    [0],
    ["A0"],
    ["A1"]
    ],[
    [4],
    ["PeeWee"],
    [25],
    [0.3],
    [100],
    [50],
    [100],
    [50],
    ["A0"],
    ["A1"],
    [1024],
    [0],
    [600],
    [720],
    [0],
    ["A0"],
    ["A1"]
    ],[
    [5],
    ["Deep"],
    [35],
    [1],
    [100],
    [50],
    [100],
    [50],
    ["A0"],
    ["A1"],
    [1024],
    [0],
    [400],
    [768],
    [0],
    ["A0"],
    ["A1"]
    ],[
    [6],
    ["Mongo"],
    [12],
    [2],
    [100],
    [50],
    [100],
    [50],
    ["A0"],
    ["A1"],
    [1024],
    [0],
    [400],
    [768],
    [0],
    ["A0"],
    ["A1"]
    ],[
    [7],
    ["Above"],
    [25],
    [1],
    [100],
    [50],
    [50],
    [25],
    ["A0"],
    ["A1"],
    [1024],
    [0],
    [400],
    [600],
    [0],
    ["A0"],
    ["A1"]
    ],[
    [8],
    ["Tower"],
    [25],
    [1],
    [100],
    [50],
    [50],
    [25],
    ["A0"],
    ["A1"],
    [524],
    [500],
    [200],
    [760],
    [0],
    ["A0"],
    ["A1"]
    ],[
    [8],
    ["Vector"],
    [25],
    [0.5],
    [100],
    [50],
    [50],
    [25],
    ["A0"],
    ["A1"],
    [0],
    [1024],
    [200],
    [760],
    [1],
    ["A0"],
    ["A1"]
    ],[
    [8],
    ["Triplets"],
    [3],
    [1],
    [500],
    [200],
    [0],
    [0],
    ["A0"],
    ["A1"],
    [0],
    [1024],
    [740],
    [760],
    [0],
    ["A0"],
    ["A1"]
    ]]
    }
    [/code:3l2zj9st]
  • Added level editor/tester, does not save yet. Can see interesting levels generated by this.

  • Inspired by a couple GDC talks this week. Doing a 'sprint' to release a game 'vignette'. In the spirit of doing a Minimum Viable Interaction' (based on the idea of a Minimum Viable Product (MVI)), I am mocking up an interaction based on this, scaling back and removing art just to get the mechanic down and see if it's interesting. The main interaction is jumping and flipping block states (ala Qbert.)

    Playable: Revision 009 [Stones rotate again, after solving normal map rotation issue]

    Previous

    Revision 007 [Change to rounded stones and petals, petals fade on touch]

    Revision 006 [Add cherry tree branches, change start platform to a tree branch]

    Revision 005: http://www.mopsothoth.com/xefnirel/005/ [update to 'art' add cherry blossoms falling via particle effects]

    Revision 004: http://www.mopsothoth.com/xefnirel/004/ [block degrade and dust particle effect]

    Revision 002: http://www.mopsothoth.com/xefni002/ [added level editor]

    Revision 001: http://www.mopsothoth.com/xefni001/ [added 11 levels]

    I stripped down my existing platformer code to the bare minimum, removed the animations and placed a bunch of blocks. I added one more event to give the player a goal when a block is touched, it changes color (via changing animation to a block of a different color.) I left in the mechanics of double jump and wall jump. If the player falls, the 'level' restarts. It was fun to play with for a little bit and nice to have a goal (changing all the blocks to be the same color.) The blocks are animated with random sine behavior for V and H, they are randomly spawned within a constrained range. Next, let's add some more levels with different behavior (reminds of different levels of Jumpman Jr. - which all had a fun title.) The large translucent rectangles at the bottom are for touch controls (platform controls on touch are generally pretty bad, hopefully keeping these very simple will make them usable.)

    Inspirations:

    GDC Talk 2017

    Hitchhikers Guide to Rapid Prototyping! (Mark Barrett)

    Todd Hamish: Geometric Viruses

    Subscribe to Construct videos now

    Jason Rohrer: Game Worlds

    https://mitpress.mit.edu/books/game-worlds-jason-rohrer

    Experimental Gameplay Workshops at GDC

    http://www.experimental-gameplay.org/

  • I had fun with this, it has nice polish, very clean design. The trail behind the player adds some nice juice to the game. I wonder if there is even some way it could become functional (e.g. dragging blocks in with your tail if you just miss them, similar to how a jellyfish works.)

    On the controls, I always struggle with virtual buttons on touch screens (including in my own demo). In this case, it might be a good candidate for an alternative form of input. Perhaps tilt or right swipe / left swipe, try it out?

    Subscribe to Construct videos now

    The Leaderboard / Gamecenter integration was good, it definitely encourages me to play more to climb the leaderboard. What plugin, etc. did you use in Construct 2 to do the leaderboard integration?

  • I like this nice little bit 8-bit narrative and exploring an interesting active community that you get to try to figure out. It also reminds me of movies / games where the protagonist moves quietly amongst a stratified environment, but when they break with the convention of the society, the community erupts into chaos, perhaps against the protagonist. Perhaps a meter of suspicion directed towards you based on your behavior could add another interesting element to the game.

  • Nice art and animations. I like environment effects on your death, the blood splatter and taking away obstacles (your death makes it easier for your opponents, and you when you respawn to complete the mission.)

    Will the players be able to interact directly in future builds or levels (I can see how the can interact indirectly through the plates activating the lightning traps.) Since this is a bit of race game, it lends itself to race powerups like there are available in Mario Kart (banana peels, player seeking rockets, speed-ups, etc.)

  • I made the below for my dialogue writer as a guide for when they write dialogue and scripted events. (Taken from the comments in the code.) Great plugin.

    Dialogue text commands cheat sheet:

    • {pause}
      Force user to make an input for the current sequence to continue.
    • {wait:<delay>}
      Add a delay for the next character to display.
      <delay>: delay in ms
    • {setdelay:<delay>}
      Set the character delay for the current sequence.
      <delay>: delay in ms
    • {next}
      Automatically skip current sequence and go to the next. Use it at the end of a sequence, coupled with a wait command just before so the user can read. (Perfect for cutscene).
    • {end}
      End the current dialogue. Useful in a multiple forks dialogue.
    • {playsound:<filename>,<tag>}
      Play a sound file.
      <filename>: the sound filename without extension
      <tag>:tag
    • {playmusic:<filename>,<tag>}
      Play a music file.
      <filename>:the music filename without extension
      <tag>:tag
    • {fademusic:,<tag>,<duration>}
      Fade a music file.
      <tag>:tag
      <duration>: duration in ms to fade
    • {changeportrait:<animation>}
      Change portrait (only works if portrait is shown).
      <animation>: new animation name
    • {fork:<expression>, <truePath>, <falsePath>}
      Fork the current dialogue sequence into two possible path. Can fork inside the current dialogue or start a new one.
      <expression>: expression used to fork. Use the "GameVariables" dictionary for dynamic values. ex: {#goldAmount} >= 50. It will be evaluated with javascript "eval" function, so use valid javascript syntax. String litterals should be double quoted, and not containing any comma. String coming from the "GameVariables" dictionary should also be quoted. ex: "{#playerName}" == "Zelda".
      <truePath>: path if true, use a number to fork to another sequence index, or use a name to fork to a new dialogue. (A numeric value lesser or equal to 0 or an empty string will end the dialogue).
      <falsePath>: path if false, use a number to fork to another sequence index, or use a name to fork to a new dialogue. (A numeric value lesser or equal to 0 or an empty string will end the dialogue).
    • {choice:<choiceText0>::<choiceDiaglogue0>, <choiceText1>::<choiceDiaglogue1>, ...}
      Offer a choice of input to the user. Dialogue will fork according to the choice selected. One parameter per choice. If you need commas in your texts, escape them with a backslash (like this : \, ). Every parameter needs to end with ::"fork options" with "fork options" being a number to fork to another sequence index, or a name to fork to a new dialogue. (A numeric value lesser or equal to 0 or an empty string will end the dialogue) ex: {choice:Yes::saidYes,No::saidNo} -> Selecting the "Yes" choice would make me fork to the "saidYes" dialogue.
      <choiceTextx>: Choice menu text for for choice x.
      <choiceDialoguex>: target of fork to dialogue for choosing choice x.
    • {setvalue:<variable>,<value>,[operation]}
      Set a value inside the GameVariables dictionary.
      <variable>: key of value in GameVariables Dictionary object.
      <value>: value to set variable to.
      [operation]: (optional) = Operation to do on the value (must be numeric), if omitted, value will be SET. Possible values are : + - * /.