When making a game, creating the visual assets is one of the most important part. The visuals are the first contact players have with the product, and define their first impressions. In a traditional process, the artists spend hours handcrafting each of these assets.
This part is incredibly time-consuming and expensive, especially if the game offers unique items for each player.
With the gaming movement growing more and more on the Cardano platform (over 67 proposal at the time of writing) the need for high quality, unique assets will grow as well.
Is there a way to simplify this process, or even automate it? Enter procedural generation:
Procedural generation is the art of making content without manually authoring it.
ProtonGraph offers an easy way to generate 3D models, without limiting you to predefined categories. You have access to a lot of small building blocks you can chain together to create a graph. Think of it as a recipe you're giving to your computer to create a 3D model. These models can then be used in game just like any other created by traditional means.
Since this process is completely procedural and non-destructive, changing a few parameters let you get different results as well, enabling infinite variations at little to no cost. Making unique items on the fly now becomes possible, and you won't end up with the same looking generic assets, which is way too common today.
To summarize, ProtonGraph is:
- Free and Open-Source Software (FOSS)
- MIT licensed (super permissive, no attribution or fees required)
- Gives you full control over the procedural generation
- Can run in headless mode, so you can package it with your game or app (ongoing work)
- A software that already exists, but needs improvements
- https://protongraph.com/
On the technical side, it's built with the Godot engine, and the code is structured in a way that makes it easy for new contributors to add new functionalities:
- Each feature is packaged in their own node
- Nodes are independent, they don't need to know anything about the other nodes
- New nodes don't break existing projects
This delimitation makes it really easy to add new features without breaking or even touching existing code. It allows the software to scale really well and adapt to the future needs of the community.
Procedural generation is a complex topic, but has proven its utility across many titles, including some top earning AAA games. Today, game developers aiming to leverage this technique have limited options:
- Write their own tech
- Use another software
Most alternatives are closed source and pricey, which bars small developers from using them.
ProtonGraph aims to be a free and truly open source software, forever. By uploading it on public collaborative platforms like GitHub, any developer is free to inspect and improve the software, ensuring it can stay relevant to users' evolving needs. This way, the community is free to add any features without any constraints if they choose to.
It follows the Unix philosophy of making a software that does one thing, but does it well. Here we're not trying to make a massive all in one factory like Blender or Houdini, we're making a small, focused tool that can be used or embedded in bigger projects.
We're making a small brick, that can be audited and trusted, for the gaming community to use.
One example is the "Aedou: Realm of language" project (https://cardano.ideascale.com/c/idea/401098). It's actively using ProtonGraph for their level generator, so players can create new in-game locations with ease.
Risks are quite limited for this project.
The software already exists (cf GitHub page), the core functionalities are working already, but this project really needs some refactoring (to make the code easier to maintain in the future) and an improved user experience (UX) (Performance optimization and new features are coming later).
The biggest risk comes from the MacOS and cloud support. This software runs fine on Windows and Linux, but MacOS support is complicated as it requires Apple hardware to test it properly, and I don't own any. This forces me to rely on external contributors to ensure everything is working as intended on this platform.
Cloud support is also planned, but I haven't started working on it, so I don't know what kind of limitations I might face.