• Hey Guest! Ever feel like entering a Game Jam, but the time limit is always too much pressure? We get it... You lead a hectic life and dedicating 3 whole days to make a game just doesn't work for you! So, why not enter the GMC SLOW JAM? Take your time! Kick back and make your game over 4 months! Interested? Then just click here!

Development PNAL Private Preview - Networking

Padouk

Member
PNAL: A Network Abstraction Layer designed for Indie developers who want to use commercial grade networking, to make a profit out of multiplayer capabilities without becoming deeply invested network engineer themselves.

PNAL Private Preview: http://pnal.padouk.ca/

Why in Game Design, Development And Publishing :
- Even though concepts and advice presented in this thread can be accomplished with pure GML offerings, the presented approaches require knowledge of Extensions and are not intended for all members of the community. The end goal is not to advertise a 3rd party product, it's rather to propote commercial grade networking connectivity as a whole for publishing and long term maintenance of your own game.

Why not in Tutorial Forum:
- Even though concepts and advice in this thread may be observed as training material, they are not meant to be reproducible in your own environment without deeper knowledge of the underlying SDKs. This topic should serve as a conversation starter and tough leadership on advanced topics rather than training.

Why not in Marketplace Forum:
- Even though concepts and advice presented in this thread can be accomplished with pure GML offerings, the presented approaches require a binding agreement with ExitGames (Photon Realtime Public Cloud), Heroic labs (Nakama), Valve (Steam) or Amazon (GameSparks) depending on the version or target devices. Some of those require nondisclosure agreements and prevent SDK redistributable. The PNAL helps abstract the connection between GMS and either of those Service provider to benefits from their advanced networking expertise.


Web, Desktop, Mobile:
Supported Devices*:
- [X] HTML 5
- [!] OperaGX (pending, awaiting gms runtime bug fixes)
- [X] Windows x64
- [X] Windows win32 (See [how to use win32 version of PNAL])
- [X] MacOS x86_x64
- [X] Ubuntu x86_x64
- [X] UWP x86_x64
- [!] iOS 13 (pending, emulator tested only, awaiting advanced device testing through private beta.)
- [!] Android (pending, Emulator tested only, awaiting advanced device testing through private beta.)
- [!] Fire (pending, Emulator tested only, await advanced device testing through private beta.)
- [!] Console (Refrain from discussing console (Xbox, PlayStation 4/5, Nintendo Switch) in public space. Enterprise level compatibility is available for private discussion)

*As of PNAL 2.0, a strong dependency was set with ExitGames's Photon Realtime SDK. Due to licensing terms, pre-built version of PNAL can no longer be publicly distributed, the list of compatible devices depends on your legal bindings with ExitGames.
Until this strong dependency is resolved, PNAL private builds are available as in private channels only, feel free to PM.

Relay and Netcode:
Additional Licenses:
PNAL 2.0
- [Active] Photon Realtime v5 (ExitGame) - PNAL 2.0 was developed using the realtime connectivity offering from Photon Public Cloud and Photon Server (v5). This connectivity was elected as the prime connectivity for the next PNAL release.
- [Active] nakama v3 (Heroic Labs) - PNAL 2.0 was developed using the realtime connectivity offering from Nakama v3. You can now connect to your self hosted Container.

PNAL 1.0
- [Active] Photon Realtime (ExitGame) - PNAL 1.0 was developed using the realtime connectivity offering from Photon Public Cloud. From our point of view, this connectivity is the best fit for single indie developer using Client Authoritative scenarios.
- [Pending] Heroic labs (Nakama) - PNAL 1.0 was developed using the realtime connectivity offering from Nakama v3 (Open Source). From our point of view, this connectivity is the best fit for small teams going for Server Authoritative. It was designed for teams with a dedicated back-end developer and a distinct gameplay (front end) developer. This connectivity is pending co-maintainer and paid back-end demo environment.

