After much tweaking and a lot of attempts to camouflage images in a scene, I have completed the hidden objects game (the goal of a hidden objects game is to find a list of items embedded in a scene full of objects). I wanted to keep it easy since this is the tutorial and keeping the player invested is important at this point. I messed a lot with event handlers and had to constantly remind myself that this is prototype code and not code that I will ever ship, which is good because this code is gnarly and hacked together. However, I got a look and feel very close to what I hope to bring to the game so I'm happy.
So for the final I will be presenting the first third of my tutorial which covers:
- Title page
- Introduction dialogue
- Instructions for the first puzzle - hidden objects game
- First puzzle
Overall Experience and Lessons Learned
For something that was intended to be an exercise in learning Swift/iOS, I learned so much about HTML and CSS prototyping! I also thought a lot about the software architecture as I pieced the tutorial together, which will save me a ton of time for when I build it in Swift. However, in focusing on the technical detail, I moved away from thinking about the story of the game. I do have a lot of ideas about it especially given the feedback I got about wanting to play with other people. Something that people also asked about was what the payoff was for the player, so I have to think about that as well.
Here's what I learned from this experience:
- Prototype code is throwaway code: I knew this academically, but it wasn't until I built the prototype that it really hit home. Prototypes are meant to convey a basic idea, they will never ship. I mentioned this above, but as I was building this code I built it to be very modular. However, this doesn't mean I can't not comment. My puzzle file is incredibly tangled whereas most of my other files are pretty well documented and commented on. I made sure to keep my naming as clear as possible since I was switching between anywhere from two to five files at a given point, not to mention going from code to browser to test the code.
- The technology is great, but that shouldn't be the focus - I truly intended to learn iOS over this semester, but the concept I pitched was far more complex than I realized even though it's a tutorial. When I first pitched this idea, I thought that building a game would be a fun way to learn iOS. I didn't bank on loving Project Legend as much as I do, and I realized that I was actually invested in creating this game as well as learning Swift. The amount of moving parts in the tutorial range from different sensors to a dynamic interface, and I came into this not knowing Swift. I picked up the basics and can understand code examples, but I was doing it piecemeal by looking at samples of code that related to the technology I was trying to employ to build the tutorial - SwiftKit, CoreLocation, and Camera. Building my own code was like attempting to do a triathlon after learning to walk. I certainly learned a lot from following tutorials - Ray Wenderlich's Candy Crush clone tutorial for Swift was incredibly informative.
- Game design is an entirely different species of design from UX - and I really enjoy it! I came in with no game design experience. While my UX experience came in handy thinking about tap targets and interactions, game design and UX intersect very little. This class along with recommendations from other ITP students are why I'm taking Big Games next semester. This is intended to evolve into a multiplayer game, so I have a lot to learn about game design principles around that.
- Play test frequently - I really thought I wasn't ready to playtest this second time around, and while I could have built out more of the game to test, I learned quite a lot from testing the core navigation of the game. I was surprised by the results that I got because it was very different than what I expected since I mimicked interactions and layouts that I'd found in other mobile games I'd played. In the end I think I have a much better product. Where I'm at now with the final is a great place to do another round of playtesting since I have the prototype now available on device.
- Prepare for the worst, hope for the best - my project plan went sailing out the window the minute I knew I was blocked by my lack of Swift knowledge and pivoted to web dev. In doing so, I lost the opportunity to focus on the story of the game itself and what I wanted to do with it. I cut out a research trip to Merchant's House since I wasn't going to have time to write the story for the first actual quest. I think that'll be my first step
I want to play test the game up until this point to test a few things:
- Tap target sizes for the hidden object game
- Font readability
- Are the transitions too long?
I plan to build the next component of the game using the PhoneGap Maps plugin to direct the player where to go next in their quest. I have a few designs I want to try for the mapping portion.
In the long term I will have to convert to native development sooner rather than later since the AR portion of the game is probably better done natively than in HTML/CSS. I talked to a few people in Always On Always Connected and it sounds like I could overlay a p5 canvas on the camera to at least try and draw an animation on it. I don't know if it's possible or how performant it would be, but that's what experimenting is for!