Wolfenstein 3d Speed Run

  1. Wolfenstein 3d Wiki

Wolfenstein 3D. And what better way to do that than shooting down every single fascist guard you meet. And their dog! Race through this old school 3D environment, gun down Nazis and enjoy a milestone of gaming history with Wolfenstein 3D! Controls: Arrows = Move, Ctrl = Shoot, Alt = Strife, Shift = Run, Space = Open doors. Just a straight speed run would be how fast you can make it from start to finish, 100% run would mean going after all those secrets. Both types would be fun to watch. They each display different styles of gameplay. Hopefully someone will do a complete run, can't get the game running well on my system so only way I'll see one is if one get's posted.

May 8, 2018So this article and project are essentially the sequel to getting, whereby I detailed the process of getting these old iOS ports of id Software’s games up and running on modern versions of iOS. If you haven’t read that article, go check it out first and if you have read it, maybe go check it again since I fixed a bunch of stuff wrong with it (mostly grammar, some structure).I now have the ports running on tvOS, which means you can play them on your fourth generation Apple TV or later. The fact that it’s been about a month since I got the iOS versions fixed says a lot about how comparatively simple this was, especially since I was able to leverage others’ work in the process.As before, for those who just want to cut to the chase here’s the repos where you can grab the updates. I just made an additional commit to the existing repos.Wolfenstein 3-D for iOS 11 and tvOS for Apple TV:DOOM for iOS 11 and tvOS for Apple TV:For some background, the original Apple TV was released in January 2007. Its announcement actually predates the iPhone and was released at the same event where iPhone was announced. In hindsight it was a fairly bizarre device that essentially ran a pared down Mac OS X in “Front Row” mode, which was the interface designed for TVs.

It had a hard drive, it could not do HD, it required a Mac or PC running iTunes to connect to it, and was essentially a device that mirrored your iTunes library in the era before media streaming was common. It’s not entirely inaccurate to say it was an “iPod for your TV”.The second generation Apple TV is the device that was more like what we expect from a streaming device today. It ditched the Front Row interface, it had no hard drive, it could output at 720p over HDMI, it was considerably smaller (the media at the time likened it to a hockey puck) and it mostly relied on streaming. By this point Netflix’s streaming service was becoming more popular (until then it had been a DVD-only service) and broadband was becoming more common.

The device ran a proprietary OS, reportedly derived from iOS (which itself was derived from Mac OS X), which was more akin to a firmware than a regular OS. It had channels and with various software updates additional services would be added to it (Hulu, HBO GO, MLB TV, etc.) but it was all closed and determined by Apple. It was not a traditional platform like iOS or the Mac.The third generation Apple TV was nearly identical to the second generation except for minor hardware improvements and the ability to output 1080p over HDMI. This is the version of Apple TV that would be sold for several years.The fourth generation Apple TV changed several things, the most significant being that the operating system was being given a name, tvOS, and the whole arrangement was being restructured to be more like iOS.

It had an SDK, an App Store, and Xcode was updated to support it directly. A lot of code and libraries from iOS were brought over to tvOS from iOS, so it was possible to port iOS apps to tvOS in many cases. The device reintroduced onboard storage, it had better on-board GPU hardware and it was a taller unit as well.iOS featured the concept of “Universal Apps”, which in this context meant that the same app could run on the iPhone and the iPad. You’d have to give some consideration to screen size and layout but if you wanted the same code base and executable to run on both iPhone and iPad it was possible. It was also possible to keep your iPhone and iPad apps separate but this never took off as a popular option. As a side note, originally the term “Universal Apps” on the Mac referred to apps that featured both PowerPC and x86 executables for the Intel transition period but since support for PowerPC Macs has been cut off for years this term was repurposed for iOS, and if the rumors are true, “Universal Apps” may mean something expanded in the future.With tvOS, Apple came up with the concept of a “Universal Purchase”. Since the Apple TV runs tvOS instead of iOS, the Universal App concept doesn’t really apply since it isn’t the same executable, but they still wanted to give the ability to tack on an Apple TV app to a single purchase if you wanted to, so as a result today you can see “Offers Apple TV app” in the description of apps in the iOS App Store.

