No custom shaders to date, at least in terms of writing our own HLSL shaders. We have a hand full of “Master” UE4 materials and then we use material instances on the actual models. While we haven’t gotten into heavy texturing yet, I don’t honestly foresee the need to write shaders. UE4’s material system is pretty amazing and has let us move quite a bit of workload from programmers to artists. That could change - it’s possible that we might want to do something that the Material system can’t handle, but if I were a betting man, I’d bet on us being able to get this game shipped without writing a line of shader code.
We avoid demoing on older devices.
I’m kidding, kind of. We haven’t gotten to the point of optimizing yet, but so far, on the 5S, the iPad Air, and all later devices, we always 30-35 fps even on our biggest, most complex levels. Epic and Apple get the credit for that, not us. Trying to run current builds on the iPad or original iPad Mini can be a little painful, though. That’s a problem for later in the dev
Sure, I’ll try to include more technical details in my Saturday updates, which I’ll be putting in this thread going forward.
Since moving to UE4, honestly, the biggest challenge on mobile is coming up with good controls. We’ve spent a lot of time working on our move mechanic, and we’re not done. You have to find a balance. You simply can’t offer the amount of movement freedom you can with a console controller, so you have to choose which aspects of control are important to your game and which parts you can take away from the player somehow without hurting gameplay or immersiveness.
Historically, mobile has been very constrained in terms of computing resources. Devices never had enough memory, processor speed, or GPU cores to do what you wanted to do, so you had to compensate with all forms of cheat - special pared back shader. Our original Unity version had five or six completely custom shaders, all written trying to get the look our artists wanted at a decent framerate on device. We haven’t really had those issues since moving to UE4, though, honestly. The shader compilers and render pathway automatically handle most of that for us. That, combined with significant jumps forward in mobile computing power, have made these traditional mobile issues less of a factor for us.
It is important to decide up front which devices you’re willing to sacrifice to get the experience you’d like, too. While we’d love to ship Republic Sniper so it supports all iOS devices that Apple currently supports, we’d be okay cutting support for older hardware if we can’t get the performance we want on those devices without sacrificing too much in the way of image quality of framerate. Android, which will likely be the second platform we ship on, is much more challenging in that respect. You can specify certain requirements, but there are so many devices by different manufacturers, running different variants of the OS, most of which are usually at least a year old, and many of which have been customized by carriers, running on different hardware architectures, that you’re likely to have some devices that just don’t run your game well if you make it graphically rich.
Thank you, that’s really nice to hear. Our art team is phenomenal and UE4 has been a great tool for us.