cjbruce's Forum Posts

  • I'm in the same situation. I'm way more comfortable in Construct than I am in Unity, and have been using C3 to prototype ideas and layouts, which I can share with my team easily via the web. The game itself is being built in Unity3D, but a lot of time it is easy to visualize and demonstrate how ideas would work in a top-down 2D view. C3 is great for this purpose.

  • I feel doing anything UI related in Construct has always been quite a hassle. I would love to have a new type of group node, where every object inside automatically is translated with that group. Kind of how Container "SHOULD" work, in my opinion. Now you have to use pin, and other workarounds if you want to move/scale/rotate multiple connected objects in realtime, and quite often you wanna do that with UI elements and popups etc.

    I completely agree. Most of the things I build with C2/C3 are not games, and popups have always been a pain. Both suggestions here (parented views and stopping bubbling) would have been very helpful on many projects.

  • I switched over from GameSalad to C2 in 2014 and haven't looked back. There were a few reasons for me why C2 was a better fit, but the two biggest ones were:

    1. I am a teacher, and I needed a way to create something for my students and publish it in a few hours instead of a few weeks. HTML5 is perfect for this. I also have the option to publish to the app store as well, but I don't do this often, as HTML5 is better for my target audience.

    2. Construct 2 was significantly more capable and feature-complete than GameSalad. I don't know if this is still the case. Since C2 is designed around web technologies, it was easy for me to integrate with a server backend and get appa talking to each other.

  • cjbruce

    These are all implemented, except for a very few, like

    getServerTime() (there was a reason I did not implement it, can't remember)

    editProfile() -> this one is controller exclusive

    onEmailAddress -> this one is controller exclusive

    requestEmailAddress -> this one is controller exclusive

    onDeviceMotion -> this one is controller exclusive

    vibrate -> useless, send a vibrate message and implement html vibrate on your controller. It is controller exclusive

    setOrientation -> this one is controller exclusive, used at instanciation

    showDefaultUI -> this one is controller exclusive

    Constants are not to be implemented in Construct

    Nice! Of the remaining ones, I think setOrientation() is the only one that is absolutely necessary to make a game. Without this, controllers are stuck in portrait mode, which is really awkward for many games.

    I'm not sure about editProfile(). I suppose it would be up to AirConsole if they want to require it.

    I'm also not sure about onDeviceMotion(). I got some weird results trying to do this in C2. It seemed like AirConsole was overriding the C2 behavior, and making accelerometer controls not work at all for iOS. I suppose it is best to not implement onDeviceMotion(), and try to get accelerometer controls working entirely with Construct.

  • > So I should add the few controller reserved functions to the plugin as well I guess?

    >

    I would say that we don't need/want the ability to add html elements, but I would need to take a look at the rest of the controller API to see what else is missing. I can't remember what was there off the top of my head, as I haven't look at the API since last fall. Things like getNickname and getDeviceId would be good though.

    Ahh. Back at the computer now. I'm having a look through the AirConsole API, and I see the following things that a controller might use. I tried to go through your code to determine what remains to be implemented, and I apologize if you included something already that is in this list:

    Members

    (static, constant) ORIENTATION_LANDSCAPE :string

    The landscape orientation.

    Type:

    string

    Source:

    airconsole-api/airconsole-1.7.0.js, line 78

    (static, constant) ORIENTATION_PORTRAIT :string

    The portrait orientation.

    Type:

    string

    Source:

    airconsole-api/airconsole-1.7.0.js, line 72

    (static, constant) SCREEN :number

    The device ID of the game screen.

    Type:

    number

    Source:

    airconsole-api/airconsole-1.7.0.js, line 66

    Methods:

    getDeviceId()

    editProfile()

    getCustomDeviceState(device_id)

    getPremium()

    getServerTime()

    isUserLoggedIn(device_id)

    onActivePlayersChange(player_number)

    onDeviceMotion(data) *** - This one wasn't in X3M's version, but is necessary for accelerometer controls

    onDeviceStateChange(device_id, user_data)

    onEmailAddress(email_address)

    onHighScores(high_scores)

    onPremium(device_id)

    requestEmailAddress()

    setCustomDeviceState(data)

    setOrientation(orientation)

    showAd()

    showDefaultUI(visible)

    storeHighScore(level_name, level_version, score, uid, data, score_string)

    vibrate(time)

  • So I should add the few controller reserved functions to the plugin as well I guess?

    I would say that we don't need/want the ability to add html elements, but I would need to take a look at the rest of the controller API to see what else is missing. I can't remember what was there off the top of my head, as I haven't look at the API since last fall. Things like getNickname and getDeviceId would be good though.

  • How can I upload the games without an index.html file? Every place I try to upload it asks for a index.

    Are you referring to AirConsole games, or games in general?

    AirConsole games are special, and much more complicated to set up. This thread is specifically for AirConsole controllers.

    If you want to post a non-AirConsole game to a regular website, you can pretty much disregard everything in this thread.

  • cjbruce

    Ok, added a "Is controller" property, a condition and an expression for it. Also fixed the max players property. Let me know if that's not what you wanted

    This is fantastic!

    Basically, I am looking to replace the AirConsoleController plugin created by X3M with something officially supported. Having the ability to create a controller in Construct is a game-changer, as it allows you to split gameplay over multiple screens. No more simple HTML elements -- now you can throw AI and pathfinding on the phone as well. Things are especially interesting now that iOS 11 supports webRTC, as latency should drop to <16 ms, allowing truly synchronized local multiplayer on all devices (not just Android).

    Unity webGL doesn't officially support mobile webGL, so as far as I am concerned, this is a big capability that Construct has that Unity does not. Combine that with the fact that Construct does HTML5 natively, and it is now a superior platform for AirConsole development.

    The only thing missing now is a good 3D plugin for Construct 3. Until that happens, I anticipate building the screen.html in Unity3D and the controller.html in Construct.

    I will try the new plugin as soon as I can.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • You officially rock!

    Is there any chance that you could add a "isController" property so that we could use it for controllers as well? Isn't the API pretty similar between the two?

    I would be willing to contribute half of my Airconsole earnings (about $20) - the rest is reserved for

  • cjbruce

    Thank you for your kind words. As a good news, I'll build the C3 plugin in the coming weeks

    You are welcome!

    I'm looking forward to the C3 plugin -- thank you thank you!

  • Treason !

    Actually, I'm probably going to get a Developer cert.

    Unity has its strengths and weaknesses. I am really missing the Q3D cylinder collider in Unity right now, but I need the Unity collaboration features, decals, and particle systems, and I'm looking forward to finally exporting to Apple TV. I would still rather work in Construct though.

    I am much faster with Construct.

  • I just bought this plugin set to develop an educational project (virtual history-themed museum) and I am in need of some assistance, especially when it comes to creating and loading textured models that will actually view. I had some luck with the built-in primives but the models I create in Blender (exported to .obj or .json) don't seem to work.

    I am on a small budget so I could pay a little for it, anyone interested?

    Hayo

    I worked with Q3D for about six months and released a game with it. There are a couple of gotchas when working with Blender to import models:

    1. Make sure you are using the three.js R71 exporter. Later versions of three.js made some breaking changes.

    2. Make sure you are calling at least one of your diffuse map textures "DiffuseMap" in the animation editor in Construct 2.

    Also, in case you haven't already, read all the way through the excellent Q3D manual: https://www.dropbox.com/s/vpn0mbh4m7lo9zj/Q3D%20Users%20Manual%20V2-4_2.docx?dl=0

    I will be here off an on, as I am currently working with Unity on a bigger project. I still love working with Construct and Q3D, so I will try to check here periodically if you have questions.

    PS - fuego96 is a genius. Be sure to bug him too.

    PPS - QuaziGNRLnose is also a genius.

  • They have no issues with splash screens. All of my C2-built apps have them.

  • Browser.ExecJS() should do the trick from within C3. Add the Browser object to the game first, then you will have access to anything you want to do in javascript.

    Edit: There is a browser.alert built in as well.

  • Thats why its good to develop on a slow machine.

    +1 to this. I always try to get my hands on a slower mac, a slower PC, an old iPhone, an old Android device, and an old Chromebook for development and testing. My target audience is never gaming PCs with dedicated GPUs, so it doesn't make sense for me to develop on one. This approach has saved my bacon a bunch of times because I have caught platform-specific performance issues before releasing to the public.