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!

Serial Link Development Session, Pt 2

Having settled down after the disappointing journey through better firing animation additives, I am pleased to say that another idea I had has made a big difference to how the weapons feel. I had been playing with the camera shake actor so as to add some, well, camera shake on the firing animation. However, I found it to be quite a limited way of doing it and in need of lots of number tweaking and so on. It was not until I went downstairs to nuke (microwave) my coffee that I really thought about what I was trying to do. I had noticed that the aiming system was not responding to the camera shake as I hoped it would. So that meant that what I was really trying to achieve was weapon kick. So, that’s really just messing with the mouse inputs right? Right!

Updating the kick and paying attention to the user’s skill with that weapon too.

Above is the little blueprint that I settled on for now as it addresses most of the goals I set. I wanted a way to jerk the player’s camera around to simulate firing a weapon. I also wanted it to move over more that one frame so as not to look too snappy. Finally, I wanted the players accrued skill with that weapon to influence how much it kicked. After a little tinkering, it worked as expected.

Serial Link Development Session

I thought that I should really document my current set of challenges and how I tend to go about solving them on Serial Link as this is really where I have/am cutting my teeth as a game developer. So today, I am looking at getting the firing animations looking MUCH better as it could be said that using the guns in the game at the moment feels a little unrewarding. That’s bad news. The good news is that there was a time when I have the additive animations all working really well and the set up felt much better. The thing I changed (and it was the right thing to do) was to start using animation montages and the slotting system that they employ. From there, I just don’t think that I had to time to get the additives working as well as they need to. This feeds back into my goal on the course as I think that after some thought I want to be a solid generalist with an emphasis on logic and coding. I feel this way because I have discovered that yes, I do want to know a little bit of everything right now. Maybe I am just new to development and have not hit my stride yet but I don’t think its that. I want to be able to make games and I don’t want to have to rely on others for core pieces of that process. I mean, I like relying on others and I like working in a team (particularly with people that are smarter, more skilled and so on…) but I’m straying off topic.

So I thought that the first stop should be the Unreal Docs. This is the section that I am following.

I have started paying a little more attention to the Unreal Documentation as it really is unreal. See what I did…

Having followed the documentation, the first thing I noticed is that I am using an additive animation for the firing and while I do think that’s what I need I also want to follow the steps. The problem now is that I am getting a very exaggerated firing animation when the character is pitching up or down and a lukewarm version when looking straight ahead.

Ok-ish
Super trigger happy.
And again, very keen.

The other thing I am noticing is that the animation jumps in the direction of the neutral position. This is telling me that the animation is not adding to the current position of the bones and is trying to return to bones to the positions defined within the firing animation. This is where terms like mesh space and world space start to trickle into my head and I realise that I don’t really know what they mean (although I have an idea) Anyway, the documentation I have been following has concluded and not shown me what I needed. Onto…

I need to go back to some things and make sure that I really know how they work, this is one of them.

You can find this documentation here. Already, I feel more comfortable about what I am reading having had some experience now. It’s funny coming back to some of the things that I just followed tutorials for a year ago and just barely understanding what I was doing, to being able to read things like this and recognise lots of the content. Progress I think they call it.

Ah… (think evil guy finding the hero’s weakness…)

Could be just what I’m looking for.

I seem to have gotten to the end again without a solution. I’m going to choose the next content I read a little more carefully.

That’s more like it…

This one looks a lot more promising! You can find it here. Ha! No, not at all. I didn’t think it would be this time-consuming! Hang on just… one… second… I have a Udemy course from yesteryear that should remind me how to do this!

This was the first course that I learned from when I first decided that I wanted to be a game developer.
That’s more like it, that’s the one, insert generic ‘found it’ lingo here.

Ok, having watched this material again, I think that I am overlooking this. I took out the additive form of the shooting animation that I had put together a long time ago (following this course) and thought I should be using the ‘raw’ animation in the montage and then adding it in some ‘additive animation’ sort of way, in the animation graph. However, after much to-ing and fro-ing (take that Grammarly!) I have returned the montage to the original state of using an additive animation. That cleared up the imbalance between what the animation was doing depending on the aim angle but was still giving me a lacklustre shooting performance. And then (oh my) I noticed that the blend time was 0.1 in and out or that animation. But wait. That animation is only about .2 of a second. Could it be? YES! (rage, not Eureka) that upon changing it to 0, so that there is no blend, the firing animation has much more bite, while staying ‘additive’ as intended. What a painfully long-winded lesson to learn…

