Can you tell us a bit about your coding background?
My programming background is heavily tied to my passion for games. I started out with basic text games in BASIC, on handed-down computers and with very few learning resources. As soon as I got access to the internet I explored a diverse variety of alternatives, such as C, visual basic, delphi and 3D-graphics-oriented varieties of basic such as dark basic. I think I probably came across C++ at this point, but it was likely a bit ahead of me. GameMaker came out probably a year or two earlier, and that was a really great tool, because for the first time I could explore my creativity without getting bogged down in too many technical details.
A few years later, and the release of Half-Life 2 blew me away. My PC barely ran it at the time, but compared to other 3D games I’d played it seemed really gigantic and expansive. Once I learnt that it could be modded I was very excited to download the development tools, and desperate to learn C++. I remember staying up all night and reading Bruce Eckel’s ‘Thinking in C++’. I hate to think of what my first C++ programs looked like, but knowing what I know now about the complexity of C++, they can’t have been pretty.
The discovery of functional languages really broadened my perspectives, and I’ve spent the last year of university until now experimenting with them, where I’ve settled on Haskell. I really recommend to all programmers to learn a functional language, because it really forces you to think differently and broadens your perspectives.
And this background led you to form your own gaming company?
My games company Pillowdrift was a project three friends and I did in our university placement year. Displeased with the games industry and unable to find satisfying opportunities in it, we chose to go it alone and develop some of our own ideas. We started by developing some of the games we’d produced at university into complete products, and then set about working on a major new project in Unity 3D, ‘Stellar Swing’, which I’m actually very happy with (it’s available for free on our website along with a trailer). It’s a ‘3D swingy action puzzle game’, an attempt at making something that’s suitable for playing on mobile devices but that’s more complex than typical mobile games.
It’s also available on PC, which I personally think works better, so maybe that’s where it should have been targeted in the first place. There was a lot of interest, but in the end the game seemed a little complex and technical to play for most players on a mobile device. It’s still a lot of fun though, in my opinion.
I’m still in contact with my friends from Pillowdrift, but we’ve since mostly gone our own ways. One of us, Jitesh, actually ran a successful Kickstarter for his Japanese language learning game Koe, which he’s working on now.
What did you study at Derby?
After school I chose to go to the University of Derby to study Computer Games Programming. I chose that course and university after researching a number of alternatives, as it was the only one which actually left me convinced by the course contents and staff. Overall it was really a great opportunity. I met a number of like-minded people, and had time to develop my ideas outside of classes. The only thing I regret is not spending more time making games while I was there, with such little obligation outside of that.
How did the opportunity with Virtalis come about?
After university, I chose to return home to spend some time with my family. Coincidentally, another of the friends who I started Pillowdrift with contacted me, asking if I was looking for a job. It turned out that he had moved only a few miles away from me to work for Virtalis. It seemed like a perfect opportunity to me - C++ programming in an interesting sector, and I wouldn’t have to move away like I did for university.
Virtalis is always on the look-out for entrants to its Dev Team. It asks to see examples of code, as well as having an interest in the university course studied and signs of real interest in 3D visualisation at interview. Strong C++ programming skills are important, as that’s the language all of our projects are developed in.
What are some of the challenges VR presents compared to ‘traditional’ software development?
VR demands extremely high performance realtime software. That’s one reason our software is written in C++. Tracked 3D often involves rendering two or more viewports so it’s already a lot more demanding than typical interactive applications. Additionally, dips in performance can cause jitter or delays showing an up to date image, as has been seen with early consumer VR software like that for the Occulus Rift, and that can be unsettling if the application’s display is somehow linked to your motion.
A second consideration is the user interface. That includes not only the GUI, but also the variety of input devices we support, from motion trackers, to haptic feedback devices. The GUI has to support tracked users on a variety of setups, including desktop configurations, head mounted displays, and large projection systems. Work in the area of immersive GUIs is in its infancy, so our solutions to these problems are often in-house, and are frequently iterated on and improved. Similarly, providing an effective user experience for tracked input devices requires thinking outside the box, as they are rarely analogous to a mouse and keyboard.
Can you give us some background on GeoVisionary (GV) and the work you’ve been doing on it?
GeoVisionary was developed by Virtalis in collaboration with the British Geological Survey as specialist software for high-resolution visualisation of spatial data. The initial design goal was to ensure that data sets for large regions, national to sub-continental, could be loaded simultaneously and at full resolution, while allowing real-time interaction with the data. One of the major advantages GeoVisionary offers over other visualisation software (3 & 4D GIS) is its ability to integrate very large volumes of data from multiple sources, allowing a greater understanding of diverse spatial datasets.
GV3 is a big launch coming at the end of the year. It moves GV from a pure 3D visualiser to an analytical tool. This means that it opens up new markets because it features things like Live GPS Tracking and has a link to the Web. GV3 can hold massive CAD models, meaning that mining infrastructure, like conveyors, crushers, engineering facilities, plus detail of earthworks, such as shafts, stockpiles and waste piles, can all be brought together in one place. It could also be excellent for facilities management for whole regions, or countries, owing to the size of the data sets it can handle.
Personally, I’ve been involved with a variety of parts of GV3. From GPS tracking, to support for some of the CAD data formats used by geologists, to creating GUIs to make the features of our software accessible to geologists. I’ve learnt a lot that I would have never expected to, and that’s great because it’s kept things interesting and fresh.
Are there any other interesting projects you’re currently involved with at Virtalis?
Another of our products is Visionary Render, which allows users to interact with an immersive VR environment created from large 3D datasets.
The next priority for us after GV3 is Visionary Render 2.0, the successor to Visionary Render 1.2. There’re a number of interesting feature requirements for 2.0 so I’m sure it’ll keep us busy. A major advancement for VisRen 2.0 is full multi-platform support, which means porting to unix and unix-like operating systems including linux and mac. As I’m primarily a linux user, it’s exciting to be able to run our software on linux, and I’m looking forward to contributing to the porting effort.
Additionally, the release of affordable consumer HMDs such as the rift and the vive are likely to mean more interest and work towards immersive features. The increase in accessibility of VR makes this an exciting time for all.
Oxa launches autonomous Ford E-Transit for van and minibus modes
I'd like to know where these are operating in the UK. The report is notably light on this. I wonder why?