Starting up: Three key pieces of advice

This article was originally posted on Microsoft.com here. I’m reposting now for my own followers and for anyone interested who missed it the first time!

Starting up: Three key pieces of advice

Since starting a business I’ve had a few people ask me for advice and information about how I got started, and what I wish I had known beforehand. To help out those people, and anyone else who is interested, I’ve put together three things that I think are really important to know before you start your own company. Two of these are applicable to any new startup, and one applies to software companies (but it’s so useful that I wanted to mention it all the same).

Nobody gets paid straight away

We knew that it would be tough to get paid, but we thought that finding the contracts would have been the hardest part. It turns out it isn’t nearly as difficult as being paid enough to stay afloat.

Let me give you a typical example of successful contract. If you count ‘day one’ as the first meeting or phone call about a potential project, it’s generally been another month or so before finalising details, another few weeks before everything is signed, sealed and invoices sent off, and then another 30 days before you should be paid, but probably another 10 or 15 before you actually are. That’s up to 4 months after the initial talks before you have any money, which will just be the initial upfront payment of your project.

This is obviously not the case for all contracts; some can come together very quickly, some can go through 8 months of negotiations before collapsing at the final hurdle. I just want you to be aware that just because something has come up doesn’t mean it will come together quickly. A good way around this is finding what kind of projects you can do quickly and to a high standard, and keep an eye out for those projects. Web design, small apps, or quick demonstrations, people always want this kind of work and the projects are (usually) small.

Low overheads are the best overheads

If you can keep your business costs to an absolute minimum, you will be able to make your money stretch as far as possible. If you have to fork out every month for rent, equipment, a bank account, bills etc., you are going to end up with a payment you can’t afford to pay, and then things will start going very badly as you are forced to borrow from people or take out loans. Keeping your overheads low by doing things like using your own equipment, getting a free bank account and using free hot desking space (or your own office) means you can not only predict how long you can last on the money you have, but also make the money you do make go further.

Get Bizspark

If you are making your own software (which includes video games), have been operating for less than 5 years, and have a website (plus a company email address to go with it), you probably qualify for Bizspark. If you used Dreamspark as a student (and you really should have), you will already be familiar with the setup. For those of you who didn’t or cannot remember, Bizspark is Microsoft’s own way of giving back to businesses by allowing them to get most of their software (including the latest versions of Visual Studio and Office), as well as services, tech support, and access to the Azure cloud, for free. Buying industry standard software can be a massive expense which startup companies don’t need, but the Bizspark programme can really help to alleviate some of those costs.

Those are just three key pieces of advice I’d give to anyone thinking of starting a company. If you have any other questions, check out my company @BetaJesterLtd and feel free to tweet me any questions you might have!

Advertisements
Posted in Microsoft Articles, Starting a Business | Tagged , , , | Leave a comment

Microsoft UK Blog – Why you should become a Microsoft Student Partner

This was originally posted on Microsoft UK Developers under the title “Why You Should Become a Microsoft Student Partner” at http://www.microsoft.com/en-gb/developers/articles/week03sep15/why-you-should-become-a-microsoft-student-partner/

Article Image

Students, now is the time to apply to become a Microsoft Student Partner for 2015/16. I’m writing this article to let you know about my experience as a student partner over the last the year and hopefully convince you to apply. The story comes in three parts; where I started, where I tried, and where I succeeded.

The story starts at the Global Game Jam event in Hull in 2013. This was the first time I met Lee Stott, a Technical Evangelist at Microsoft UK. He was representing Microsoft by supporting indie games development at the Hull branch of the competition. The fact that he was at this small competition showed to me that Microsoft was committed to helping students and indie developers alike. This was what first got me interested in the Microsoft Student Partner program.

Later that year I applied to become an MSP in the form of a Windows Games Ambassador. Sadly, I didn’t get a position but it did mean I got to watch two of my good friends become MSPs and take part in events across the country. They both came back from each event to tell me of the experiences they had had, the people they had met, and how much fun they were having. I knew they were incredibly good developers in the first place, but it was great seeing them achieve even more, with one of them getting a job at Unity and the other now doing cutting edge research at the University of Hull.

Article Image

In 2014, building on my experience of applying the previous year and having kept a close eye on the program, I applied again to become an MSP/WGA. This time I was successful, and so began an incredible year of opportunities to network with the best in the business, teach coding to students and school children, and meet gifted and talented students across the country. I got the chance to work with some great people and go from being just another computer science student to a graduate with excellent prospects and real world potential. Not only that, but my work over the year meant that I was chosen to be the Microsoft Student Partner of the Year in the UK for 2015 (but I’ll talk more about that in another article).

