lennaert's Forum Posts

  • > Perhaps have those Russian developers here post themselves with their findings, that would support their cause a lot better I suppose.

    >

    The most part of russian developers does not know english language, that is why I was chosen to speak from our community.

    But if you want, I can create the same topic on http://c2community.ru/ and you will be able to read that topic.

    If you don't know russian, you may use google translate.

    You could grab their posts with that information, translate it for us, and post it here for others to read too ?

  • Okay, let's forget about 100 players/room. Let's have 10. Is there a reliable way to make sure that the host has good enough Internet connection? Maybe switch hosts if the current one is having difficulties... I still think consistent connection quality is important.

    You can aid in narrowing down problematic connections.

    For instance, before entering a lobby to select a game to join, perhaps have the users select a world region first.

    Like Europe, Asia, North America etc ...

    Making players join games with players in their region of the world, or even country if you take it one step further.

    The thing is, each peer, whether its the host or a peer, as soon as something is happening that is interfering with their connection a lot, you can get lag. Ofc when this happens to a host it could effect all peers ... but the concept is the same for that user.

    He or she would be experiencing lag issues.

    The best way is to design your communication mechanics smart.

    Synch as few objects and variables as possible and use a messages for commands etc.

    The less bandwith/communication is required, the better it could obviously perform.

    A great thing about the scirra multiplayer, would a host drop out ... making another peer become host is very easy.

    You could even event some checks during a round, checking latencies, and if the hosts is far worse then one of the peers, make that peer the host.

  • Perhaps have those Russian developers here post themselves with their findings, that would support their cause a lot better I suppose.

  • Yes ... search the forum ... I believe there are some free around, and some nice ones for sale in the scirra store.

  • You're very welcome

    I have made various methods for entering and leaving rooms.

    One of the more controlling approaches is to simply loop through the peer list on the host, which determines their states as well, and based on that list create objects.

    Another loop runs those object, checking if that peer still exists.

    This gives you full control of who is in or not in a room and what to do with their objects.

  • True true, but you could ofc just have it invisible by default, and that after some ping pong like events, the players gets activated and is brought into play ?

    Construct 2 games often have a base object, on which another sprite is pinned with player animations.

    If the base gets synced, you could simply not create the extra objects.

  • With what ?

    you have asked a question ... it was answered, you mention a flaw and a solution to it ....

    So .. what kind of help are you expecting ?

  • Gradius

    A common work around when entering a new layout, is to have a dialogue with the level name and some details, with a little "Ok" button below it, required to touch.

  • Anyway few people seem to understand the hardware issues involved here, so I guess we will face continuing calls for native exporters to fix hardware limitations :->

    You could try and make an example ....

    But then again ... you would throw all your skills into the mix ... which would get you a decent performing game ...undermining the thing you are attempting to achieve

    Seriously though, a good example .... could potentially quench all following questions relating to desires for a native exporter ...

    I think the time spent on making an example would be far less then the time already spent on answering similar questions ... not to mention those not yet asked

  • Yes .. but you have to 'event' it ... not so much disable it ...

    For instance, a peer wanting to join has a global variable: playing default 0

    When wanting to know the latency, and joining room for it ... leave the playing at 0.

    Peer joins a host

    Host:

    On peer connected, send message, check playing.

    Peer receives messages, and replies: 0

    Host sees the 0 ... and does not create the needed objects.

    Would the host receive 1, (perhaps set in the lobby when a peer selects to join a game instead of wanting to check latency)

    The host would then create the required objects for the peer.

  • > I think you are asking for solutions to problems that you wont have. You do not need to open 2,000 browser tabs. If a room is full or not found, that player becomes the host of a new room. The players are the hosts, not you.

    >

    Yes, but if I want to make sure that connection quality is good and consistent, especially with 100 players/room, I need dedicated hosting.

    It would mean that ALL connections run through the server .... and its bandwidth usage ....

    You would require a hosting service with unlimited bandwidth usage.

    Also .... max web RTC connections per browser is 256, that is for a single browser instance. So that browser is only able to connect with max 256 players in 1 room at any given time.

    That would mean for each 256 users connected to a single room ... you would require another browser instance with its own opened WebSocket.

    Each websocket you open will weigh down on performance of the server.

    Also, if you manage to get a game running with 256 peers connected ... without problems ... well, I would praise you a lot

    The C2 multiplayer hosting scenario based on a peer being the host is actually quite intuitive ...and eliminates tons of server connection problems relating to high volume usage.

  • You are syncing wayyyyyyy to many objects ....

    Just imagine that each of those objects their instances tries to update their info at least 10 times a second ..... (some up to 30)

    The inputs should be reduced to 1, using the getbit/setbit methods. (you can set 8 1's or 0's in a single synced var, see it as 8 booleans)

    The player objects should just 1 for its position and the rest of the items should be created based on who has connected.

    All other info should be transmitted via messages. (1 time action instead of continuously updating)

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • When you open your preview in chrome, hit CTRL + Shift + N for an incognito browser and navigate to your preview address.

    This second incognito instance will act and behave like a separate browser entity, not mixing up the connections or overwriting local storage data.

  • > heh ... with associated objects, when you leave .. your objects get destroyed in those rooms.

    >

    > but euhm, This latency ... isn't this rather the host latency ? and the signalling server would never be able to predict this seeing as its location is not yours ?

    >

    > Your method of workaround actually sounds decent, seeing as you would get the latency between you and the host of each room.

    >

    > Downside is that during this action you would effect each games host and peers their performance for a few seconds as your stuff gets created and destroyed.

    >

    The main problem of the Sync Object while using this method of workaround is that the peer may not be in the same layout as the actual game layout, this usualy cause unexpected bugs when the multiplayer engine tries to sync objects for players in different layouts. (e.g. host is playing a match in the layout "game" and the peer is checking the latency in the layout "lobby", the engine will try to sync objects and associate objects in the wrong layout). Also this method can't check latency of full rooms and locked rooms because you can't join those rooms.

    This expression should return the latency between the host (of each room) and the peer that calls the expression and not the latency between host and signaling server.

    - Player calls request room list

    - On room list triggers

    - A For loop feeds an array with listroomname, listroompeercount, listroommaxpeercount, listroomstatus and listroomlatency (For each loopindex)

    - When this multiplayer.listroomlatency(loopindex) is called a generic message should be sent to the signaling server,

    - signaling server should send it to the target host (current index),

    - target host send it back to the signaling server

    - signaling server send it back to the caller of the expression containing the average time (in ms) that the message took to reach the host and return.

    I meant the connection between the host and the peer wanting to know the latency.

    To get the latency, you would actually have to transmit some data back and forth resembling the game data in order to get a decent estimate about latency between the peer wanting to know the latency and the host hosting the game.

    To overcome the obstacle of on which layout is what ... simply add some checks for on which layout it resides. There is an expression LayoutName, which returns the current layout name.

    LayoutName <> "lobby" should prevent it from checking while it is in the lobby

  • >

    > >

    > > but your c2 is a great software it can make billions you just not so serious about it

    > > so i suggest you hire people and programmers to develop it and spend some money

    > > i will promise you will get so much more then now

    > >

    >

    > A business is not that simple. Scirra aimed for a gap on the market and made a very good software to fill it up: HTML5 game creation environment with visual programming. In my opinion it's fine to give suggestions for Scirra to let them see what the community wants, but at the end it's up to their will and opportunities how they manage their business.

    > es 2 years ago yes there was a gap 2d html5 was a gap but

    unity have 2d and html5 now

    and there are other engines too so it's time to change

    And why are you the one to decide that change is required ?

    The other tools generally suck at their potential with rapid development, where as Construct still tops it all ...

    Why is it not time for you to switch to unity ? seeing as you are quite enthusiastic about it