Mobile App Design and Prototyping Lecture

This will be new to me really as although I have a very small amount of experience in Photo Shop, I have zero in Adobe After Effects. I used to run a commercial website for my clothing shop in London and I did the product photography for that, so the only skill I needed in Photo Shop was cutting the shots out to apply a white background. Very exciting stuff (yawn…). This lecture will be worth a look for me!

Already, I have learned a new term. The ‘Connect screen’ which is the very first screen that the user is going to see. Then, an introduction to a cool site that I never thought would exist but could be very useful to me! Subtle Patterns. I think that I could use this for game development although I would need to check the licensing first.

Learning a little about layout and PS

I have been thinking about buying a graphics tablet for a little while now and although that’s not needed in the lecture that I am watching (not yet anyway), seeing these simple things explained is making me want to take image creation a little more seriously. The only thing is that there are only so many hours in the day! I am a sucker for focusing on too many things and that is only just calming down for me now in my old age so I need to be vigilant so as to not catch the ‘Im the exception’ bug, and think I can do everything! Another outstanding term learned… Hamburger Menu, excellent 😉

Although I don’t have Photoshop and frankly I don’t have the time today to sort that out and follow along with the lecture, it’s very enlightening to watch the presenter use all the tools and settings that to the layman (me) looks complex and overwhelming. It’s obvious that he is very skilled and I am learning a little about how to visualise the work that he is doing. I mean that in the same sense that I have experienced with coding. The most important part of learning to code does not seem to be learning the syntax and so on, but more learning how to think about the problem you are solving. I am enjoying watching him compartmentalise the structures that he is creating and gives me an anchor to hold onto when I do take to plunge into image manipulation.

The Scary Panel. Also known as the Layer Confusion.

Watching the presenter prepare the PS document for importing into AE, it became clear that it’s so important to learn from someone that has ‘been there and done that’ as often as you can. All he is doing is merging elements of the PS design into fewer, logical groups so that when its imported to AE is much less clutter to deal with. If only kids knew how expensive in time, effort and often money, it is to ‘make your own mistakes’ they would listen more to the people that have already walked that path. I know that what he is showing in the lecture is trivial but the first thing I thought about was the hour that it cost me trying to edit text on an Unreal UI widget. I didn’t know that I needed to make the widget editable, clicking on a checkbox. Experience is worth so much and any way to accelerate its acquisition is worth exploring.

A nice animated mock-up of the app.

I really enjoyed watching that and I am comfortable that some of the things that I have been learning in HitFilm will translate well into other applications of a similar type. Watching the content on keyframe animation and having had a little experience with that both in Hitfilm and Unreal I am keen to get my hands on Maya and try my hand at character animation. I feel that one of the areas most lacking from Serial Link is custom animations that could really show and emphasise what’s going on.

Thanks for reading and if you got this far, stand up and stretch your hamstrings.

The Atomic Animation

IBM in atoms.

I left off on the last post having found out about an atomic animation. I have to talk a little about that! I just had no idea that we are at that level, which is a little naive really considering the atomic bomb and the Hadron Collider. I am watching a little ‘how they made it’ video on YouTube which you can get to here.

The short documentary talks about how they achieved this incredible task in which single atoms are moved across what looks like a mesh of ball-bearings that I presume are other single atoms and in reality a perfectly flat surface. First, the whole scene must be in an environment that is -260 odd something degrees Celsius so that they stop moving. The researchers are then able to use a machine that houses magnet to very precisely move a single atom across the lattice-like structure so as to shoot another frame of animation. The researcher talks about being able to actually hear the grinding and the thud of the atom moving! That sounds pretty dangerous to a ‘normal person’ like me but the fact that IBM has not been blown to bits at this time (and yes, a quick Google confirms that…) tells me that they know what they are doing.

The machine used to make this tiny masterpiece.

Its the scale of it that just blows my little mind. The image is seen through a microscope that zooms in 100,000,000 times. A hundred million. He also says that if an atom were the size of an orange, then an orange would be the size of the Earth.

Moving Atoms: Making the worlds smallest movie

Of course, it’s not about trying to build a tiny competitor to Disney. The research team are trying to figure out how to leverage the techniques to build new technologies. They are confident that should they master it (and I think they will, given enough time, money and imagination) a regular street walking dude would be able to carry every movie ever produced on his iPhone (or cheaper, more flexible Android superior, I mean competitor).

Serial Link Update

Dramatic title shot… Groovy.

Explicit content and language. Cool? See it here

