matpow2's Forum Posts

  • A few exciting things have been going down, so here is an update:

    Subscribe to Construct videos now

    Our game Mighty Goose is releasing June 5 on Windows, Mac, Linux, Nintendo Switch, Xbox and PS4/PS5!

    So happy to be releasing this finally, and we are proud to say we made Mighty Goose entirely in Construct 3 + Chowdren.

    It could be fun to do a post-mortem about how development/production worked for a high-end game like Mighty Goose, so let us know if this would be interesting :)

    Mighty Goose is also a great example of how Chowdren's C++ codegen and shader optimizer result in excellent performance, and we can comfortably run Mighty Goose on Nintendo Switch with 60 FPS.

    Subscribe to Construct videos now

    Astral Ascent was successfully funded on Kickstarter, reaching almost 500% of its goal!

    The game is a 2D rogue-lite platformer, and will be going to Early Access on Steam in 2022.

    Astral Ascent is made in Construct 3, and we are so excited to be working with our friends at Hibernian Workshop to bring this game to PC & consoles using Chowdren.

  • Mathias from MP2 Games here! Wanted to chime in since Chowdren was mentioned :)

    MP2 partners and co-develops games with several Construct devs, where we bring in a lot of technical expertise for e.g. porting. For the devs we are working with, they are able to do amazing games exactly because they don't have to worry about porting and other technical details.

    I don't think most Construct devs would be happy with a generally available exporter for consoles. In our experience, most games will require adjustments and sometimes low-level knowledge before they will run great on consoles. If Ashley & team also had to concern themselves with support for this, I don't think Construct would be the amazing tool that it is today.

    Chowdren is also an advanced piece of software, and it has taken years of development and R&D to get to this point. Chowdren is unique in its approach where it compiles the entire Construct project (including events and scripts) to C++, and does complicated transformations like effect stack merging. If Ashley & team had to manage the same amount of complexity without limiting themselves to a feature subset, I don't think they would be able to move fast on features that users actually care about.

  • jobel For all current Chowdren projects, we use a continuous delivery/build automation system.

    This means that whenever the developer makes a change in the C2 or C3 project, our build server can compile updated builds for all platforms within a short time.

    From my perspective, this is practically a requirement when you're trying to ship a serious game on multiple platforms :)

    For some projects, we also setup automation tasks like pushing updates to a Steam branch, so the Chowdren build pipeline is fairly featureful and mature.

  • For Cyber Shadow, we use Chowdren on all platforms, so the Steam version is also using Chowdren.

    We actually do this for practically all games that ship with Chowdren!

    The C2/C3 runtimes are great, but in our case, it makes sense to use Chowdren for everything.

    This is primarily to simplify QA (a single version on all platforms), but it also allows us to tailor each version for each platform.

    For example, debuggging and fixing low-level issues (e.g. "why is this controller not working?") becomes a bit easier when you control the engine.

  • I forgot to update this thread, but Cyber Shadow was finally released on January 26th!

    Twitter link

    If you haven't already, you can grab the game on

    • Windows/Mac/Linux (Steam, GOG, Humble, Windows 10 & Game Pass)
    • Nintendo Switch
    • PS4 and PS5
    • Xbox One and Xbox Series X/S

    It's been a fun challenge to ship Cyber Shadow on all these platforms using Chowdren, so hope you enjoy!

    I believe this is also the first Construct game to make its way to next-gen consoles, so happy we could help with that milestone :)

  • Cyber Shadow finally has a release date, revealed during the recent Indie World!

    Twitter link

    The game will be releasing on a lot of platforms at launch, so this has been super exciting to finally have a date for.

    For anyone curious, amiibo support in Cyber Shadow was added by using event functions to interface with the hardware, and this is a good example of how Chowdren can be used with console-specific features.

    BBaller1337

    BrandyBuizel

    Will follow up through mail

  • We can finally announce that we're working with Blastmode Games to make a game called Mighty Goose!

    Link to tweet

    Trailer is here:

    Subscribe to Construct videos now

    Mighty Goose is designed in Construct 3, and we're bringing the game to PC/Nintendo Switch/PS4/Xbox One using Chowdren.

    We made a quick video to showcase the game on Switch here:

    Link to tweet

    Really excited about this, and thanks to Construct & team for making Mighty Goose possible!

  • Cyber Shadow (a Construct 2 game we are helping bring to consoles) was recently featured in the IDdxg@Xbox 2020 Summer Spotlight.

    Check it out below! (skip to the 4:15 mark)

    Subscribe to Construct videos now

    Also, we recently unveiled that MP2 Games is bringing Petal Crash to consoles!

    Subscribe to Construct videos now

    Petal Crash is made in Construct 3, and uses JS scripting for important aspects of the game.

    Making this work in Chowdren was very interesting, and we were able to do a mechanical translation of the JS scripts to C++.

    Some people on the Discord requested a longer writeup about this, so hopefully I'll have time for that in the future.

  • As a quick update, we recently released Iconoclasts (made in Construct) on Xbox One!

    The game was ported using Chowdren of course, and we're very happy about the result.

    Here's the launch trailer:

    Subscribe to Construct videos now

    We will have more news about other Construct projects in 2020, so we will keep you updated!

  • For most games, Chowdren is able to load all images of the game into memory on startup. For games where that's not possible, I haven't seen the "load layout/object images" being used, so for now, Chowdren has its own heuristics to determine which images to load and when.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • I've been getting a lot of questions about how to prepare a Construct project for porting.

    While a lot of porting advice applies to games in general, there are some specifics for Construct and Chowdren that might be interesting to know about!

    Compliance

    All consoles have compliance rules that you need to follow.

    Some of these are fairly straightforward to follow, such as

    • Terminology rules.
    • Rules about button icons and other platform-specific visuals.

    Others require more work or tuning, such as

    • Achievement requirements.
    • Controller/user profile requirements.
    • Audio level requirements.

    In Construct projects, if Sprite objects are used to show button icons, you could use a separate animation for each platform.

    If you use a Sprite Font to show icons in text, you could have a separate character for each button icon that you pick depending on the platform.

    Chowdren-specific note:

    Chowdren implements achievements by transforming achievement unlocks from the Steam4C2 or Greenworks plugin into platform-specific achievement unlocks.

    Gamepad inputs are translated to inputs in the Gamepad plugin.

    The controller layout is based on an Xbox controller, so you only need to make sure that your game works with an Xbox controller.

    Plugins

    Most plugins are not an issue, but there are a few things to be vary of:

    • Native plugins (the ones bundled with Construct) are used a lot more than non-native plugins. For that reason, if you use a non-native plugin, you are much more likely to hit an ACE or feature which hasn't been implemented in Chowdren yet.
    • Plugins which require online functionality are a large hassle for a few reasons, so if your game is not a multiplayer game, try to steer clear of those.

    Chowdren-specific note:

    The list of plugins that are supported (as of this post) are listed here:

    gist.github.com/matpow2/a574e81933e916f1831d41d34a9b5a86

    Plugins are implemented on a demand-driven basis, so you don't have to limit yourself to this list only.

    Memory

    Most pixelart games tend to use small images and require little memory for visuals.

    Other games with e.g. handdrawn visuals use much larger images, so to fit such images in memory, images have to be resized, switched in and out dynamically, or texture compression needs to be used.

    While the particular strategy to use is usually handled from the Chowdren-side, you can help reduce memory pressure by keeping your images as small as needed.

    Audio

    Construct supports audio effects through the Web Audio APIs, such as compression and distortion.

    Chowdren supports some of these through its audio mixer implementation, but new effects tend to take some time to implement.

    Consider applying effects offline in your DAW or by some other means.

    Effects

    For most projects, the use of effects is usually not a problem.

    However, the use of layout or layer effect stacks with many effects can be a rendering bottleneck.

    Try to achieve as much as you can using smaller effect stacks.

    Chowdren-specific note:

    Chowdren merges effect stacks together into 1 shader, and can render most effects that sample the background without an intermediate buffer.

    This reduces the overhead of shaders by a great amount.

    I've only seen 1 or 2 extreme cases where I've had to do a special implementation for a large effect stack.

    Performance

    Consoles typically have hardware which is slower than PC hardware.

    This applies to both the CPU and GPU. On some platforms, the CPU is mostly the bottleneck, while on others, both the CPU and GPU is.

    As a general guideline, if your game runs acceptably on middle to high-end phones, performance is a smaller concern.

    Chowdren-specific note:

    Chowdren compiles events to C++, and events are practically never a bottleneck.

    I haven't worked on a Construct game which had a CPU-side bottleneck on Chowdren yet.

    Also, feel free to make liberal use of functions and event variables!

    In C3, both event variables and function parameters are explicitly typed, which makes for a straighforward conversion to C++.

    Scripting

    A JavaScript scripting feature has been introduced in Construct 3.

    While this gives a lot of flexibility to developers, you may want to limit the APIs you use to a smaller subset.

    If you need to use any non-trivial DOM or ECMAScript features, it may be good to plan ahead and examine how these features would work on non-PC platforms.

    In essence, don't shy away from using scripting in C3, but make sure you understand which APIs you are using, and try to use an API subset in a consistent way throughout your project.

    Chowdren-specific note:

    We have created an experimental JavaScript to C++ compiler which we will be using for Construct 3 scripts.

    This is more than 1.45x times faster than JIT-less V8 on game-oriented benchmarks.

    While this is super exciting, I think this is a topic better suited for another post :)

    Conclusion

    I hope that gave a good overview of how to future-proof your project for porting.

    If there are other subjects you would like to see covered, please let me know!

  • Some good news: Chowdren now supports iOS! This means that Chowdren supports both iOS and Android.

    For now, iOS 9 and up is supported. On Android, API level 16 and up are supported.

    In terms of plugin/behavior/shader support on iOS/Android, the coverage should be the same as for PC/console platforms.

    For mobile platforms, most developers are probably better off with the native Construct export options. However, if your application is CPU-bound or makes heavy use of effects, Chowdren might be a good option if you also want to target console platforms.

  • Yacht Club Games made Shovel Knight, yep!

    There's a few more details here of how Yacht Club Games are involved in Cyber Shadow, so it might be worth a read:

    yachtclubgames.com/2019/03/cyber-shadow

    In any case, Cyber Shadow did well at PAX East!

    The Nintendo Switch version of the game (which uses Chowdren) was on display, as can be seen here:

    twitter.com/afillari/status/1111323549665542145

  • Cyber Shadow has been announced! It's developed by MekaSkull in C2, and published by Yacht Club Games.

    We (MP2 Games) are porting the game to Switch/XB1/PS4/PC using Chowdren, and so happy to be involved with this game :)

    I've been talking to MekaSkull about Cyber Shadow for a long time, so I'm glad we were finally able to spill the beans!

    Subscribe to Construct videos now

    The game will be playable at PAX East at the Yacht Club Games booth, so make sure to check it out!

    MP2 Games is working on other projects as well, so I hope to be able to talk more about those soon!

  • If you are not targeting multiple platforms (and probably consoles as well), then your best bet is probably the standard export options. We are working on games for mobile platforms, but most of those games have seen release on a console first.

    With that said, Chowdren should perform significantly better than the standard runtimes. Mobile platforms are constrained by memory/processing power, which also means they are constrained in terms of how much they can JIT applications. For that reason, I suspect the speedup ratio from the standard runtime to Chowdren will be higher on mobile platforms than on desktop.