EberKain's Forum Posts

  • Is there a bog standard plugin or method for doing this? The best suggestion I have had was to load a website contact form in an iframe and use that. I would like to have something a little more elegant, like a cloud based bug/ticket system where any user can submit reports from in-game without having to log-in or give personal info. I ran across Instabug and that sounds like what I am looking for, but I can't find anything about C3 support.

  • The artwork is really great.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Subscribe to Construct videos now

    New update video after much fighting with my audio interface.

    I made one more tweak to the optical reveal since my last post. The change from one opacity to the next in the tilemap is tracked with an instance variable timer. Instead of resetting the timer every time it elapsed to some new "time + 0.25" value, I just added a flat chunk of time like "self + 0.25", this keeps every triangle's opacity in sync even through the updates are distributed out and happening at different times.

  • Trying to address performance concerns I added a debug fader sprite that pops each time a new tile is revealed, the content of the tilemaps is calculated on the fly. This helped my find a fix a bug that was bogging down the game in some situations.

    GIF

    The way the world reveal works is I calculate the triangle area for what you can see and save it as a list of coordinates, and then just brute force the update. The update routine runs 10x per second and cycles through every coordinate in every active list every update. I sort them so I do the brightest colors last, so it overwrites the darker colors, but this is really inefficient when I get lots of overlapping areas that are all revealed and causes a big spike of CPU usage every time the update runs.

    I wanted to see if I could do more to make it run better. So I created a new list that holds a list of the coordinate lists and I change the update routine to run at 60fps, but only update 1 triangle on the list each time. So now I slowly cycle through the list and that smooths out the processor usage.

    GIF

    That caused other problems with overlapping triangles. I ended up using a dictionary to store keys for the X&"|"&Y coords of every tile when it gets updated, so I could see if that tile had already been set this cycle if it is in more than one coordinate list. Each cycle clears out the dictionary contents and I then sorted the list of lists to update the brightest ones first and it all works.

    GIF

  • Thanks for checking it out. There is a lot to unpack in what I've got setup so far. Going to take a couple more videos to explain everything.

  • I finally finished all the different science tools that I had planned at the start so I made a video going over it all. Turned out to be a lot harder to make a video than I thought. My respect level for youtubers that push out constant content has jumped way up.

    Subscribe to Construct videos now

    The world is done with several layers of tilemaps like this.

    The probe vehicle is done with a bunch of different sprites pinned together at 99% opacity and pixelate 3 effect.

  • Magistross Thank you for turning me onto the eval function. I did some looking and the CSV plugin by rex has an eval mode that uses that function. So, I think I can do a string replace as you suggest, assign the result to a cell in the CSV object and read it back out to get the evaluated version. I was planning on using the CSV plugin anyhow to manage an item database in game.

  • Yeah, that is likely where I'm going to have to go with this. Was hoping for an existing plugin or some way to do it in the editor.

  • Thinking down the road for what I want to do with my game, I will need to implement a way to take a string like this

    "(x+y)*0.3"

    and turn it into an actual expression that pulls data from local variables. In regular code I would create a custom list data structure that had an operator and two links. Turn the string into a linked list. Then use a recursive function that would traverse the list and if a node links were only numbers then process that node.

    Any suggestions on how to do something like this in C2? I don't even see a way to parse the string.

  • I was under the impression that the pathfinding grid would only take the solids in the same layer into account. It would make sense from the way the manual is written that the pathfinding object takes all solids when building the grid. That will complicate things. I need the ability to have seperate pathfinding grids. Think about the different floors of a house, each can have people moving around, each with different object arrangements.

    I suppose I could create a different object with the pathfinding behavior for each floor, and give each slightly different pathfinding values so they are tracked separately. The pathing is based on a tilemap, so I could just add the tilemap for each floor as the obstacle for that floors pathfinding behavior. Add each object to the character container and pin the character to it, then just call the object that matches the floor the character is on to move the character with pathfinding specific to that floor. It should work, but will make adding single objects more complicated since there is no action to remove a specific obstacle, I guess I could keep a list of every obstacle for each floor and if one is removed, remove it from the list, wipe the pathfinding obstacles and readd them all on the list. Should be able to get away with only rebuilding the area of the grid that was effected. If its alot of objects then the removing action could start to get expensive.

  • The pathfinding page makes no mention of how the Pathfinding behavior handles multiple layers. Does it keep a separate grid for each layer of the game?

    If I add two instances of an object with the behavior to different layers with different obstacles, how will they behave?

  • I'm using an array object to hold all the data about how the objects in my game act. Instead of entering the data into the array inside the code I would like to work out a way to go from a google spreadsheet to a file that I can load with the AJAX object, and then load into the array object. I know it sounds like alot, but for the number of different object types I plan to have, I would much rather have the object data setup in a spreadsheet to make it easier to work with.

    My intention is to deploy as a desktop application using NW.js

  • Thanks for sharing, I am definitely going to use a couple things in the game I'm working on.

  • I swear I tried that this morning, I could get those options for the collision polygon, but not for the origin point.

    It took me the week to get all the animations imported, layered and synced up. Right now they have the default origin point on everything.

    I had an idea though, instead of changing the animations, I think I'll add a new empty sprite to the character container and attach the pathfinding to that, then pin the rest of the character layers to the new sprite, but offset the pin point. Should have the same effect as moving the origin of all the artwork, without having to move the origin.

  • As a test I tried setting my min zoom to 0.00001 and it lets me zoom out to the point where I can't even see my game anymore. When I zoom back in its fine.