|
|
 |
|
02-01-2016, 09:48 PM
|
#1 (permalink)
|
|
Enforcer
USER INFO »
Posts: 88
Reputation:
Join Date: Feb 2016
Currently: Offline
|
Quake For OSX
(NEW: iOS VR target has been published to App Store as Slip & Frag. See newest thread).
Hello everyone!
I just wanted to share something with you guys. About two years ago I had the opportunity to learn to code for OSX / iOS, and learn about the latest technologies available in these platforms.
And what better way to apply that knowledge than to start porting one of the games I love the most? Last week I started porting the original Quake rendering engine - that is, the one originally published by id on its FTP site and recently moved to GitHub - to OSX 10. Right now, the game is playable using a keyboard/mouse/gaming controller. Also, only the software renderer is currently available for video - though, to render frames to the screen, I decided to use the new Metal framework available for both desktop and mobile devices; as a result, the game runs at 60, 72 or even higher fps depending on the refresh rate of your screen.
At the last moment I decided to add support also for the 4th gen Apple TV, using an experimental controller scheme based on the Siri remote that comes with the device. Key word being *experimental*. The game is playable, maybe even winnable; but the controls will be hard to learn and master. However, if desired, an extended gaming controller can be used instead.
And later, I added a special iOS target with support for VR viewers such as Google Cardboard (and believe me, it looks great!). Also controllable with an extended gaming controller.
If you're interested in playing this port, and have a Mac with OSX 10.11 and Xcode 7.2, and optionally a 4th gen Apple TV (and a TV of course  / iPhone and a VR case, feel free to download the project from this location:
https://github.com/Izhido/Quake_For_OSX
Please follow the Readme.md instructions and you will be playing in no time.
Any comments, suggestions and/or bug reports are welcome!
Last edited by Izhido; 07-13-2016 at 11:32 AM..
|
|
|
|
02-02-2016, 05:38 AM
|
#2 (permalink)
|
|
Chthon
USER INFO »
Posts: 10,004
Join Date: Nov 2005
Currently: Offline
|
Feel free to steal source code to fill holes (like networking):
Mac | Source code
__________________
Quakeone.com - Being exactly one-half good and one-half evil has advantages. When a portal opens to the antimatter universe, my opposite is just me with a goatee.
So while you guys all have to fight your anti-matter counterparts, me and my evil twin will be drinking a beer laughing at you guys ...
|
|
|
|
02-04-2016, 10:02 PM
|
#3 (permalink)
|
|
Enforcer
USER INFO »
Posts: 88
Reputation:
Join Date: Feb 2016
Currently: Offline
|
Thanks, Baker!
I actually went and checked your code, and while I didn't copy any of it, it pointed me in the right direction to implement the remaining functionality. Damn it, whoever came up with qsockaddr, how could you not foresee the changes that could occur in 20 years of software development.
Anyway, the engine now has support for sound AND networking. Just a few minutes ago I tested it on flanders.quake1.net:26010, and it worked just fine. Now there is no reason why you guys shouldn't play it  .
|
|
|
|
02-05-2016, 12:49 AM
|
#4 (permalink)
|
|
The man who sold the world
USER INFO »
Posts: 5,104
Join Date: Feb 2011
Currently: Offline
|
@Now there is no reason why you guys shouldn't play it .
I don't have a Mac
__________________
X_Michael
|
|
|
|
02-05-2016, 02:12 AM
|
#5 (permalink)
|
|
Chthon
USER INFO »
Posts: 10,004
Join Date: Nov 2005
Currently: Offline
|
Originally Posted by Izhido_
whoever came up with qsockaddr, how could you not foresee the changes that could occur in 20 years of software development.
Sockets programming is a little crazy. Especially if you try to add in ipv6 support. Some of the structs are annoying.
In case you are wondering, there are about 8 active engine coders consisting of myself, Spike, MH, eric, mankrip, qbism, R00k, etc. and most of the engine conservation that happens either here or at Func Msgboard somewhere like here or here.
__________________
Quakeone.com - Being exactly one-half good and one-half evil has advantages. When a portal opens to the antimatter universe, my opposite is just me with a goatee.
So while you guys all have to fight your anti-matter counterparts, me and my evil twin will be drinking a beer laughing at you guys ...
|
|
|
|
02-05-2016, 03:13 PM
|
#6 (permalink)
|
|
Death Lord
USER INFO »
Posts: 540
Reputation:
Join Date: Jan 2009
Currently: Offline
|
|
|
|
|
05-22-2016, 11:41 PM
|
#7 (permalink)
|
|
Enforcer
USER INFO »
Posts: 88
Reputation:
Join Date: Feb 2016
Currently: Offline
|
Got some news for you:
I just added support for extended-profile gaming controllers for all targets in the project, with controls similar to those used by modern game consoles. I just got ahold of a SteelSeries Nimbus (the one recommended by Apple) for my tests, and it performs quite nicely. Highly recommended as a substitute for the Apple TV Siri Remote control. Of course, you can also pair it to your Mac and it works just as well for the OS X target.
Oh, and there's another thing.
I just added a new iOS VR target, compatible with iPhone devices, specially designed to be used with Virtual-Reality viewers such as Google Cardboard or similar. If you have such a device, and an extended-profile gaming controller, feel free to test it. Maybe it's because this project is actually the first time I tried VR gaming, but in my opinion, this thing looks unreal, and completely awesome!
As usual, comments and suggestions are welcome.
|
|
|
|
05-23-2016, 12:07 AM
|
#8 (permalink)
|
|
Chthon
USER INFO »
Posts: 10,004
Join Date: Nov 2005
Currently: Offline
|
Sounds like some cool stuff you've done. I don't have any of those extra devices, but at some point I plan to look through your source code to satisfy my curiosity.
And it a bit refreshing to have someone doing creative (very) platform-specific integration, reminds me a bit of Fruitz of Dojo which had 2 waves of development or PlayStation Portable Quake.
__________________
Quakeone.com - Being exactly one-half good and one-half evil has advantages. When a portal opens to the antimatter universe, my opposite is just me with a goatee.
So while you guys all have to fight your anti-matter counterparts, me and my evil twin will be drinking a beer laughing at you guys ...
|
|
|
|
05-30-2016, 12:38 PM
|
#9 (permalink)
|
|
Enforcer
USER INFO »
Posts: 88
Reputation:
Join Date: Feb 2016
Currently: Offline
|
Another small update:
Network support has been enabled on ALL targets. Finally understood what was going on there. Local network games work flawlessly, and all targets can be servers for all other targets.
I even had, at some point, an iPhone acting as a server for a MacBook Pro, and a Apple TV. Let that sink in.
As a special note for tvOS and iOS VR targets, since I haven't been able to enable a keyboard for them, I decided instead to let the user configure the usual network values (server, port, player name, own IP address) by using a Settings bundle. This means you will be able to go to the Settings app of your device (iPhone or Apple TV) and specify those values right there, outside of the game.
As usual, comments and bug reports are welcome!
|
|
|
|
06-19-2016, 05:33 PM
|
#10 (permalink)
|
|
Enforcer
USER INFO »
Posts: 88
Reputation:
Join Date: Feb 2016
Currently: Offline
|
A minor, but important update.
I've been doing a few optimizations in the way brushes, aliases and text are being rendered in the iOS VR target. The primary optimizations (world and entities) fortunately didn't require changes in the primary rendering code; polygons were essentially cached so just a few drawing calls per frame are performed. To do that with text, however, I did need to change the rendering strategy - instead of individual character drawing, a begin(count)-add char-end process was inplemented. The changes were done in such a way that the software renderer still works as expected - essential for the other two targets (MacOS, tvOS).
As a result of these changes, playing it on a iPhone with a VR case is guaranteed to happen at 60fps.
(As a side note, since rendering happens at both eyes in this mode, this means the iOS VR target is effectively a 120fps engine - something I'm pretty much very proud about  .
As usual, comments and suggestions are welcome.
|
|
|
|
 |
|
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
|
|
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
|