Speed

Similar to Universal Apps, you can also opt to do the opposite and make the Apple TV app a separate purchase. A famous example of this is Minecraft, which has its own separate Apple TV app for $19.99, separate from the standard $6.99 iOS app and whose future as a recipient of the Better Together update is uncertain. In general though the idea of making the Apple TV app be separate is not common.From a development perspective, tvOS development is really similar to iOS development with just enough differences to make it not an automatic process. It features UIKit with some differences.

There’s a few controls missing, such as UISlider. Part of the reason for the differences owes to the fundamental difference in the interface: you can’t touch the screen.

Apparently they still call it Cocoa Touch for tvOS but you can’t actually touch anything so the important thing is what they call the Focus Model. Basically you control the general UIs in tvOS by highlighting elements on the screen and selecting them, similar to what you do with a remote control in a DVD player menu or a TiVo menu. It sounds simple, and it mostly is, but there’s just enough variables – like when you can select certain elements and what element gets focused when you hit what direction – to be challenging. There’s also other considerations that seem obvious – like there’s no concept of screen orientation because there’s no way to turn the screen.

Cool math games

There’s no concept of a traditional accelerometer because there’s no way to turn the screen (though you can get some accelerometer info out of the Siri Remote). And there’s no way to launch a website because there’s no web browser and no way to embed a web view anyway (this was a big bone of contention on release – some people have been using HTML5 to develop iPhone “apps” that fake a UI and these apps are not possible on tvOS, but anyone who has been doing apps the normal way has options)On release, Apple put some bizarre restrictions on tvOS.

Apps couldn’t be more than 200MB when downloaded and if your app needed more space you had to have it download the data itself at runtime, and there was some uncertainty on whether or not you could rely on that data being there the next time you started your app. And although tvOS supported MFi devices right out of the box, there was a requirement early on that every app – including games – be playable with the Siri Remote. It makes sense that Apple would want people to be able to play everything without having to invest in more hardware, but many games are counterintuitive or downright impossible to play with just the Siri Remote.Apple goes on to rectify all of this – the size restriction is opened up to 2GB or something, and apps are given the ability to require an MFi controller. The Apple TV 4th generation starts at $149, higher than the previous generation’s near-impulse-price $99, and an MFi controller goes for about $50 so this starts to add up but Apple must have seen the logistical issue because they started selling a $200 bundle that included the Apple TV, a SteelSeries Nimbus controller, and a copy of Minecraft.Anyway, as much as I like Wolfenstein 3-D and DOOM on iOS, it is something of an unnatural union. Without an MFi controller you’re playing it with the touch screen which it does an admirable job of handling but it still wasn’t designed for it. And even with an MFi controller it’s still awkward unless you have some hinge or case arrangement that makes propping up the phone possible.

These games were designed to be played on a computer or TV screen (they’ve seen various console ports over the years, even to the SNES) so an Apple TV port would probably work really well.So, when I started this whole thing my goal was to get Wolfenstein 3-D working again on the iPhone and that was all. It didn’t build out of the box, there wasn’t an existing working fork on GitHub, so I started working on it. I had only given fleeting thoughts to maybe doing the same for DOOM. Once I got Wolfenstein 3-D finished, I decided to look at DOOM for kicks and when I saw it had some similarities to how the Wolfenstein 3-D port operated, I decided to do it too. See the previous article for the nitty gritty of the process, my initial confusion as to the two different repos on GitHub for the DOOM iOS port, and the disparity in user forks but the key takeaway was that I was able to get the DOOM port fixed quicker than the Wolfenstein 3-D port because I was able to leverage the work of others.Well, one of the things I had noticed when I was looking through forks of DOOM-iOS2 is that someone mentioned having it running on tvOS. I went back and found it’s by user yarsrevenge. He mentions someone online had DOOM up and running on Apple TV but didn’t share the source or release anything so he decided to take a swing at it himself.

