Catching up with Week Three

Fail fast, fail early and fail often. And don’t steal images, so here’s the link

Prototyping Methods

I didn’t think that I knew much about the ideation process and how to get those ideas to prototype, but as I sit an review this presentation and think about it, I might be being a little hard on myself. That said, I would very much like to spend some time learning some other techniques but I will share what I do at the moment.

Why would I want to play it?

I start with this as I know that to go a really good job at something like this, I really do need to love what I am doing. That’s not to say that I don’t through myself into thing’s I don’t like if I have to but let’s look at the best case. Whats the reason I want to play it? I want to know this as I think that a lot of other design decisions come from the answer.

How should the player feel?

Should they feel in control, out of control, safe, threatened, excited, intrigued, and so on. In my short experience, the fewer things I am trying to implement, they better my chances that I could deliver.

What the main problem they are solving?

For instance, in Serial Link: Get out of the building, killing everything you have to. In the Hostage Rescue prototype: Get the hostages out, dont get killed. Keeping this in mind helps me to know if whatever feature or improvement I am considering is adding to that core issue or not. This conversation with myself or the other team members would be the one that should lead to the core mechanics and define the ‘what’ and ‘how’ of our player solving the problems.

What does the world look like in style or level of graphic content?

What should the thing actually look like on screen to match the other things that I have already decided on. I don’t have a lot of experience with art and artist’s in this area, as my level of skill has dictated that I spend more time looking at the core mechanics of the games I have worked on, but I think that might be changing now. I do try to draw some parallel to something I already know about though like, ‘it should look like Alien’ or ‘it should sound like Bullet Time from the Matrix’ that sort of thing. Its not a design although it does communicate what I mean at this early stage.

How close is it to the ‘real world’ or at least the feeling that its grounded?

I like grounded games. I like to see fantastical things but get the sense that, yes, that could sort of happen. Splinter Cell is a good example of that sort of thing. Although I am aware of rare occasions where one man has caused much enemy devastation, its not the norm. Sam Fisher makes it look like another day at the office, but the way that its presented for the most part, makes it quite believable. As far actually doing this? Its more by feel and gut I think but if I had to narrow it down I would say that its physics. I dont just mean thing realistically bouncing around in the level, but things like animations that look heavy enough, occluded sound, light doing what your brain thinks it should do, that sort of thing.

Using ‘User Stories’

I didn’t know that these had a real name, but it turn’s out that I use ‘User Stories’ to do most of the design work. I imagine playing the game and say something like ‘the player jumps over the wall while firing the small machine pistol at the mech in front. Black liquid spills from the multiple piercings that the rounds cause, forming globulous splatter patterns on the surfaces it hits. The player lands, quickly taking aim with the defensive measure he had in the other hand and throws it to the floor while shooting at the other threat in the room…’ There is lots of information there that would inform lots of different aspects of the design and would probably be enough to make a start on a prototype!

Bits and pieces

However, the above is quite high level and once you really start digging in, you can find that there are details missing that you really do need to know. This is where I might use a mind map and word association exercises. I really like a good thesaurus and I find it very useful to see key words or phrases expressed differently as they can send your thoughts of into places where there are more answers and ideas. Scope becomes the enemy here though as I often find that I am coming up with for too much stuff!

Other ways I could do it…

Theme, World and Story. This is not a way that I have explored design before as I think that I am much more naturally drawn to mechanics, so the user story suits me much better. This could satisfy an itch I have had for a long time though. I would like to write a little. I don’t know if I would be any good at it but as with most things, the more you do it the better you get. Now that I think about it, this really might be an opportunity to exercise that desire and see where it goes. I do have to be careful though as I am in danger already of creating a to do list that I know I can’t complete! I wonder though…

Slow boil approach. This made me smile because for me this is the ‘you don’t have time now because you have agreed to these other bazillion things you have to do, so when you sitting on the loo, you can thing about this one…’ Now I can rest knowing that there is a proper name for my lack of execution opportunity! Although there is that part about the research… I like my version.

Creating something based on an existing Intellectual Property. I have never done this so my opinion is just that about a relevant as a guy who is considering these things and reflecting on them… Wait a minute…

