dop2000's Forum Posts

  • Saving on every tick is an overkill. Even with Local Storage this may cause lags on some devices. Also, the game may run at 240 fps, why would you need to save 240 times per second?

    I suggest saving maybe once ever 3 seconds or so, this should be more than enough. And instead of saving positions of all blocks just re-generate them randomly when the game is resumed.

  • If you choose templates, they definitely need to be in the same project, on another layout.

    A template can consist of several objects combined into a hierarchy. Unfortunately, Tilemaps can't be added to hierarchies. Please vote for this idea:

    construct23.ideas.aha.io/ideas/C23-I-79

    So you will have to create two templates for each room. One template with a tilemap, and a second template with a hierarchy containing all other objects from that room - enemies, loot etc.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • You can also start "Attack" animation in the same event where you set ParalizeEnemy to true.

  • I don't understand your question at all.

  • In your first post you mentioned you want to use videos for an idle NPC which doesn't move much. I would definitely not recommend this for the main character, especially modular and with so many different animations.

    I feel C3 may not be the right engine for this kind of game.

  • Yes, you can load each tile from an array, but it will be much easier to load the entire tilemap.

    Manually create rooms in a separate project (let's call it Level Editor), and export each room tilemap to a string using Tilemap.TilesJSON expression.

    Then in your main game you can quickly restore the entire room from a JSON string using "Tilemap Load" action.

    You can store these tilemap strings in a dictionary, array or text files, it's up to you.

    .

    Another option is to use templates. Simply create all room templates on a separate layout. And in runtime spawn a room by its template name. For example:

    Create RoomTilemap from template "big_boss_room"

  • Event #2 on your screenshot runs on every tick while Is ParaliseEnemy condition is true. And you tell the animation to play from the beginning. That's why it's constantly restarting and you only see the first frame.

    You need to add another condition to this event:

    Enemy "attack" animation is NOT playing

  • I suggest using tilemaps for rooms. They can be invisible and used for collisions only, or you can use the to actually display walls and doors.

    I have a paid template where a level is generated from random rooms. It's a different method - the dungeon layout is pre-defined (rooms and exits don't change). But each room design is picked randomly. The room may consist of a tilemap, sprites and other objects.

    construct.net/en/game-assets/game-templates/random-level-generator-883

  • I've seen a project with hundreds of webm videos. I'm not sure if it's a good idea to use it for a character, but you can definitely have videos for background animations like sky, grass etc.

    I don't know if it's possible to quickly load another videos in order to use them as animations. You can preload multiple videos in multiple instances of Video object and keep them hidden or off-screen. When you need to change the character animation, hide the current video and un-hide another.

  • In runtime - don't add events that change the object height. If using hierarchies, disable "height" checkbox.

    In the editor - just be careful I guess :)

  • yavilink You can use a grid (tilemap) if it makes things easier for you. And there are many behaviors which you can use to move objects on a grid:

    TileMovement to move from tile to tile

    MoveTo - perhaps preferable in your case

    Tween

    Pathfinding

    etc.

  • This is not an easy task.. I have done similar thing using JSON and probability tables.

    You can create a JSON with all upgrade options and their weights/chances (in percents), for example:

    {"Prizes": [
     {
     "prize": "coins",
     "amount": 50,
     "chance": 5
     },
     {
     "prize": "coins",
     "amount": 100,
     "chance": 2
     },
     {
     "prize": "health",
     "amount": 10,
     "chance": 3
     },
     {
     "prize": "health",
     "amount": 15,
     "chance": 1
     },
     {
     "prize": "attack",
     "amount": 1,
     "chance": 7
     },
     {
     "prize": "attack",
     "amount": 2,
     "chance": 3.5
     }
    ]}
    

    So the chances to pick 50 coins as a possible prize is 5%, the chances to pick 10 health is 3% and so on. (Ideally all chances should add up to 100%, but not necessary)

    Then you create a probability table - feed all these items and their weights to the Advanced Random plugin:

    + JSON: For each entry in "Prizes"
    -> AdvancedRandom: Add entry JSON.CurrentKey with weight JSON.Get(".chance")
    

    After that you can pick three random values. They will be weighted, i.e. their chances to be picked will be based on the percentage you specified in JSON.

    | Local string randomPrize1‎ = 
    | Local string randomPrize2‎ = 
    | Local string randomPrize3‎ = 
    
    -> System: Set randomPrize1 to AdvancedRandom.Weighted
    -> System: Set randomPrize2 to AdvancedRandom.Weighted
    -> System: Set randomPrize3 to AdvancedRandom.Weighted
    

    At this point three variables will contain three random indices from JSON.

    You can access each prize in JSON, for example:

    PrizeText set text to JSON.Get("Prizes." & randomPrize1 & ".prize")
    AmountText set text to JSON.Get("Prizes." & randomPrize1 & ".amount")
    

    And based on that decide which variable to increase - gold, health or attack.

    .

    You can use an array to store all those options. I just find JSON easier to work with.

  • I suggest using Bullet behavior instead of MoveTo. With bullet you don't have to worry about the destination, you just specify the speed and moving angle.

    Make sure to disable "Set angle" in Bullet properties.

    You can also add "Destroy outside of layout" behavior, or use Fade behavior with long timeout to automatically destroy meteors when they are no longer needed.

  • Do you mean resizing in the editor? Or in runtime?

  • Instead of the container use hierarchy. Connect all objects to a hierarchy in the layout editor. Create the parent object and all child objects will be created automatically.