He is one of the community developers for Unreal Engine 4
on GNU/Linux (UE4 Linux). Cengiz Terzibas
, better known (on the web) as "yaakuro" (GitHub
). Late 2016 he published an interesting YouTube video
related to the OpenVR SDK for UE4 Linux. So interesting that some of us wanted to know more about him and his work. He was kind enough to answer my questions about his UE4 Linux work, VR efforts, and related topics. ("GNUX" in his answers is short for GNU/Linux.)
Q: Where were you born, where are you currently living, and what is your professional background?
yaakuroI was born in İstanbul, Türkiye. I live in Germany and Japan; mainly Germany. I studied Physics in Germany, where I got my MPhys. I was working at the Max Planck Institute in Germany, then went to Japan. I've worked in Brain-Machine Interface Research and Robotics for a while.
Q: What is the origin and meaning of your nick
yaakuroThat is tricky. Actually, I made that name up. How did I come up with it? Because of the sound of it. Sounds strange, right? And because it sounds a bit Japanese. My wife is Japanese, you know. Other than that, really no meaning.
Q: What kind of hardware do you use?
yaakuroI would assume I did the same as most of us: put together my own. I have an Intel i7-4770K CPU @3.50GHz, 16GB RAM, Nvidia 750Ti 2GB, 128 GB SSD for my GNUX OS (Xubuntu 16.04), 256 GB SSD for my /home (to have faster build times; building might overuse my SSD but I calculated that is worth it), 1 TB normal hard drive. Plus a MacBook Pro, 8GB. So, nothing big here.
Q: What kind of software do you use?
yaakuroOS as mentioned Xubuntu 16.04. A long time ago I was playing with other distros, but I stopped because I don't have the time to play around anymore, and for my development I need something more solid. Yes, Ubuntu is solid for me. When I need to use another OS for my programming, I am using LXC. My editor for fast editing is just gedit or Atom, but for programming I really prefer CodeLite. You might be suprised by that right? I think the developer behind CodeLite is quite nice and open to suggestions, and CodeLite is cross-platform. So, when I have to program something on Windows or Mac OS - I have a MacBook Pro too - I use CodeLite. For software source management I use Git, command-line.
Q: When did you first start using GNU/Linux, and why?
yaakuroMmmm, good question. I don't remember anymore. Quite a long time ago, maybe since 1998. One reason is: I use it because of programming. I think GNUX provides a really nice programming environment. On Mac OS, usually you have to hack around things, and on Windows you have to install yourself to death until you can compile a simple line of C++ code or manage your sources. Perhaps more importantly, I love the philosophy behind of all the Free Software. It is nice that people help each other to make a better environment for all of us. I contributed to some projects and have my own cross-platform C++ framework XdevLSDK, which is on GitHub.
Q: What are your core skills as a developer?
yaakuroI love developing cross-platform stuff. Mainly in C++ and OpenGL, and now Vulkan. For my previous jobs, I was working on Brain Research and Robotics, so I was allowed to use my own platform to develop the stuff.
Q: What kind of FOSS
have you written or contributed to?
yaakuroI contributed to CodeLite, as mentioned previously. But mainly my own libraries: XdevLSDK, tinymath, Taimaa and Singularity (a small engine that uses XdevLSDK to implement and test game engine related stuff). Also, OpenVR. Mainly I've tried to support - even though it sounds strange - UE4 on GNUX. I thought we need it on Linux; it might help us later, to get more games and attention. Furthermore, related to UE4, I helped with SDL: a couple of things got merged into main SDL2.
Q: What are your main contributions to Unreal Engine 4?
yaakuroMmmm, that is difficult. Here [Requires a free Epic Games account. -Ed.] you can see the list. (The following patches were adapting the UE4 source path to make it work on GNUX. I didn't fully implement them. You can see them via the link above when you click the separate items.) Adapt the VulkanRHI path on GNUX. (Working again on this. You might soon see a new video on my YouTube channel.) Make UE4 work with Mesa drivers. (At least back then. I didn't test for a while.) Adapt Android packaging support on GNUX. Adapt HTML5 packing support on GNUX. Adapt CEF on GNUX. Adapt tons of SDL2 UE4 Slate/UI Window Manager handling stuff; mainly the UI behavior with different window managers. That was pain, I tell you. (For the following I did everything.) Native CodeLite project support for the Unreal Engine 4.
Q: How have Epic Games and other companies reacted to your Linux-related contributions and pull requests?
yaakuroEpic Games reacted quite good. Most got merged into main. Other companies... I don't know. Didn't get any feedback from them, neither job offers.
Q: You have a Patreon account
. Have you asked companies for financial support, and was there a specific reason you chose Patreon?
yaakuroNot really asked companies. I am a shy person, you know. Sometimes I do official things for Epic, which is not always GNUX related. Patreon is a nice platform. It helps me to survive a bit. I am really more thankful to the patrons for supporting me. This way, I can focus more on GNUX related issues on UE4, and we might get somewhere with it as Epic Games merges my stuff from time to time.
Q: You appear to develop without
an HTC Vive. Did you ask Valve for one?
yaakuroActually, a Valve employee asked me if I would be interested in the Vive hardware to do some development related to the UE4 on GNUX. This was before Christmas. So, actually I "got" one, but I didn't order yet, because I went to Japan for a while. What I did is to add and fix stuff so that UE4 is running the SteamVR plugin on GNUX. When I go back to Germany I will get the Vive and can finish the stuff for UE4 on GNUX.
Q: What is it like to develop without an HTC Vive, with the SteamVR NULL device, does it complicate things?
yaakuroNot complicated, because I got help with setting up the NULL device. With that I could develop quite a lot to get UE4 and the SteamVR stuff to run. Of course, I can't test everything, which I will do when I get back to Germany. Or, if I stay longer in Japan, maybe I can ask for the hardware to be delivered to Japan.
Q: Does Valve support you in other ways, do you work for/with them?
yaakuroYes, they supported me a lot. (Provide me the Vive hardware, beta SteamVR keys and maybe a GFX card to test things.) We are talking back and forth about problems and solutions. I was working a bit on the SteamVR SDK on GitHub, and my changes have already been merged internally. They will be available to the public. What I did is to fix a small crash of the SteamVR SDK (= OpenVR) when using it with UE4, and made it so that the library can be compiled using Clang plus a custom libc++ which UE4 is using. (Long story. )
Q: You appear to be using the SteamVR compositor. How did you get it to run/render?
yaakuroThe SteamVR compositor is rendering (opening) when you initialize it. What you do in your client application (UE4) is to provide the left and right eye texture id, and then submit it to the system. That will be rendered in the compositor.
Q: So, are you adding the VR Editor to the Linux Unreal Editor?
yaakuroNo, no. It is already in the Unreal Editor. It is just not activated, because the code path for GNUX was missing. The part which was missing is to send the textures' id using the OpenGL renderer to the compositor.
Q: How does your OpenVR
differ from the original?
yaakuroI guess I explained it already. UE4 is using Clang with a custom libc++ instead of libstdc++, because of compatibility issues. To be cross-distro, libc++ is better and I think because of the license. What I did is that OpenVR can be compiled using Clang with the custom libc++, plus small fixes.
Q: You appear to be using the SteamVR GUI tool. Did you get a preview release from Valve?
yaakuroYes, to test the environment and to develop the stuff for UE4 on GNUX.
Q: Is this small GUI tool called "vrmonitor"?
yaakuroI think so, but don't quote me on that.
Quoted that you think so
Q: What is the state of this software? Is it good to go or barely alpha?
yaakuroI would say it's quite cool. Even though I didn't use the real hardware it runs nicely.
Q: Is it complete, with room setup and all the tools?
yaakuroYes. But I didn't test everything. It wasn't important for me to develop the stuff.
Q: What can you tell me about your Taranome engine?
yaakuroHehe, where did you get that? That is my own super small engine, which is using XdevLSDK (on GitHub) and is cross-platform. It runs on GNUX, Mac OS, Windows and Android. It is not online yet, but when I have more time I will make it happen. Nothing serious, really. It is more like playing around with new things. For example, when I was doing the VR stuff I implemented for XdevLSDK a simple VR plugin so that I can use the Vive too. But this is all long story.
Q: Are you using a non-public pre-release graphics driver that includes support for "shared memory extension" functions? If so, did you get this driver from Valve? Is it from Nvidia?
yaakuroI can't say that much here, because I really don't know. I got a key from Valve to test SteamVR and develop the stuff I mentioned already. I think the shared memory extension is for Vulkan. I am not sure if the spec is out yet. No, I use normal Nvidia 375.26 drivers.
Q: Your Unreal Engine work renders with OpenGL. Does this mean the VR compositor has an OpenGL mode?
yaakuroGood question, next question. I'm not sure what the compositor does, but when you look into libopenvr, you submit either Direct3D, OpenGL or Vulkan texture ID's. Maybe it's using Vulkan as renderer, but don't quote me on that either.
Q: Anything else of interest for people waiting for more VR on Linux?
yaakuroNot really, but SteamVR might come soon.
Again, yaakuro, thank you for all your interesting answers and for the work you are doing.
Feel like supporting yaakuro?
Check out his Patreon page, including his last three posts about OpenVR SDK for UE4 Linux.