IP and trying not to get sued

The best ‘pro’ I can see is a ready audience and a very well defined set of expectations. Having tried already to make a game (and continuing to) I think that one of the biggest challenges is the ‘what is it’ one. With Batman for instance, we know what that is, we can relate to what a game about Batman should be like way before we see a single frame of the finished piece. This is reassuring to the money people too as they can measure customer interest in such a venture much more easily.

The worst ‘con’ is almost exactly what I wrote above. The customer has a notion of what your thing should do, how it should do it, what it should feel like and so on. As far as the developer goes, its not really ‘your thing’ at all. I suspect that when developers are working on title that are backed by an existing IP, the scope in which they can be creative is reduced so much that to some I can imagine that its quite a limiting and choking experience. But if you want to turn a con into a pro (and I like doing that) then if this kind of project is in the hands of developers who already are one of those customers, one of those fans, then they should know just what to do with it. Assuming that they are competent developers that is. Like me. Ha! Well, Im trying to be…

Its ok John, I didn’t just take the image, the link is here

I do have an IP based project in mind that I would love to work on. John Wick. I would love to (and probably will) tackle the puzzle of just how to make the player feel like John Wick. I would like to isolate sequences from the movie and come up control systems and mechanics that would allow the player to recreate them in game. It would be a huge project really but I think that it could be broken down into something that could be started… I have a couple of ideas already about how I might do about implementing this but that’s for me and little brain right now. Further to this, I have just come across the part of the presentation that talks about using a ‘Requirements animations’ or ‘Ripomatics’ where you take footage from movies, game, television or music to outline what the game should do or how it should feel while the player is using it. The movies are the obvious place to draw this from, its just nice to know that there is a term floating around to covers it.

Increasing the number of iterative cycles

This is a very important lesson I think. Making sure that all the areas of a game (as thats what Im here to make) need to be equally developed as much as possible. By that I mean that if the game has buying, selling, swapping and item storage as core gameplay mechanics then I really like to make sure that there is one single active goal in each one of those areas. In an ideal world, or development session, I try to complete the task in ‘buying’ and then move onto completing the task in ‘selling’ and so on. Sounds simple but how many developers struggle with ‘feature creep’ and in particular feature creep within some narrow scope? It used to happen to me all the time. The first time I tried to solve it was to list all the major areas of the project including the traditional ones like animation and audio and so on. Then I listed all the areas that were specific to the game I was making. So, in Serial Link they were something like

  • Shooting
  • Psi Powers
  • Soldier AI
  • Squad AI
  • And so on…

Then I had just one thing that I would want to get completed in that area to move the game on. Once all of the tasks had been completed I would move onto a second cycle. Any other ideas, and lets face it there are always ton’s of them, were recorded in a kind of Idea Dump. Then that could be used to populate the next cycles tasks in the various areas. However, there was the problem that you (the developer) could still choose what you wanted to work on in any given session as there were many, many active tasks. That lead me to Kanban.

Calm down boys… Image from here.

Kanban is the most complete development tool I have found that fully supports the idea of iterative development although I don’t think that it looks like that from the outside. I think one of the biggest challenges that I have faced and still do really, is making sure that I deliver complete features at a time. There is a version of Kanban that was presented here and its just a little different from the Kanban information that I had come across before in that there were three things that he did a little differently. The first is the Work In Progress (WIP) limits that stop work being pulled from the right of the board relentlessly, killing the boards ability to provide focus. The next is the inclusion of a ‘finished’ sub-column within each of the main column’s. This is a great addition as you more clearly see where the hold ups in the project are happening. And the last one is very clearly defined ‘Done Rules’. This is the part that makes sure that work does not slip through that is not to the right standard. Having the done rules stated clearly leaves no ambiguity when the team member is deciding whether a work item is done or not. Having a ‘build’ column with a small WIP is the key to making sure that the project is being developed in iterative cycles. That combined with making sure that tasks are being selected from across all the areas of development like I talked about earlier makes sure that the whole thing is growing and not just certain (using the developers favourite) parts. So that takes care of the ‘prototyping’. Having another column called ‘User Test’ with a small WIP (like one or two) will only allow a small number of builds to happen before the project must be tested by some defined audience. That audience would depend on what the project is and how far through it the developers are.