- [Pending] Gamespark (AWS) - PNAL 1.0 was developed using the realtime connectivity offering from GameSpark which was recently acquired by Amazon. This connectivity is pending understanding of the new terms of services from AWS.
- [Discontinued] Valve (Steam) - PNAL 1.0 was developed using Valve (Steam) SDK 1.5+ The decision was made to move away from the (deprecated) Direct Connectivity and substitute it with (new) Multiplayer connectivity. Unfortunately due to misalignment between SDK 1.4.2 required by GMS and the SDK 1.5+ required for Steam Datagram Relay this specific connectivity was paused and decommissioned from the testing pipeline. This connectivity may come back in a near future.


Features:
TCP, UDP, WebSockets? Indie developers should not have to focus on this while improving their gameplay.
PNAL leverage the underlying SDK's proprietary Sockets or Datagram model and defer that decision to the real experts*
- Developed with HTML5 Rapid Prototyping capabilities in mind.
- Built and Tested on most popular devices*

Developed and tested in harsh environment using 250ms RTT. 5x more than the expected 50ms RTT for production use cases
Developed and Test using 20 worldwide distributed bots and a strong Relay Based Topology in mind.
Relay benefits.
- Near-Zero firewall setup and reduced risk of DDOS attacks with a Relay Based connection as opposed to direct connection.
- Near-Zero maintenance cost suitable for Indie's targeted revenues as opposed to fully managed Dedicated Server.
- Potential for Relay Positioned Referee to monitor and interrupt known Client Authoritative cheats.

The PNAL expose advanced techniques such as Interest Group and implement some others like Eventual Consistency to reduce the message count, bandwidth and CPU overcharge of advanced indie developers.
Although the recommended player count is 4 to 8 for indie game play, PNAL is beeing test with higher player count to monitor Memory and CPU taxation of heavy networking workloads
- Near-Zero memory allocation.
- CPU taxation tested and optimized for up to 100 players per vcpu (not recommended for production purposes. 4-8 players remain the recommended target for client side authoritative gameplay of junior and intermediate indie developers)
 
Last edited:

Nocturne

Friendly Tyrant
Forum Staff
Admin
I have moved this topic to what I consider to be the only place it can really go in it's current state... The advanced forum is for problems and discussion, and this feels like neither. In fact it feels a bit more like an advert than anything else! However I can see it being useful to GM users and would not want to remove it from the forum (and you are correct that it doesn't really fit tutorials or marketplaces forums). So, this is the next best thing! Good luck and thanks for sharing.
 

Padouk

Member
Thanks Nocturne. It probably makes more sense that way.
You are right, in it's current state it's not much more than a post to *raise awareness*.
The idea is not to self promote or to promote any specific 3rd party, it's merely to propose Cost Reduction Strategies for publishing and maintaining networked games on the real world.

Lots of conversations we had over the years converged to the same conclusions:
- 500$USD/month dedicated server Hosting does not make sense for indie developers releasing their first game. It will chew up their revenue in no time.
- Locally tested and developed networked games don't scale up to the real world when they hit harsher environments... to a point they can't even be added to a Portfolio for show case.
- A "tool" cannot magically solve all networked issues for all game types. Game developers also need to know a few concepts.

We are a few people working toward the same goal here. Awareness and Best practices is something we are here to share.

Continuing on the topic: Aside from the StressTest, PNAL study 6 different cases* requiring different networked techniques.

The 2 main points behind all those case studies are
- To allow single developers to leverage their High-Level GMS's knowledge at maximum capabilities without worrying on the low-level nuts-and-bolts or external server management.
- To keep the extra expenses close to 0-15$USD/month for a sleeping game (fewer than 1000 daily players) and close to 100-150$USD/month for a trending indie game. (8000 daily players) while still providing a safe environment with enough availability and redundancy to serve your clients worldwide.
*Note: 2 of them are still looking for co-maintainers if you have a networked game you plan to deploy solo, send me a PM.


The main talk track is focusing on a poor-man's relay topology.
Leveraging a commercial grade Relay for realtime interactivity and a cheaper LAMP or Serverless Endpoint for delayed persistency, analytic and referee.
 
Top