Game Maker Studio - networking

Does Game Maker have the capability to do multiplayer in the form of many different rooms. I'm trying to create an online Arena style gladiator type game, and I can't have an obscene amount of characters in one arena, so I need many different rooms, created upon need. Can I have different rooms functioning at the same time in game maker, or so I need to cycle thru them to accomplish everything? The game will be turn based, and will be one where you'd log on to take your action, similar to how Frozen Synapse can be run over an extended length of time. Does anyone have any ideas of how to accomplish this or something similar?

Yes you can have multiple rooms funtioning at the same time. I haven't worked much with GameMaker multiplayer, but it is possible since you can do all basic networking stuff.
How hard it is depends on how you want the game to work: Peer to peer or with a host-server.
You an take a look at this tutorial about servers and clients if you haven't already: https://help.yoyogames.com/hc/en-us/articles/216754698-Networking-Overview

If you're using a gamemaker server, short answer is no.
However, if you'd like to use a dedicated server, you can make it possible, because then the server hosts and stores all game information, and the client (players) only render the information that is important to them.
Gamemaker Studio can not by its own run two rooms at the same time naturally, so if you'd like to create something more complex, it's the safest to create a dedicated server elsewhere.
Dedicated servers only transact information, but the game renders from the client.

Related

Bidirectional communication between R and Microsoft Teams - any ideas?

I am working on a small project trying to control some steps of a workflow in a web application using MS teams. My idea is to use R as an intermediate step between the application (which has a number of API endpoints I can call from R) and Microsoft Teams chats (or channels). Users would then use a set of keywords in the chat to lead to an action in the application. For example they might use "publish ABC-123" in a specific chat and this would lead to the application publishing document ABC-123 somewhere via R which would orchestrate everything.
I have a couple of ideas but there are drawbacks:
I thought originally about using microsoft365r. We have an app registered in Microsoft 365 which would allow us to monitor a specific chat for messages that trigger actions in R. The problem with this approach is that we would need to have the R code running and checking MS Teams every couple of minutes. It is certainly doable, but not very elegant.
Another option could be setting up a plumber API and an outgoing webhook in MS Teams. This seems like the ideal way to do it, but webhooks in MS Teams require https and as far as I understand this is not straightforward to implement in plumber.
I would appreciate any ideas on how to do this. I know I am not very specific, but mostly looking for high level pointers of what I could look at. Many thanks!
You actually have a bunch of options for this:
Create a bot directly in code, e.g. per https://learn.microsoft.com/en-us/microsoftteams/platform/bots/what-are-bots . There's a bit of a learning curve of course, and it depends on whether you have development skills outside of r, e.g. python, .net, whatever. The bot would then call your code as needed.
Create a no-code bot using Power Virtual Agents. This is the equivalent, for bots, of Power Apps or Power Automate, if you're familiar with those.
Create a workflow, either in Power Automate or Azure Logic Apps, that can listen for and respond to messages. This is kind of similar to a bot, but with finer scope (and therefore less capability). If you want it to call out to your app, e.g. to an endpoint, you'd need a Premium Connecter for Power Automate, or you can use an Azure Logic App directly (uses the same engine, but the pricing model is different for these and Power Automate is a little easier to work with.
Outgoing webhook - you can implement these as standalone, but actually from your use case it sounds like a bot would be better anyway, and it's kind of what you need to build to make this kind of webhook work properly anyway.

Google Cloud - Communicating between instances

I am in the process of delivering a product.
What my product needs to do is spin up and down multiple instances on google cloud.
Basically, I have a main instance which I plan to control the rest of them. A 'worker factory' if you will.
What would be a good way to communicate results from the workers back to the main instance.
The actually worker already inserts its results to a sql table also hosted by google, before spinning down.
However I am looking to additionally send off a log file to the main instance.
What would be the best way of doing this?
p.s - I am not extremely familiar with networking, however I am looking to learn
There are likely many ways to achieve your goal. One thought is to use Publish/Subscribe. In this concept, you create a resource called a topic and your main instance would register a subscription to the topic. Now, when your workers wish to transmit information they would executed a publish on the topic. There is no networking knowledge needed to make this all work. The topic becomes a centralized drop-off for information published.
Here are the docs on pub/sub: https://cloud.google.com/pubsub/docs/

Using waze functions with an external app

I'd like to know if it is possibile using waze's API about the community like danger points for an external app and integrated them with some our features.
I'm afraid Waze has strict rules concerning to who they expose the reports sent in by users. They provide a feed of reports for specific areas through the Waze Connected Citizens Program (CCP), but this program is generally only available for governmental institutions or road authorities. Generally the program also expects a dataflow towards Waze (road closures, for example).
That said, I don't work for Waze and I don't know all the details of the app you are working on. Depending on the type of app you are talking about, they may like to collaborate. You could always try to apply as a CCP partner and perhaps they may make an exception. Just be aware that while Waze has a lot of users, it is actually not a very big company so support queries may take a while to get a reply.
Note that it is technically possible to scrape the information from the Waze Live Map, but I'd strongly advice against doing that without permission as it could lead to legal actions.

Firebase for multiplayer games - verify data that is sent to the database

I'm starting to learn about google's firebase, seems really cool for real time applications. The auto-synced database seems very easy to use and I feel like diving into it.. I plan to start learning by building a simple checkers multiplayer game, but I still have an important question about it..
Firebase auto-syncs between users and devices using their 'magic' Database, which stores data and sends out to 'subscribers' of that db. Now what if I want to have some server processing of this data in between? For example, when a player makes a move, I want something that is not on client-side to make sure that is a valid move.. what would be the architecture to accomplish that?
Having a trusted process that sits between the users is a common scenario when using Firebase. Have a look at our classic blog post Where does Firebase fit in your app?, it would fit closest to pattern 2 there.
Typically you'll want to use the firebase-queue for this. Your users write their "requests" (probably moves in your case) into the queue, the server processes those and updates the actual board.
Another great thing about this is that it's easy to secure. The users can only write to the queue, while the server is the only one that can read the queue and update the board. A lot simpler to capture in security rules than many other approaches.

Server Storing Variables For Each Client

I have recently began working with multiplayer games in Unity. I am not using Photon Unity Networking but rather the built in networking inside Unity.
In the game I am trying to create, each player has their own money, and inventory variables. My original plan was to store these variable client-side, but I realized this was a bad idea.
What would be the best way to store these variable like money and inventory on the server? I tried making a "Player" class on the server, and created an instance of the class for every player that connected. However, after days of research and experiments, I was unable to find a way to do so successfully.
I'm sure this is a common concept for multiplayer games. So I was wondering if someone could point me in the right direction on how to do so.
The way we choose to do it, was to create a very basic webservice (REST) which the server (and the server only) could talk to.
The webservice was written in Perl with MongoDB as storage backend, but the options here are almost endless, so use whatever you think is best for you.

Resources