There isn’t a scrum part to this thinking… I just really liked the image and thought it close enough.

I have no other plans at the moment on how I can improve my ability to develop in iterative cycles aside from the constant refinement of the ideas and tools that I am already using. If I sense that they are not sufficient for some reason, or I inadvertently come across information that makes me question my approach, then I will respond to that.

Becoming a YouTube sensation. No, really…

Just a quick shout to say that I have set up a YouTube channel and that’s how I am going to show the progress of the game jam. I will be posting a full update soon as I am now 11ish hours in and am pretty pleased with where I am with it. As I’m on the ‘pauper’ plan here at WordPress, I can’t put the videos on here, but they seem to embed just fine. Here are some links to the channel and there are 5 videos on there at the moment. I don’t expect you to actually watch them, I’m just saying that they are there… 😉

Comparing Performance Parameters of Mobile App Development Strategies.

Wow, that’s some title. This paper is more than I need, simply put. Considering where I have come from in the recent period of time and the fact that I still feel that I am on the back foot with just learning how to code properly, I don’t think that the milliseconds of delay caused by launching an app using a virtual machine are really the main concern for me right now. I am starting to appreciate the open nature of the course and the fact that I am being encouraged to find out what I need to focus on and get to it. In that light, this is too performance specific for me to spend a lot of time on. I’m not one pretend to have looked through things I have not, whats the point? So, I just wanted to put a short post here to say that yes, I did look at this material and scan enough of it to know that its way down there in the details and the numbers. I am more interested in putting time into understanding good program design and learning the vocabulary of game design and implementation.

*Update

I might be completely wrong here. Its possible that this is exactly the right time for me to look at things like this. After some reflection over the last day, I came up with two reasons why that might be. The first is that yes, I am at the beginning of the journey and so I am not tied to any one way of doing things when thinking about mobile app development. I still have decisions to make and should consider as many factors as I can. I think that the root of the real issue for me is there. ‘As many as I can’.

I think that I feel a little overwhelmed by things at the moment and I have learned to take that feeling seriously and solve it in a practical way. The way I tend to deal with it these days is to actively downscale what I am doing, focusing in on the things that I know to be important and reducing my attention on things that I think are important. So, while I know that I need to learn another language, I think that there are more obvious considerations (and only limited space for them) like the popularity of particular languages or, more importantly for me right now, which languages work with which game engines. I’m not saying that I am right in seeing it like this, just recording that is how I’m thinking about it. The popularity angle leads to Java, JavaScript and Python (depending on the source) and from the game engine perspective it’s just C++ and C# for the engines I am interested in (Unreal and Unity).

The second reason (remember, there were two…) is that I am interested in making games and they are notoriously demanding on hardware. In that light, I should really be paying some attention to the details of how they perform given different platforms and so on. Maybe I’m just a little flustered, and I do tend to take things very seriously, although my writing style often suggests otherwise. I may come back to this article once the App Jam is completed as I feel that is going to be an intense task over the allocated 48 hours.

I also don’t want to appear dismissive of the recommendations from the teaching staff as its obvious that they put these resources together for good reason.

Remote Paper Prototype Testing

Paper prototyping is one of those sensible, low cost, low-risk activities that I rarely (if ever) do. It’s funny really, as in thinking about the content of this post, I can think of more than a few examples from the Serial Link project I am working on, where a simple paper prototype may have cleared up communication issues between team mates and possibly identified other less obvious issues.

This is one way to test things out and make sure that you have your thinking straight.

I seem to have itchy fingers when it comes to implementing ideas. I get some thought and think ‘yeah, that would only take this and that and then a little tweaking and it would be there…’ Four hours later, having usually had some fun, I find out that I have designed (I use that term loosely) and implemented things in a way that makes the next obvious improvement to the idea difficult or impossible without structural changes to the implementation I have already done. I have learned to think more thoroughly about the possible extensions to whatever idea I am having and I have on occasion, mapped out the logic that I intend to use. I know that software development is iterative, but I know that I have had times where another ten minutes with paper and pencil would have saved me two hours in Unreal undoing and redoing logic to facilitate something that I really could have seen coming. I am getting better at this though.

