Announcement

Collapse
No announcement yet.

Quake For OSX

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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, 11:32 AM.

  • #2
    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 ...

    Comment


    • #3
      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 .

      Comment


      • #4
        @Now there is no reason why you guys shouldn't play it .

        I don't have a Mac
        http://www.nextgenquake.com

        Comment


        • #5
          Originally posted by Izhido_ View Post
          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 ...

          Comment


          • #6
            https://github.com/fruitz-of-dojo/Quake
            https://github.com/fruitz-of-dojo/TenebraeQuake

            might also want to look at fruitz of dojo's macOSX stuff
            Gnounc's Project Graveyard Gnounc's git repo

            Comment


            • #7
              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.

              Comment


              • #8
                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 ...

                Comment


                • #9
                  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!

                  Comment


                  • #10
                    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.

                    Comment


                    • #11
                      Yet another update.

                      I was able to expand the settings of the iOS VR target (accessible from the Settings app in the iPhone) so the game can now use one of 16 command lines to start the game. They are all editable, as well - the default values for the first three command lines are just "(nothing)", "-hipnotic" and "-rogue" so the engine can now play the two official Mission Packs.

                      Of course, this also means the engine officially supports now custom mods (yay!). Just copy your game folders next to your ID1 folder (as usual) to the device by using iTunes File Sharing, ensure that you have an appropriate command line for the mod, and you're ready to go!

                      Can't wait to hear from you guys about your experience with this!

                      Comment


                      • #12
                        Oh, and BTW: DOPA LIVES!!!!! (In my iOS VR port, at least)

                        The third demo in DOPA seems to slow down the engine a bit; I need to check why that happens.

                        Comment


                        • #13
                          Yet another update:

                          A few fixes were applied to the optimization code I created recently for the iOS VR target - underwater warped rendering was not working properly; also, I removed a rather nasty bug with repeating textures in the code, caused by an after-effect of the Google VR SDK code when rendering split-screen for the VR mode.

                          I also added to this target a few guide screens when the game starts for the first time, to help the user set everything up before starting the game - game data files, as well as the game controller. For the former, I decided to include a .zip file into the project, containing the ID1 directory, pak0.pak, and the documentation .TXT files from the Shareware episode (quake106.zip).

                          With these changes, I'm getting closer and closer to being able to publish the engine to Apple's App Store. I believe I only need to create one more asset for the app, and it should be ready for prime time!

                          And remember, comments and suggestions always welcome .

                          Comment

                          Working...
                          X