Ribis's Recent Forum Activity

  • Hello there,

    I'm experimenting the z sort in order to make a quick isometric demo. I basically want to sort the order of each object inside a family depending on the Y.

    I have done a part of it, however, I have some problem with the logic of the events. Basically, each player has 3 sprites (player skin, weapon, cape) where weapon is on top of the player, and the cape is behind. What I want is that if the player is above another element of the family, then all the elements of the player should be on top of the other player/object, otherwise should be the opposite. This can be tricky since the cape and the weapon should sort accordingly to the parent player.

    I can sort the players, but the items do not sort well. Also, the sorting of the family doesn't work properly.

    Does anyone have any experience with isometric games? Here the file I'm trying to make it work.

    http://www.feribi.com/sort_problem.c3p

    Thanks!

  • You do not have permission to view this post

  • El Constructorr Thank you very much for your example!

    I don't quite understand the concept of the rooms (I'm seeing on the event "Join Room").

    Who keep tracks of the rooms available? Like in among us, you can make a room and then the other player can join the room. I already worked with database, and I could make a lobby using php and mysql. But does Photon has its own database/system?

    About the logic of the game, basically, when you make a multiplayer game you must send the data to tell other players where the other player x,y is. I was thinking that the plugin would handle it automatically, but I guess I was wrong.

    For instance, if you move the player using a,w,s,d, for each button you would send an input to everyone saying "playerX send A to everyone", and the other client would move the playerX to the left because if there is an event saying "on event 12" if player ID = Photon.EventData,0 then simulate platform control A.

    However, the platform behavior and the movement can change depending on the framerate of the client right? That's why sending the x,y would be better, however, sending the x,y would take much more bits to send.

    May I contact you on Discord? In this forum is not possible to send PMs for some reasons.

    Thanks again!

  • among us is not peer to peer

    you can reconnect if the host leaves in the multiplayer plugin, just make sure to store the game state on each peer, when a host disconnects, connect to a room of the same name, everyone else in the game does the same, one of the players will become host, players never lost connection to the signalling server so they preserved their multiplayer ID, assign the objects to the respective players by playerID by having the player ID stored in them. If you keep player inputs the same and keep the game loop running for everyone while this is happening they might not realise it even happened.

    bottom line is photon is easier to use but has less features, worse ping, is limited to blocking websockets traffic, 16 players per room limit, and is way more expensive at 0.05$ per both Egress and Ingress GB

    for comparaison, "high tier" infrastructure like google cloud or aws go for around 0.12$ to 0.15$ for the first few Egress TB per month (ingress is free), while more budget friendly providers like vultr or digitalocean charge 0.01$ per Egress GB (ingress is free) and keep in mind that you won't be charged for most of the bandwidth since it's peer to peer.

    nodejs exports for running multiplayer game instances headless were promised with the release of construct 3 a while ago, but might not come to fruition for a long time since scirra says that there is very low adoption of the multiplayer plugin so uh here'S a project to get you started i guess drive.google.com/file/d/1FmEtzZJt_18EVaAoL5sBFS6h69xCr1OD/view

    I have heard that among us is peer to peer. They have been having huge issue with cheater, and is well known that in peer to peer is easier to cheat since the host can change the stuff.

    Constructorr Do you have any suggestion on how to approach the multiplayer logic? How would you explain how to develop the events logic to someone who is already really familiar with Construct? I'm about to start working on a small project that would allow a player to move in a scenario and solve some puzzles. But I would need to implement the multiplayer at some point. Is it possible to start the project and then implement the multiplayer? or do you suggest to implement the multiplayer at the beggining?

    Thanks

  • sure i made this a while ago eleanorjmorel.itch.io/truthordare

    you can basically do this

    https://www.construct.net/en/make-games/manuals/construct-3/plugin-reference/multiplayer

    So basically is possible to make all the features that Amongus have using only the multiplayer plugin.

    Do you suggest any particular tutorial to develop a lobby list, a chat, and basic configuration to make sure that the multiplayer run smoothly? For example move some players around a room where they can interact with objects? like if someone turn on the a switch light, then all player would see the light turning on...etc

    I have a good amount of experience in Construct, and I developed complicate game. However, since I study networking I understand that the approach would be completely different.

    One thing that I don't clearly understand about the multiplayer factor is that, when I make a game in construct3, you make specific action that will change the state of a particular instance. I guess with the multiplayer, any changes must be sent to the peers. However, I know also that there is a latency problem. Does the plugin handles all of this? or do we have to specify any changes within the game by sending a message?

    I would like to develop a quick demo, however before starting I known that the logic behind it would be different than making a single player game.

    Thank you!

  • Jase00 Yes. Massive difference. My advice: Switch to Photon, Scirra's Multiplayer will drive you crazy sooner or later.

    Main differences:

    1. Scirra's Multiplayer is simply a Peer-to-Peer connection, where one of the peers is hosting the server. If that "host" leaves, the game basically ends! No more communication possible between peers, whereas, Photon has a Master server which is hosting the room on Cloud (not at any players' end), so if any player leaves, or even all of them leave, they can join back and continue. Game continues.
    2. Second main difference: Scirra's Multiplayer has Firewall/NAT connectivity issues. So basically, you'll be reaching out to 50% to 60% of the audience, rest won't be able to connect. (I made a really cool game, and found out, I could not connect myself when I changed my network provider). And many other players complained they cannot connect. Photon connects literally 100% of the time! Very stable and reliable.
    3. Third main difference: Photon is far easier to use, set-up, and understand (even as a complete beginner) than C3 Multiplayer. No need to "Sync" objects beforehand. Just "Connect to server" and "Connect to a Room", then start communicating/send messages/data. etc.

    The only con of Photon, the Free version allows maximum 20 simultaneous connections (players) to be connected at a time. For more CCUs, there are paid packages.

    But ! I'll tell you what, if you're getting 20 players at a time regularly in your game (that has Ads/inApps), that means you're definitely earning enough to cover for the paid package that allows 100+ simultaneous players. So that's also not really a drawback.

    AnConstructerBro Among Us style game can easily be made through Photon, but as Sebastien said, I agree, first learn C3 (non-Multiplayer games) thoroughly before jumping into making a Multiplayer game.

    I never did any test with the multiplayer. Is that true that there is no way to transfer the host to another peer using the multiplayer plugin if the host disconnect?

    AmongUs is a peer to peer multiplayer based game I believe, but I'm not sure. they use the hazel-networking. If the host leave quit, the game keep going anyway. The nice thing of having the peer to peer is that you don't have to worry about having a server and dealing with any provider (even if you would need to deal with cheater).

    Peer to peer means players can get low latencies if they play with people near them. Photon forces everyone to connect to a single physical location, and adds latency by forcing the bathwidth to pass through that server without adding any functionality. if the host leaves in photon, you still need to create a new "host" that will control the game state just like you do in construct's multiplayer.

    You can use a cheap 5$ per month VPS to act as a STUN + TURN server to get pretty much 100% connectivity and still benefit from not having to pay for most of the bandwidth whereas with photon you have to pay for all of the bandwidth and it'S expensive. Photon charges 0.05$ per GB while a cheap VPS provider like digitalocean charges 0.01$ per GB

    photon also uses the worst networking scheme possible, every single time you send data to photon, it sends it to everyone else connected to the game, so 10 people means 10 people sends data to 9 other people on every update, whereas with the multiplayer plugin, everyone sends data to the host, and the host sends data to each player, greatly reducing bandwidth required

    you can totally do this and if you need help you can get in contact with me, its not as hard as people make it out to be, you can greatly simplify multiplayer games using the sendmessage multiplayer action, and you can pack that data using the binarydata plugin

    eleanorjmorel

    Do you know any example that show how to do a lobby where a player can choose a room to join and then play? similar to AmongUs?

  • Hey friend! Thank you so much for your anser!! I apologize for answering so late. Could you explain me how I get it with global variable step by step, please? I have not made it yet. Thank you!!

    if you need to restart the level and respawn all the objects in their initial state, you have two options:

    Make a variable that keep track of the checkpoint status. For example, the ID of the checkpoint sprite. If the player touch the checkpoint, set the ID to the variable. When the player dies, make an event that on restart level, the player will be set at the ID checkpoint X,Y.

    Another way to do it, is to use the save/load as you already doing, adding the behavior "No Save" to the objects you don't want to safe. This one should work, even if I never tried it.

  • I appreciate your time Ashley, but honestly that was not helpful, nor did it answer my question.

    > For example playing Pokemon Go made my Android phone get pretty warm (and that of course was not made in Construct)

    I was never blaming Construct 3 for the device heat up, and yes I do expect some games could warm up a device. But in my case, it's literally extreme heat up within 1 minute of play. I already acknowledged the inefficiencies in my methods that's probably causing the massive heat up. Shouldn't I work towards making it better? maybe end up to heat up half as much?

    If yes, then I would appreciate a more specific response, especially from you, from the list of possibilities above (and profiler/inspector charts) on which of these could be more related to heating up, than the other.

    Unless, it is "None" of them could be related to heating up, and optimizing any of those would not help. But you didn't also mention that statement, so I am still confused if there is or not anything I should do.

    Thanks!

    Make an empty project and check if the phone warms up or it get too hot. I had the same problem years ago making a mobile game with Construct2, but now it seems that the problem is solved.

    If the phone get the same result with the empty project, it might be a "problem" with the devices that you have used for testing.

    Also, why do you use full 1080p background in a mobile phone? I'm just curious.

  • I think it's more likely that what you propose will make things worse, not better. Either the developers or the players will be likely to mis-configure the option, and then the situation is worse than it was to begin with.

    We can already publish the game with unlimited frame rate mode. I read on the forum that even someone is using it to make sure that the app run smoother in all devices.

    The phone isn't going to explode. So I don't see all these problems. When you encounter a player with diver issues there is already a bad situation. You said that the Construct3 team can't do anything about it, but you could actually do something.

    As I said, I did a test. the game was running at 25/35fps in a device (totally unplayable). I tried to use the unlimited frame rate and the game was run much smoother (50/60). Still, I have to blacklist that device because I don't want to publish my app as unlimited frame rate since my game it runs smooth in most devices.

    So, if it is an easy implementation to do it you will make just the developers happy. I also think that it would be helpful if we want to debug stuff in real time.

  • > Ashley, would you consider to allow us to switch the framerate mode in realtime?

    No, that's not a solution, it's just a hack which only raises further difficult problems, like: how do you know when to turn it on? There are thousands of different devices out there with different hardware and different software configurations. And if you get it wrong, you'll drain the device battery, which is a worse problem than you started with.

    In the devices with low performance caused by driver issue the fps are terrible making the game unplayable. Imagine someone who want to play your game, it download the game, then after some minutes you get 1 star rating complaining that more "advance" games run with no problem, so the problem must be the game, and in fact it is...Driver issue!

    As I said before, my friend with a good phone was unable to play because of the bad performance. I tried to change the framerate and the game at that point was playable and the fps were good.

    There could be several to know when you turn in:

    - In empty layout, if the fps are low change framerate mode after some seconds.

    - Allow the player to decide in the option if they want to boost the game as a lot of games do.

    Don't take my wrong, I'm not saying that the battery is not an issue, but the player must decide about it. Take for example Sky: the children of light. It completely drains out your battery, it allows you do decide the framerate and the performance. I played that game, I tried it. Even while you charge the phone the battery goes down. Is it a problem? yes. Do people still play it? Yes!

    A gamer knows already that by playing a game the battery will be suck it up. This hack will allow people with driver issue to play the game. Then, the decision is on the player if keep playing even if the battery goes down quickly, or stop playing. So, if there is a way to change the framerate mode in real time I don't understand why don't allow the developer to change it.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • For the record, since the introduction of WebGL in 2011, Construct games have rendered almost identically to native games. WebGL is basically OpenGL exposed to the web. So it's basically using the same rendering API as any other native game using OpenGL. (With WebGPU, this analogy will continue, but being more or less equivalent to the next generation Vulkan/Metal/DX12 APIs.)

    The main difference introduced by browsers is the driver blacklist. There are many poor quality drivers out there. These can crash and glitch and ruin games. This is a serious problem faced by many native engines. There is little anyone can do about it. Sadly the state of graphics drivers continues to be poor. (Hopefully the next generation APIs help with this, since they allow the drivers to be much simpler.) Browsers blacklist known bad drivers so you get software rendering instead. This means the game runs correctly, but slowly.

    So barring some kind of obscure browser bug we don't know about yet, the only explanation seems to be the graphics drivers. These are still a problem no matter which technology you use. You may find that when using some other game engine, it seems to be faster, but then you later run in to the crashes and glitches that the browser makers were trying to avoid. This can cause even worse problems, such as the game crashing or just showing a black screen on various types of Android devices.

    So while you may claim that Android performance sucks, I think really this is just driver blacklisting on a small number of devices for a good reason. It's a matter of picking your poison - do you want software rendering or the risk of crashes and glitches? I think the former is the right choice.

    Changing the framerate mode will only make this worse. It doesn't make anything faster, it only changes when frames are scheduled. Unlimited framerate mode will allow powerful devices to run up in to the hundreds, or even thousands, of frames per second, promptly drain the battery, and earn you poor reviews.

    I completely understand the frustration with the drivers. I'm so far happy with the performance of Construct3, and most of the performance issue depends on how the events and how much we push the cpu itself. Today my friend tried again the game with Adreno 618 and strangely after one month it runs 60fps with no problem. Maybe the phone did some updates and now it works as excepted.

    Ashley, would you consider to allow us to switch the framerate mode in realtime? I have actually did some test with it and I confirm that in some old devices if we enable the unlimited fps the game does run smoother (from 45 to 65 for example). So, it could be a possible solution for slower device. If we detect really low fps for too long we could switch framerate and push a little bit harder the CPU right?

    I wouldn't concern about the battery issue. There are plenty of game that drain out the battery even while you charge the phone. These would be limited only in old phone I guess

  • RibisI had a test version on google play, but google censored me for the murderer boy scene ... (now he's a 21-year-old fat guy ...)

    Lol. You can published ad internal tester so that I don't think they can't censored it until you published it. Message me at Ribis#7413 on discord, I would like to test it on my device. Also I think you need to specify the audience target at the beggining?

Ribis's avatar

Ribis

Member since 22 Oct, 2012

None one is following Ribis yet!

Trophy Case

  • 12-Year Club
  • Forum Contributor Made 100 posts in the forums
  • Regular Visitor Visited Construct.net 7 days in a row
  • RTFM Read the fabulous manual
  • Email Verified

Progress

16/44
How to earn trophies