Gameplay prototyping

I suppose that my first thought about how to apply paper prototyping to the Mobsters Vs. Barbers concept comes more in the form of a storyboard but maybe I’m missing the point. I’ve just had a shower instead of sitting here overthinking this (I tend to do that). A couple of things occurred to me. The first is that it’s obvious that paper prototyping is worth doing and the second is the reason I have been slow to catch on to it. I’m immature. As a developer I mean. I am only now having experiences that seasoned coders would call ‘fundamental’ (probably). I’m talking about Edge Case Thinking. I totally just made that up but I think it sounds pretty cool so I want a pound every time someone says it. Its that part of you that has spent three hours on the edge cases of a simple task like ‘play a clattering sound when the weapon hits the floor’ because you’re still learning what the problems are as well as how to solve them. Ok, what if the sound is already playing? What do you mean by ‘Floor’ in this context? Should it just play once? But what if it bounces? Should it play when something hit it? What if it just moves a little bit? Play the whole ‘I just fell six feet’ type sound? Should I track the velocity then? Is that expensive to keep testing at run-time? Should I use continuous collision detection? Shouldn’t all this really be in a base class? Oh my, I should redesign the weapon implementation to use class hierarchy! Geez, all I wanted to do was play a sound.

Get to the point

The point is, sometimes when I think something will take a few minutes it doesn’t. Experienced developers know this. I think that they would be the ones that say, ‘hey, lets not worry about all the if’s and but’s and lets just draw this on a bit of paper, assume we can work the details out, and see if we still like the look of the basic thing that this feature is supposed to provide’. That would be a very mature thing to do.

And so, with that in mind, I would apply this to the Mobsters Vs. Barbers concept by mocking up each screen initially, menus and so on, and then every major action in the main gameplay loops for each of the teams. Then I would ask some testers to have a couple of goes at it and see what they said. I think that the project would be so very early in its development that just listening to the first thoughts that your testers have would provide more feedback than you could implement. I would worry that more complex games that relied on multiple game systems would be very difficult to test in this way, if not impossible so I would reserve this for sections that are easily contained (inventory traversal for instance) or games that are very simple like Cut The Rope and so on.

I must admit that I didn’t really understand what the ‘remote context’ part of the question meant. If it was along the lines of ‘how are you going to test this remotely as the testers are not in the room’, then that sounds like a video chat, but that would just put a boundary between the player and the prototype. There is no location-based functionality like GPS in the idea that I described so I would hazard a guess that I would not use a remote context at all.

Design an app with Android App Inventor

Next up for me is this short lecture on Lynda.com where I hope to have a couple of bubbling little questions answered. I have never looked at App Inventor so I am interested to see how is does its thing (I’m already pretty clear about ‘what’ it does and its kind of in the title!) The interesting part about this is that it’s not just a learning tool like Scratch but is a tool that can be used to develop things you intend to deploy.

I have just learned that this is a thing.

So, the reason to watch, read and otherwise consume these learning materials is to, well, learn. However, I am still finding lots of things that I have not heard of, don’t know about and am interested in. The problem that I am experiencing is that everything that I’m coming across looks like something that I want to spend some time with only there is not enough time. This feeds right back into what the Doc was saying in the introduction videos. I need to be clear about what I want to do and then branch out (little programming joke there…) into areas that strengthen and compliment that. I am really trying to get through all the recommended reading and watching though, as I need to be as sure as I can be that I am indeed making the right choices when I select what to focus on. I still know that its C++ and Unreal but there is a nagging part of my mind that is telling me to become proficient with something that can be used for mobile development. Something easier than C++ though, as I’m sure that could be used.

Ah, well, that kind of answers that then

I really like the way that App Inventor allows for such rapid deployment onto a test device. I was not expecting it to be that straight forward. A little setup and a QR scan later and there is a cat on the instructor’s test device.

I’m not much of a cat person, I must admit…

This is pretty cool and I hope that there are other development environments that use this so that when I do (and I think I will have to) get round to doing some mobile device development I will be able to test the deployed version this easily!