skymen's Forum Posts

  • Chiming in on the topic of 3rd part developers taking some of that weight:

    I've been contemplating making a brand new Steam NW.js plugin around the new steamworks.js which seems to be much more actively maintained.

    My main issue right now is that I have never used the lib before and I don't have much time to learn it, and don't think I will have much time for it for at least a few months.

    That being said, if someone else has time for it, we've recently set up an Open Collective to crowdfund Free Open Source 3rd party stuff for Construct with some folks in the Construct community.

    I invite any dev that would be up for the challenge to reach out and we can set up a project for them (we've already funded one project and others are on the way)

    opencollective.com/construct-community

    That way everyone could chip in to fund the development of this new plugin and it could resolve that issue, while also avoiding long term issues that come with important addons like these being closed source and abandonned after a few years.

    On an unrelated note, I would also like to add that indeed the lack of File System access for the WebView2 export is sad. I already advocated for Tauri as an alternative to a custom export maintained by Scirra as it would make developing addons for it much easier. Tauri has the same benefits as the Cpp WebView2 export, but also has full File System access (as well as a bunch of NW.js equivalents) it also has cross platform support, and lets you write Rust which means extending the app with native stuff (like steam support and such) much easier for 3rd party devs.

    I understand that using Tauri might also come with a bunch of challenges of its own. Also Tauri suffers from the same issue Ashley's WebView2 wrapper has with Steam overlay.

  • Ah well, I don't know how easy it is to detect Proton :/

    + even if you were to detect proton that wouldn't even give you any info on wether you're running on a regular Linux machine or on Steamdeck.

    I guess we're back to trying to implement steamworks.js

    The alternative would be to do some machine profiling using CPU, GPU and screen size info to try and make an educated guess but that's not really a great idea.

  • Nevermind, run this function and it should work

    function isRunningOnSteamDeck() {
     try {
     let os = require("os");
     let info = `${os.type()} ${os.release()} ${os.platform()}`.toLowerCase();
     let list = ["valve", "steam"];
     return info.includes("linux") && list.some(x => info.includes(x));
     } catch (e) {
     return false;
     }
    }
    
    console.log(`Is running on SteamDeck? ${isRunningOnSteamDeck()? "Yes" : "No"}`);
    
  • Hey,

    Greenworks doesn't support that method. It was added in SDK v 1.52 and greenworks support stopped at 1.42.

    The best solution would be to write a new Steam addon using steamworks.js (or implement that directly)

    github.com/ceifa/steamworks.js

  • I've talked about this subject in the past and made a feature request in a past suggestion page.

    I also looked into it and tried to hack it into the engine, but from what I've seen it's pretty hard if not impossible to do with the way C3's rendering is done at the moment.

    I agree it would be really useful if this became a thing.

    Mikal and I both experimented with making pixel shaders that can repixelify a layer with linear sampling. That might be worth a try.

  • As I stated in the github report, I really think UIDs hold C3 back in many ways. I understand moving everything to UUIDs can be a big change, especially for backwards compatibility, but the alternative is trying to do a band aid fix that will not work.

    I full agree with Tokinsom here, UID shuffling makes C3 unusable with source control nowadays, which is a huge issue.

    For backwards compatibility, UIDs can stay, and UID shuffling can also be kept for a while, but instances should start getting referenced using UUIDs or SIDs (like object types and other editor elements), especially internally.

  • You do not have permission to view this post

  • That code uses undocumented internals of the runtime. Do not do that! It can and will break at any time and we will not provide any support either.

    Oh yeah for sure forgot to specify. I just assumed that was a given, forgot we were in a big thread with many people that check in while not necessarily being aware of that.

  • While I agree with the fact that it should probably be added as an action, if you need this for any reason, know that it's fairly easy to do in JS.

    let templatePerObjectClassMap = c3_runtimeInterface._localRuntime._templateManager._templateDataMap;
    for (let templatePerObjectClass of templatePerObjectClassMap.entries()) {
     let typeIndex = templatePerObjectClass[0];
     let objectClass = c3_runtimeInterface._localRuntime._allObjectClasses[typeIndex];
     let templateMap = templatePerObjectClass[1];
     for (let template of templateMap.entries()) {
     let name = template[0];
     let data = template[1];
     }
    }
    

    if you know the object you wanna check (which you most likely do) you can get its object class using

    	let myObjectClass = c3_runtimeInterface._localRuntime.GetInstanceByUID(uid)._objectType
    

    you can now check if the template name exists by doing something like

    function templateNameExists (objectClass, name) {
     let templatePerObjectClassMap = c3_runtimeInterface._localRuntime._templateManager._templateDataMap;
     return templatePerObjectClassMap.has(objectClass.GetIndex()) && templatePerObjectClassMap.get(objectClass.GetIndex()).has(name)
    }
    
  • You could use both effects. The first one to force the render to be limited to a specific amount of colors and the second one to replace said colors with whatever you want.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Yes, as I thought, the plugins have not been ported in a while. You can try contacting the author.

    One thing you can do in the meantime is disable worker mode in the project settings. These plugins should work fine if the game doesn't run inside a worker.

  • Hi, can you show the error?

    If the screen goes black, it might be because the addon was not updated to support modules, or to support worker mode.

    For Firebase plugins, there are new ones that were made and are still actively maintained by other members of the community, so I recommend you check them out

  • Reuploaded chrisbrob's effect for C2

    mega.nz/folder/E1910ACD

  • There's an ancient example in the tuts section, and I believe skymen was working on something using mesh which would be fun to try.

    If you mean to talk about the thing I shared on discord, it's basically a system that I ripped off Salman's Top down template: github.com/SalmanShhh/Public-Construct-PatreonRewards/releases/tag/2

    And then I slapped meshes in there cause the one thing I didn't like about his camera system was that every zone was a square