GeoffB's Forum Posts

  • You've got the answer right there - use for each object.

  • My pleasure! I think it's important to highlight different approaches to game development - we're not all in a position to be indies :D

    1) They do ask about the dev platforms, but it's usually just for their own frame of reference. I have had to convince clients to accept that I'm not a "traditional" dev, but all it takes is showing them what I've built in Construct (and how quickly) to convince them that it's a viable platform. Most of my clients want browser-based and/or mobile-friendly, so Construct is perfect.

    2) I work with a software dev company that handles most of the personnel management, but I do occasionally hire directly for personal projects.

    3) This depends on the product. For the most part I work within their framework, be that an app or website. Some clients don't want to get involved in the "publishing" side of things; in that case I recommend a web-based release and handle the hosting on their behalf.

  • There are plenty of tutorials and forum posts about optimizing performance, but with 40k sprites you're going to have to do a lot to keep the game running smooth. Disable any behaviours on objects which don't need them all the time. Creating/destroying puts a fair bit of strain on the CPU, too, so look into object pooling if you're doing that often. Use render cells where possible.

    It's also worth looking into alternative ways of rendering the sprites, like with tiled backgrounds or tilemaps instead of sprites.

    More than anything, make sure that you're testing everything that you do. Set up a benchmark with a target FPS, and make adjustments based on evidence. Every project is unique, so there's no real one-size-fits-all solution.

  • It would probably be more memory-efficient to use a single sprite font object for everything, but that isn't always practical, either technically or in terms of workflow.

    But if you do want to, assign each object a local variable that acts as a unique identifier ("textID"), like "playerScore" or "currentLevel". Create a single function that is used to change the text objects as needed. Give it a parameter "textID" and then use that to pick which object to change, and set its text/colour/whatever using more parameters as needed.

    That's how I do it, at least. But I often end up needing multiple text objects regardless. As I say it's not always practical to use a single object.

  • I've been using Construct for about 8 years, the last 3 of which I've been using it full-time. I'd love to say that I have a ton of published games that generate a passive income, but that's not the case.

    I work predominately on corporate games - making games for companies to market their products. Any extra revenue is used to buy time to work on my own games.

    Here are my answers in your format:

    1: Games and apps, with the occasional website.

    2: Yes. I work with a team of artists and other devs who provide the graphics/audio/etc., and backend support I need to integrate with corporate systems (customer loyalty, tracking, rewards).

    3: I don't! That's the one really nice thing about doing corporate work - they already have the audience :)

    4: It's a range of products. I'm usually juggling at least 3 at any one time.

    5: I put in at least 40 hours a week. I'm not one for overworking myself anymore. Burnout is real!

    6: Start small and never stop networking. Build a reputation while you're building your skills. Don't over-promise, but don't hesitate to challenge yourself.

    My biggest piece of advice is to find other people who are good at the things you aren't good at. For example, I suck at business stuff, but I have some wonderful colleagues who are excellent in that field. Without them I don't think I'd be able to do this full-time.

  • The problem with dragging from the project explorer is it will always take the first instance as the "reference instance". Since Construct doesn't have a typical implementation of prefabs, you need to kind of create your own. Using a separate layout for any object's initial state is the only real way around this limitation.

    All of my projects use a layout I call "Parking Lot", which I treat as a prefab explorer. It's not ideal, but honestly it works fine once you get your head around the way Construct instantiates objects.

  • Any time you copy an object instance, it will use the same properties/values/everything as the starting point for the new instance.

    Easiest solution is to just copy a blank instance of the tilemap, rather than the populated instance from your game layout.

    I suggest you make a "prefabs" layout with no event sheet. Stick all of your objects there and just take copies from there. This gives you a central location from where all your initalised objects can be taken.

  • Ah, Thanks! I'm still trying to get my head around Spine's terminology, this is a big help :)

  • For sure, you could use the same approach to spawn tiled backgrounds or 9-patches. Set their angle however you'd like, and use raycasting to determine their length.

    I suggest you also play around with some effects to find one that fits the lighting style you want. Without seeing more of your project, it's difficult to tell exactly what logic is causing problems.

  • I'm not 100% sure what you're trying to do, but you can set the origin point of the DrawingCanvas object to be the center. Look in the properties bar with the object selected.

    As for the performance impact of pinning bullets to rotating objects, it's quite negligible. I built a quick test (https://www.dropbox.com/t/9HfkgCmcjXaYLlPN) and could get to 4500 instances before the frame rate drops below 60. Obviously this will vary based on the PC's specs, but for most games this number should be way more than needed.

    It's also worth noting that in my test, the create and destroy actions have a bigger impact on performance than the actual pinning. This may be the case for you as well, in which case you should look into object pooling.

  • Here's a quick c3p I did: dropbox.com/t/TP5La4d5jr3lhA0V

    I'm sure there are ways to improve the effect and/or performance, but this should be a good starting point.

  • Hi Mikal, thank you for your efforts in maintaining this plugin!

    I'm struggling with something which I thought would be dead simple, and I'm hoping you can help. I'm trying to pin a Construct-based sprite (or any object, really), to a Spine bone. Like putting a hat on the head bone and ensuring it matches its X, Y, and Rotation.

    Is this possible? I'm trying to avoid setting up all of the sprites within Spine itself, as I need to be able to use any object in Construct as a pinned object.

  • This is a simplified version of my implementation. Shouldn't create any dots or unwanted behaviour.

    https://www.dropbox.com/t/upPGc4k1wuHPLSUv

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Use the Browser object's Request Fullscreen action. You might have to call it as an input response.

  • I feel your frustration. My solution was to draw a circle at every "break", setting its diameter to the width of the brush.