It’s not really a case of telling you why you should be an MSP, the real question is can you afford not to apply? With the networking opportunities, the chance to work with other students at the forefront computer science, and just the fact that having “Microsoft Student Partner” on your CV can open so many doors and put you one step ahead of the competition, not applying should really be out of the question.

My name is Adam Boyne and I’m the director of my own video games company BetaJester, and I wouldn’t be where I am today without the knowledge and experience I have gained by striving to become and experiences being a Microsoft Student Partner.

Posted in Uncategorized | Leave a comment

Windows 10 and the ‘HoloLens Academy’ – A Game Dev View

I wrote an article about my time with the HoloLens which was posted on Microsoft UK Developers. I wanted to post it here as well in case you didn’t get a chance to see it.

Link to the original – (https://www.microsoft.com/en-gb/developers/articles/week04aug15/windows-10-and-the-holoLens-academy-a-game-dev-view/)

I recently got the chance to go to Microsoft Headquarters in Redmond, WA and experience the “HoloLens Academy”. This is where Microsoft staff take you through a tutorial with the HoloLens and show you how to make a simple app/Hologram (can I coin the phrase HoloApp?).

The HoloLens itself

The many years, companies and parts that have gone into the circular architecture of the HoloLens helps form one beautiful piece of tech. It’s not too light and not too heavy, and sits very nicely on your head so as not to place pressure anywhere unnecessary.

As I went through the various elements of the tutorial, the real genius behind the design begins to shine through. The cleverly positioned speakers provide 3D audio over the top of real world sounds, allowing me to figure out where my holograms were just by listening.

The holographic display, centred on your vision but not all consuming, allowed me to see objects in the real world. And when I say this, I mean the objects which I had been able to create and place in the world in less than an hour, but more on that later.

You still retain your peripheral and general vision, so the integration of the virtual world with the real world is almost seamless, and at times you do find yourself believing the holograms are actually real, but what really makes you believe the holograms exist is the way in which you interact with them.

Interaction

Because you essentially have a computer on your face, any gesture that uses your head can be passed into the HoloApp (phrase coined!). This includes gestures such as gaze, finger recognition, and voice. The HoloLens is constantly sending information to the application about all these features, and all of them can be used to interact with the virtual world.

HoloLens, Windows Holographic and Windows 10 can recognise these actions and allow you to react to them in code. For example, an object can be made to follow a person’s gaze around the room. More impressively the HoloLens, powered by Windows 10, can recognise voice or, more specifically, keywords set up in the code or at run time. This incredibly powerful tool means you can detect when and if a person has stated a keyword or phrase, and react accordingly.

Windows 10 will even give you the level of accuracy to which it’s sure the person has said the keyword or phrase. The HoloLens also recognises finger based gestures, with the finger-down-finger-up action becoming a staple gesture in the HoloApp experience.

Ease of Design

The thing that surprised me most about making an app for HoloLens was how easy it was. I’ve been making VR apps and games for around eight months now, so I’d like to consider myself as somewhat experienced. Yet creating a HoloApp was considerably easier.

The only “HoloLens” part of the development which was different to usual Unity development was using a different camera to the standard Main Camera. Other than that HoloLens made everything simpler.

There was no need for complex or graphically intensive skyboxes; the skybox is now the real world. What that means is that I can focus purely on the development of the hologram and how a player interacts with it, as well as the quirks of design that could really get a player invested in the HoloApp, instead of worrying about the design of the background.

It’s especially worth noting that a lot of VR development goes into improving the player’s sense of immersion in the virtual world, but with the HoloLens the fact that the virtual world is a part of/at one with the real. Your mind allows itself to believe the holograms are real, that they exist.

It’s this aspect of HoloLens that really give HoloApps a completely different and much greater sense of immersion compared to what I’ve experienced before. That, partnered with how easy it is to create a HoloApp, makes it a lot of fun to develop for.

Holographic Magic

The final thing to mention is something Microsoft likes to call “Holographic magic”. The thing with a lot of the holograms is that they are small objects in the world. They have height and width and depth, but they still sometimes feel a little alien.

Where HoloLens comes into its own is when the holograms involve whole areas. For example, the “Holographic magic” section of the academy involved blowing a virtual hole in the floor of the real room, revealing a holographic world below; with rivers and hills and real complexity.

When the holograms you were playing with before fall through this hole and down into the new world, you actually feel like it is there, as though if you stood on the hole you would fall in. And that is the magic of HoloLens; bringing your imagination and creativity into the real world and making you believe it could actually be there.

I haven’t covered every detail so I’m happy to answer questions about my experience (I’m on Twitter!). But these are the key aspects that I think should show you how exciting a prospect it’s to be able to develop HoloApps for HoloLens and bring forth new and exciting ideas into the real world.

Posted in Uncategorized | Leave a comment

Off to Seattle!

Evening all, just a quick one!

About a month ago I was chosen as the Microsoft Student Partner of the Year UK and as part of that I’m going to Redmond, WA tomorrow to visit the Microsoft Campus as part of the MSP Summit. While I’m there I’ll get to check out Tech Ready and the Imagine Cup finals! I’ll be posting all about what I’m doing here, on twitter, and on MSDN so keep an eye out for what I’ve been up to!

In the mean time I’ve got a few blog posts I want to write about what I’ve been up to recently and how BetaJester has been getting on, so keep checking back here for more info!

Happy coding!

Adam

Posted in Uncategorized | Leave a comment

How to Use Custom Editor Scripts – Unity

While I was making a script for a game I’m working on, I realised that most of the public variables I had were conditional on other public variables being true. Now, while this doesn’t matter in the grand scheme of things, I knew it could mean that one day someone would be continuously checking and unchecking a tick box with nothing happening. Having been on the wrong side of that situation many times, I decided to investigate whether there was a way of making the visibility of a public variable in the Inspector conditional. Fortunately, it turns out there is in! Custom Editor Scripts, one of Unity’s most powerful yet most unseen development tools, allowed me to do just that.

If you’ve ever downloaded an asset from the store and found it had some fantastically fancy panel in your Inspector, or just noticed the difference between say a material and a collider, you might have wondered how you could do this with your own work. Today I’m going to show you how to make a simple custom editor script which includes a conditional, then set you on the path to find out how you can do some of the more impressive GUI tricks.

Firstly, you need to make a folder called “Editor” at the root of your project, in the base Assets folder. This is because Unity is set up to look for custom editor scripts in this location.

Secondly, you need to make your script. You can do this the normal way, but I recommend calling it something like “the script your making an editor for” + Editor, so for a script called “YourScript” I would call the custom editor script “YourScriptEditor”.

When you open your new script it will look like any other script, but because this won’t be like any other script we have to make some immediate changes. Delete the Start and Update methods, replace “MonoBehaviour” with “Editor” as the inherited class, add “Using UnityEditor;” to the declarations at the top of script, and add “[CustomEditor(typeof(YourScript))]” above your public class declaration. With any luck it should look something like this:

 using UnityEngine;  
 using System.Collections;  
 using UnityEditor;  
   
 [CustomEditor(typeof(YourScript))]  
 public class YourScriptEditor : Editor  
 {  
 }  

but with “YourScript” replaced by the name of your actual script.

The next thing we want to add is the method which determines what we see in the Inspector. Add the method “public override void OnInspectorGUI()” to the class. It’s inside this method we will tell Unity what we want to display.

The first thing you have to add to this method is an instance of the script your making this editor for. This is how all the information gets passed from the Inspector to the script. You can do this with the following line:

 YourScript myTarget = (YourScript)target;  

What goes in “OnInspectorGUI()” after this is really up to you. How your script is displayed in the inspector is determined by what you put in here. To get you started I’ll show you how to add a float, a boolean, and a conditional as I described above.

Most of the variables you’ll be adding will take the same form. You’ll immediately notice similarities between the call to add a float and the call to add a boolean, the only difference is what you’re saying to drawn.

 myTarget.aFloat = EditorGUILayout.FloatField("The text you want to appear in the inspector", myTarget.aFloat);  
 myTarget.aBool = EditorGUILayout.Toggle("The text you want to appear in the inspector", myTarget.aBool);     

As you can see, very similar. The first one will appear in Unity as a box with a number in it, as you would expect with any script, and the second as a check box, again as you would expect.

Adding conditional logic to certain variables/fields is the same as adding a conditional logic to a script. Let’s say, for example, we only wanted the user to be able to set the value of “aFloat” if they had already set “aBool” to true. All we need to do is wrap an if statement around the “aFloat” call that checks if “aBool” is set to true, like so:

 myTarget.aBool = EditorGUILayout.Toggle("The text you want to appear in the inspector", myTarget.aBool);         
   
 if(myTarget.aBool)  
 {  
       myTarget.aFloat = EditorGUILayout.FloatField("The text you want to appear in the inspector", myTarget.aFloat);  
 }  

Now the “aFloat” field will only appear when “aBool” is true.

At this point I recommend looking at EditorGUIScript on the Unity Reference pages, as this will give you lots of information about all the fancy options you can choose when making your own Custom Editor Script, but for now enjoy playing around with the simple stuff!

Happy coding,

Adam

Posted in Intermediate, Tutorial, Unity | Tagged , , , , | Leave a comment

The Meatly Jam!

Side stepping from my usual posts, which are generally either tutorials, games I’ve made, or experiences I’m sharing, today I want to talk about an oppurtunity coming up at the end of March.

If you follow this blog you will know that I have attended many game jams (technically eleven at this point), which I believe qualifies me as some what experienced. As such, I offered my experience of game jams to help a friend organise his own. This friend happens to be The Meatly of themeatly.com / @TheMeatly fame. You may have seen his comics posted around the internet, or seen his name alongside Microsoft as a sponsor of the Indie Games Conference 2015 in London (which looks like it is going to be fantastic). He was looking to host a game jam and I offered to help, and now we have The Meatly Jam

The Meatly Jam will be occurring from 5.00pm (GMT) 27th March – 5.00PM (GMT) 29th March (12.00pm – 12.00pm EST). The theme is “All things TheMeatly” and contestants will be provided with assets from the Meatly to create fantastic new games in the time period to compete for awesome prizes. A lot of things are still behind closed doors at this stage, so there is no announcement of sponsors, judges, or prizes yet, but all good things come to those who wait.

I highly recommend signing up to this event so you get updates as they come in. This is a fantastic oppurunity, not only to make some more games, but to get your name out on to the international stage. The Meatly might not be incredibly famous over here (yet), but they are much bigger in America (remember they are sponsoring #IGC15!) and this jam is already gaining a lot of traction.

I look forward to jamming with you all!

Happy coding,

Adam

 

 

Posted in Jams, The Meatly Jam | Tagged , , | Leave a comment

Global Game Jam – 2015

As January draws to a close, the annual Global Game Jam returns to keep me up for the greater part of 48 hours jammed packed with learning, playing, creating, and perhaps a little developing. If you have read my previous posts about game jams, you will know that me and my team try something new at every jam we attend. Sometimes this leads us to success (see our work on shaders on Tripwire), and sometimes this leads us nowhere (see our failed attempt at a networked Javascript game at GGJ 2014). This year we turned our eyes to the challenge of an entirely new development engine, the light-weight and incredibly popular Unity engine.

Fortunately my work in C# over the last few years means that the script writing, the crux of Unity’s component based architecture, is already second nature to me. The difficult part has been learning the many standards and practises that form Unity’s underlying framework: how to access objects from scripts, how to create objects in the scene view, how interaction between objects works etc. I will talk more about learning Unity in my next post, but for this post I want to impart some knowledge I have learnt over the course of the last 48 hours.

Firstly, dream big, but plan small. It is all well and good designing a game with procedural level generation and multiple sprawling methods of traversing the world, but that doesn’t mean you’ll make it in time to show it off at the end of the jam. Lock down the core concept and create something that can show it off in 3 – 5 minutes. That will mean that you feel like you developed the game you set out to, but also mean your final game is not lost in a myriad of features and half implemented functions.

Secondly, at the end of the jam one of my lecturers, the famous Rob Miles, gave us this piece of advice: it is best to always have a working version of the game at every stage of development. We suffered massively this year from a massive schedule change near the end of the game jam (with two and a half hours until the judging began we were informed the an hour and a half were being cut from the schedule), which resulted in several elements of our game not being at their best (and sadly meant our audio was missing). In the future I will make sure to always have a working version of the game on one machine, as it will mean not only do we always have something to show, but it will also mean that everyone’s features and elements are in place the moment they are complete.

Hopefully this advice will help you in your next endeavour and help to mitigate any problems you face. If you find yourself with a spare minute, check out the game I helped to make on the Global Game Jam website (http://globalgamejam.org/2015/games/event). My specific contributions were the level design and building and the global effects, such as the underlying level time and lighting effects.

Happy developing,

Adam

Posted in 2015, The Event | Tagged , , , , , | Leave a comment