100% Orange Juice Devlog - Card Visual Update (Patreon)
Content
After years of design pitches, and months of development, the card visual update is finally live! With this update, our initial goal was to recreate a close approximation of the original card designs (but in higher quality and especially being able to utilize higher resolution card art), to avoid players feeling the game is losing its identity, which we always consider with any changes to the game.
After polishing the new design based on feedback, in the future, we will be also introduce alternate card styles, and make modding your own cards to exact detail possible!
Regarding the technical implementation, we have another devlog from Rapha who was mainly in charge of the update. I'll let him give a breakdown of what went into the update!
The new card system was rewritten to be decoupled from the game o.o It now works in a MVC manner, the game provides the data acting as the model, the card subsystem gathers that data in a simplified manner, acting as the controller, and the Lua scripting uses a bunch of new in-game methods to render the data, acting as the view. Since the view just needs to know the output of the controller, and have no idea how the game works or what it's doing, the view can easily be switched.
This entails:
- Cards are rendered only once per requested size, it's global, impossible to escape, impossible to bypass. The requested sizes are for performance rounded to multiples of two, so request a 100 pixels of height card, and the system will render or return the previously rendered version of it the next big multiple, in this case 128. The rendering system that is just a wrapper on the existing code for implementation easiness' sake will command it to render at the requested 100 pixels of height.
- Cards do not use pre-rendered elements, aside from the illustration they are all rendered in runtime. This allows for always sharp views! (Reset the Window size to have the sharpest result)
- All cards have been procured to their best possible resolution, and are shipped in 64,128,256,512 and 1024 pixels variants to avoid straining the user computer decoding unnecessary pixels
- Cards are now shipped in WebP to allow for the best possible visual quality without breaking the bank, all the new card arts in the 5 resolutions they are being shipped have roughly the same size as the old png ones.
- Red & Blue have now their proper art after almost 3000 days lost in the akashic orangic records, a never seen before art by Hono.
- Card arts are shipped in their utmost rectangular form, and have their borders rounded at rendering, for a smooth seamless look.
- This allows us to ship in the future alternate card designs, be them seasonal (Xmas?!? Saa), be them visually useful (designs that focus on having the biggest text possible, designs made to be easier on the eyes, etc) or just look cool.
- This change allows for new gameplay elements to be added to cards easily, no need for separate assets to create a new class of cards.
- Card descriptions are now rendered with our internal HTML-like engine, this means that we can actually format their content, bold or italic text, add icons, images, etc.
- This change will allow in the future for card designs to be modded by users, so they can implement their dream design, copy other card game designs or do whatever their hearts desire. Cards don't need to be rectangles for example. Users will need to devise Lua scripts based on available API to do so.
- This change is a stepping stone for having better handling of cards as in-game objects, we can now rotate them, project them, animate them, without stressing the user's computer. While this update only brings the tech, the underlying usage will need to be adapted with time (as it's running on compatibility mode now, nothing in the code that calls "I need a card" was changed, it still talks the same language so no huge modification was needed around the code for integration).
--------------
Cards aside this update also brings elements (field info, game messages) rendered in our brand new UI solution that will allow for easier to see, easier to program and easier to render elements. The newly programmed elements have their geometry cached on change, so the user computer has to do the work to actually generate it only when something is new.
This is also a stepping stone for the entire game UI to be modernized and consequently reach new heights, like dark mode, themes and if everything goes well right-to-left text. The prelude of the extinction of hard to read text.
We hope you enjoy the new look!
Fruitbat Factory