Since there was actual work done for tvOS for DOOM already, I decided to start with DOOM and then apply the lessons to Wolfenstein 3-D. So I did a pull of the base version of DOOM-iOS2 and yarsrevenge’s latest version and did a diff in Beyond Compare. Using this, as well as the xib files he came up with, I was able to hunt down and make the same changes in my fork of DOOM-iOS (which, if you’ll recall, is a bit of a Frankenstein hybrid of DOOM-iOS and DOOM-iOS2).The first thing you have to do is add a new target to your project. Xcode has the concept of multiple targets within a project. There’s the concept of multiple projects within a workspace, which is analogous to Visual Studio’s concept of multiple projects within a solution, but I think the concept of multiple targets within a project is unique to Xcode.

So in the case of an Xcode project you would have a target for the iOS app and then you can add another target for the tvOS app, or for the Apple Watch app, or for a shared library. I added the target and called it DoomTV.For better or worse when you do this you don’t have the ability to say “clone what’s in the iOS target”, which makes sense since sometimes that’s not what you want to do, but it would have been a nice option here. I had to go through pretty much every file and for any that were in the iOS app target I had to check the box to have them be in the tvOS target as well. The interface for this in Xcode kinda sucks so it took several passes. I could just select everything and tick the checkbox for the DoomTV target, but for whatever reason header files don’t get added to targets at all (and it really gums things up when you try), and between C, C and Objective-C in the same project there were a lot of header files. The yarsrevenge fork featured its own set of.xib files for tvOS so I used those.

Wolfenstein 3d Wiki

Wolfenstein 3d wiki

This was a good call long term since tvOS can’t re-use iOS.xib files. More on that later.A lot of the work in getting the games working on tvOS was spent using macros. Apple includes a series of macros, the most useful of which for this was TARGETOSTV, so using #ifdef TARGETOSTV (or its opposite) was able to let me branch around code that was iOS specific, like accelerator code or screen orientation code. I don’t know for sure but I would think a game engine written for multiple platforms would handle this differently and there’s probably some proper computer science way of making the code handle differently for different platforms with polymorphic overrides or something less made up sounding but for the scope of what I was trying to do here this was the quickest/cheapest way to handle it.And even then nothing would build.

I had hundreds of warnings and errors for code that ran perfectly well on iOS gave me crap on the tvOS target. After getting frustrated with it for a few days I realized the issue was due to compiler options. There’s a set of target-specific options in Xcode for projects.

They take various forms but a number of them are essentially compiler options. A relatively new language like Swift has a few options. An older language like Objective-C has a lot more options. A language like C which predated pretty much everything and is truly platform agnostic has a ton of options. I had to compare the options for the iOS and tvOS targets and once I grafted over the stuff that was different in the iOS port, the tvOS port finally built.

It reveals that Krieg had previously engaged in vault hunter-esque activities, such as aiding the needy, and getting paid with loot. This is established by a fractured remnant of his psyche, manifesting itself as an inner voice in his mind. Borderlands 2 krieg voice lines online. The voice also seeks to control Kriegs lust for murder by limiting his victims to those deserving punishment. Though it is uncertain what caused Kriegs transformation into a psychotic killer, the game provides evidence hinting at an antithetical per-sonality in the past.

Sort of like, but for games and gamers. For example:. When does Game X come out?. Does console X have this feature?. How do I get the 'Kill everything' achievement?. How can I back-up my saves?. Why does my game crash on load?However all kinds of gaming-related questions are welcome.

Join our Featured Subreddits: (gamers fighting depression) Base rules:. Be descriptive with your title. When asking questions for technical help please try to give as much information as possible. Once your query is answered, use the.

Do not downvote any questions you think are dumb or simple. lmgtfy.com is not an answer. If you don't know the answer yourself but know of a subreddit that might, mention it. Try and search if your questions has been asked already before posting.is a good starting place to check first.