This series is intended to inform you of the Pragma game engine capabilities and how its novel design gives you all the benefits of a custom, in-house backend without the associated risks and overhead of building one.
The challenges of SaaS based offerings
Iteration speed is one of the most critical elements in shipping a compelling game on-time and under budget (ha!). As game developers, we’re constantly forced to make tradeoffs regarding scope and priority. The unfortunate reality is that we are often forced into compromising some aspects of the game vision due to those pesky budget and time constraints.
Given this inherent challenge, it's critical for game teams to build processes and workflows that maximize the team’s ability to own their own destiny, remain unblocked, and allow them to push as hard and fast as they can to create the best player experience possible.
In the era of SaaS, studios have to make the choice of giving up freedom and control in the hopes that a service or tool will increase productivity. There are several challenges associated with making good choices around these kinds of decisions. First, it's unclear how the service offering will adapt to the game’s needs over time. Sometimes teams get a quick win with a basic ‘hello world’ trial or implementation, only to hit a wall when the next layer of functionality is impossible (or nearly so) within the tool of choice. This presents the risk that adopting a tool choice early might result in getting locked in, or running into massive unforeseen scope if the tool needs to be abandoned and rewritten later when the richer set of features become the priority and the tool’s shortfalls are discovered.
Another challenge relates to launch preparation and risk mitigation. A SaaS service offering may be well suited to the needs of internal development and iteration, but it’s difficult to assess its readiness for launch day. Game launches are unique compared to other products because it's often the highest traffic moment, as players with all their enthusiasm and excitement show up to play. Contrasted with a traditional app or product launch that often start with zero users and the hope that people will eventually show up, for game launches it’s critical that the servers are the most robust and prepared for scale on day one. The result is a significant additional layer of scope + complexity that competes with other priorities, namely adding additional game features. When launch day is dependent on a SaaS based offering, there is additional risk caused by the team’s inability to stress test or loadtest these external dependencies without the trying to coordinate these efforts across companies (if it's at all possible).
Lastly, the cost of delays created while waiting on ticket responses or feature requests of an off-the-shelf offering can create massive delays in development speed. This is no surprise as the SaaS provider has hundreds of other customers with different needs and priorities. Even when the service is adapted to meet the game’s needs, development timelines would have to already be pushed forward.
Unblocked
Pragma’s core tenant, as a source licensed engine, is to enable studios to customize, enhance, and build features for their game’s needs. This is in direct response to the challenges above. Working with Pragma means building and running it locally alongside the game client and game server. This enables end-to-end integration on a dev machine without any friction, in seconds not minutes. This unlocks the ability to run and debug the backend with the click of a button, add debug logging, and generally unlock devs to add or modify backend functionality as needed. The result is a tool that offers a strong foundation to build from, without giving up the control and speed needed to bring your game to life.
The ability to adapt the engine to a studio’s needs prevents the situation where a missing feature (or parameter, or config value) brings development to a halt. We know that the unique needs of a game will never be met by a one-size-fits-all approach, so we’ve architected Pragma in multiple layers to still provide value when our opinionated features aren’t the right fit. With a local development environment, these changes can be made, run, and tested without the overhead of waiting on feature requests to an outside company, competing for shared resources on a managed test environment, or the difficulty of debugging changes with an external service that you can’t debug or pop open the hood to figure out what’s going on.
De-risk Launch
Pragma also provides the same rich set of tools we use to exercise the system at scale and to harden the core technology. As a source licensed product, we expect and encourage studios to add their own custom game logic to the engine. That means studios need the ability to exercise these features in preparation for launch to ensure all bottlenecks have been found and addressed. Our stress testing tools are built to run locally, so you can author a stress test simulating hundreds or thousands of game clients against the backend and work out the kinks without any overhead. Once your local scenario is robust, the load test client can be deployed to remote hosts and configured to hit a production grade Pragma environment to ensure everything is ready for launch.
Move Fast and Break (and fix) Things
The ability to debug the entire stack end-to-end drastically improves iteration time. Whether it’s validating that API request payloads are making it to the backend, debugging custom matchmaking logic, or triaging why the game server handshake isn’t… handshaking, having a local dev environment is essential for working quickly and effectively.
Studios relying on Pragma’s managed services are able to push their changes into a managed source code repository, where Pragma’s CI/CD tooling will build and package the backend binary, config, and content artifacts, and then deploy (automatically or manually) to various internal environments. Artifacts can be promoted across environments to ensure like-for-like configurations in your staging and production environments.
In summary, Pragma has been designed from the ground up to enable fast, end-to-end iteration loops for online multiplayer games. We are engineer first in our approach, focusing on local dev environments and tooling to support rapid prototyping and execution. We provide studios the same tools we use to build services and features to ensure they are just as well equipped as we are to build solid services that are hardened and production grade. Our hope is that we can provide as much value as we can, while getting out of the way of the game's specific needs and ensuring studios can execute at speed without being blocked by Pragma.
Wanna learn more? Check out the rest of the ‘Introduction to Pragma’ series:
Extending and customizing Pragma (Coming Soon)
Please reach out to us if you’d like to know more about Pragma by emailing us at info@pragma.gg