Delusion on the Deck!

As PC & handheld lover, Nintendo Switch was not enough! And once the Steam Deck show up in the news, i knew that i must be listing it too within my platforms list for the new engine. Without knowing anything about it, and even without getting a personal unit, and before it get release, i just took the decision! Steam been a long friend platform (yes it is not 100% platform) and most of my games are in there, i shipped many titles to it too, so i kinda familiar with the steam API, the dashboard & i love steam, so i’m sure that i’ll be getting a Steam Deck at some point to keep playing my favorite games.

3DS Development

Like i said i do love handheld, and one of my early goal was to support the 3DS as well, i put that in my todo list as i knew it won’t be a problem, as i do have past experience with the device and at the same time i do have my own Nintendo Developer account. But unfortunalty when i started working on handhelds, i found out that Nintendo have closed the requestes for 3DS developement hardware. I’ve treid many times to send emails to the proper mailing list for Nintendo to ask about obtaining one, but not a single response. So, if you are working at Nintendo, or know sombody or know of a legal way that i can follow to obtain a 3DS developemnt hardaware, don’t hesiteate to poke me (in twitter maybe). Will be appreciated.

Few weeks later (at early 2023) i got one as a bday gift, and this made me get very excited to a degree to stop any on going engine tasks, and put the Steam Deck as priority to run my engine on. It was enough for me at the time to get it to load the binaries without crashing & to log the initialization text, didn’t need anything else & i didn’t want to see any fancy triangles. Just by seeing the binary loads, this will tell me how much complicated the port would be..And it turned out a piece of cake!

This will look pretty once lights & shadows are enabled again!!

By now, “Delusion” Engine runs natively on Steam Deck (Vulkan), without proton layer or anything (that was the goal since i learned about the specs & proton thing) with full controller, touch pads & touch screen support. But let’s elaborate a little on few points from the top of my head, things that you may or may not know about:

– Despite the fact that it is very Linux (steam OS), but it has some few weird differences due to the hardware & the custom APU. Things that worked on Linux didn’t work when moved the build to the device. Mostly (yet) Vulkan support details.

– Steam Deck’s GPU is powerful & everything, but remember it is integrated not dedicated.

– Steam Deck supports mailbox present mode. So be careful if you really want that or you would provide a way to toggle it, it can come with some power consumption.

– The Steam Deck doesn’t have a devkit, or in another meaning, the only difference between devkits & retail, that you probably will get the devkit device for free from valve, where retail is retail!

– When you launch your title, if you don’t set windowing in purpose into fullscreen, Steam Deck will force displaying fullscreen, but in the resolution of your surface not the full resolution of the device. So make sure to set OS windowing fullscreen at initialization, as you may not notice this issue until you either log current swapchain image size or take some frame gpu captures.

– Not because a Xbox of PS5 controller works on the Linux PC version of the game it will work 100% just fine on the Steam Deck. The deck inputs is an Xbox 360 driver/backend.

– You don’t have to integrate fully (or even partially) the Steam API in order to make something run with full device support (input, display, audio,..).

– Steam Deck runs not only Proton & native Vulkan, but also native OpenGL.

– the Desktop mode of the Steam Deck is a great help, i was checking logs in there, till i found out about the Steam Devkit Management Tool. But this si not everything, as in there, you can retrieve many useful info about the hardware through the Info Center, most importantly something like “vulkaninfo” which was one way to solve multiple blockers that was crashing the renderer due to differences in hardware.

– There are some quality of life stuff in the Steam Deck’s “Desktop Mode” that won’t take effect until you enable the “developer mode” in the Steam Deck’s “Gaming Mode” & then reboot to the “Desktop Mode” again, something like colored logs in Kate text viewer/editor.

– Debugging something on the Steam Deck is painful, specially if your dev env is Linux!

– Valve is weird, their OS is Linux based, their device is Linux at the heart & yet the existing few official documentations always considering you’re using Windows development machine & assuming you’re going to run your title under Proton layer!


Leave a Reply

Your email address will not be published. Required fields are marked *