This project is one of the first games that I have ever made and certainly the most developed of any that I have worked on. It began life on the BA Top Up course I did when I had decided that I wanted to try my hand at game development in September 2017. It was the Honours project and had our attention for two terms, along with other projects of course. Since then I am a small team of people of part time collaborators have been working on it in the hope that we could get something good enough to launch a Kickstarter with and in the process become paid to make it! That would be incredible.

I wont go into the narrative here, just have a look at the video and please do let me know what you think. I already know that the audio needs to be re-balanced so please do not play it too loud!

Special thanks to Simon Felix who worked on the PS4 title Shift Quantum for composing the music that is now the Serial Link theme.

Week 2 – Working some things out.

I am only just now (Wednesday) getting to week 2’s work as I have been working hard on what will end up being a promotional video from my game Serial Link. If you don’t mind blood and foul language (I think it will end up with an 18 certificate) then, by all means, have a sneak peek at the edit that I have sent around the team and the collaborators here. Just watching the introduction to this weeks material, I am grateful for the slow and steady explanations about some of the choices that I will need to make. I must say though that my instinct at the moment is to stay relatively tight in my choices to focus on C++ and the Unreal engine but that could be just down to the fact that that is all I have been using since July 2017 when I made the transition to wannabe game developer. That said, Michael Scott’s advice is to identify the best tools for the job and the job for me right now is making games. However, I am curious to see if I have made the right choice in using Unreal and C++ but I worry that if I have not, would it be sensible to jump ship and use Unity and C# (I think)? I do want to be able to ‘throw’ together a couple of apps though like my own time and task manager and a touch typing program that’s more adaptable than ones that I have used. I think that the overall conclusion I have come to just from the introduction is that he is promoting a ‘minimum standard’ in the breadth of knowledge and frankly I don’t meet that at the moment. I’m looking forward to exploring things and deciding on what to focus.

Hammer Time

I like the quote in this next lecture ‘It is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail’. Hmm, that is a good way to look at only knowing one language. Also, I think that it is becoming clear to me that C++ is quite a heavyweight language and it’s possible that I would benefit from learning something that is a little more straight forward at the same time. I must not abandon C++ however, as it is tightly related to the goal of working in Unreal at a lower level than Blueprint, as marvellous as Blueprint is!

“Beginners should stay away from C++” Great. Well, I do like a challenge…

Many, many years ago (it feels at least) I was introduced to Java and its the language with which I started to understand the object orientated paradigm. I like OOP a lot, it seems to sit in my mind very easily, much more so than procedural programming. Although not being very skilled in either approach, I suppose that it may be too early to tell really. Objective C seems to be the one to learn if I want to develop for Apple and at this point, I assume that you can use it for Android development also? Would have to have a look into that. I think that not taking mobile development seriously, at least for one project, would be a mistake and I do hope that the desireto create PC style games subsides enough at some point in the future to allow me to consider this.

‘I’m Snakebite, I’m your only man… ‘ Alice Cooper.

I would really like to have a good look at Python and I have a very close friend who is very skilled with it that could chaperone me through any pitfalls in order to help me become more productive with it sooner. Python is a good bet for me really. I wonder if coming from learning C++, I might slip into it quite easily? I would just have to try it out I suppose. And Assembly language? Yeah, I don’t think I will be touching that at the moment…

What should I stand on? Platforms.

I think that I am in right place with this aside from needing access to the PS4 development environment for Unreal. I can already aim for deployment on the PC as that’s really a given as the vast majority (if not all?) games are developed there and I know that I could turn my Xbox One into a development machine in order to deploy Unreal projects to it. But, I would really like access to the PlayStation 4 as it has an install base that far exceeds the Xbox One (as I understand it from the general gist of what I’ve read). When I last checked, it cost around £2,000 to get that access and I just can’t pay that at this time. I wonder if that is something that we should roll up in the kick starter for Serial Link should we get the chance to launch it. I suppose that the other thing I need to know is how to develop for mobile in the most flexible way so that I could release content on both IOS and Android without having to create two apps. I am almost certain that I would not have to do that, but its only being on this course that is making me think about it at all, so I have never looked into the details of developing for either platform. I do know that Unreal can be used to deploy to mobile, and knowing that its C++ driven, does that mean that mobile apps can be developed in C++? More mobile questions…

Atomic Movie! That’s incredible!

I had no idea that this had happened. As soon as the clip in the presentation was finished I went to find the animation and was just blown away! I can barely comprehend the scale of this work and need to watch the short documentary that explains how it was done!