tag:blogger.com,1999:blog-9854730867245412452024-03-14T11:15:06.205+11:00Schrodinger's Paradox Game Development StudioDavid 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.comBlogger26125tag:blogger.com,1999:blog-985473086724541245.post-53416886280315728862014-03-25T09:11:00.000+11:002014-03-25T09:11:21.150+11:00Musings about Games - Indie Games.I realise that this blog has been uninhabited for quite some time, but I'm making it a duty to try and start updating it at least once a week with various thoughts, tips, ticks and hopefully more tutorials as time goes on.<br />
<br />
I want to talk to you readers about something that you might not know about, haven't thought about, or perhaps are just interested in - the Indie gaming industry. I'm 25 - I've been programming for the better part of my life, I live in Australia, which i suspect factors quite heavily into my opinion of the independent games movement. I studied a Bachelor of Multimedia Technology & majored in Games Design and Development, with the overall intent of finding a programming job doing what I love. My uni degree took me four years to complete - and from the start of my degree to the end, that four year span saw the last of the <b>AAA</b> studios close in Melbourne.<br />
<br />
As you can imagine, that's a pretty harsh thing to be faced with - having a degree to use but nowhere to take it and flout it in the face of people that want to hire me. So, what to do? Well - I started programming - but not for games, I spent a long time still trying to get into the industry, but overseas and it wasn't successful, I ended up programming at a lob (which I now love,) and haven't looked back, but this throws into light a lot about what has changed for me in the industry of computer games - there's no longer the concept of the "large" game studio that you want to work for, titles like Angry Birds, Minecraft & more, games developed by a handful of hard working individuals have shown me, and they should show you - that all you need is an idea & time.<br />
<br />
I'm not sure about you as a programmer, but I personally find one of the hardest things to do when I think of an idea is <b>where</b> to start, which thing do I program first? But I think the main thing that I always bring myself back to when I look to program a new game is this "Hey, it's my game - I can start it wherever the damn hell I want." And this is the real beauty of working as an indie games dev - or in a small team of dedicated workers.<br />
<br />
So - lets think about this, say you have an idea. What do you do with it? Well - the general thread I follow is this:<br />
<br />
1. Has it been done before? Check the major indie game sites (Steam, Kongregate etc.) & mobile app stores.<br />
2. What platform am I making this for? This is an erroneous area for many devs - you can't hope to make a game for Mobile, Computer & Console all in the one breath - sure that's going to get your title in front of the most eyes, but there just isn't a development paradigm which will let you deploy to all of those places at once.<br />
3. Who am I making this game for? If you answer this "Me - I think it's a cool idea." You might be in strife - think for a while about this question, it's important that you understand who your game is for, is it for Mum's who want to relax after dealing with the kids all day? Is it for young kids? Having a target audience is crucial before you put any code down as it'll shape almost every aspect of the game.<br />
4. What's your hook? So - you've got a awesome game, what's the one defining feature of it that separates it from the throngs of others? Is it unique art style? Is it a particular game mechanic such as time manipulation, parkour style character movement? This can be your selling point to almost anyone.<br />
5. What's your elevator speech? This is a common business question often asked about a business idea, but can just as easily be used for a game. So you get into an elevator and a man in a schmick suit gets in next to you - he notices that you're wearing a gamer t-shirt and asks what you do - you tell him you're a game developer working in the indie industry - he seems interested and asks what you're currently working on. STOP! What do you say? This is more important than you think, talking face to face and having a good idea of what you're going to say is really important when it comes to <i>marketing</i> your game.<br />
<br />
I think that's about all I want to talk to you about now. These five things are great to think about before you start programming anything, I'm a firm believer in thinking hard and working easy.<br />
<br />
David Out.David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com0tag:blogger.com,1999:blog-985473086724541245.post-86924382252466289652012-08-05T22:14:00.000+10:002012-08-23T13:52:24.882+10:00Making a game data server with Node JSHey guys,<br />
<br />
So this is going to be a new series of tutorials that I'm going to run that are based in the world of Node, mobile gaming and network data delivery and database management. I realise that this is quite far removed from the tutorials that I was running before, but as many of you may be aware, my current work has taken me further away from Flash and Game programming and into a more supportive role with back-end programming and database services taking up the greater percent of my brain power. So subsequently, I'm going to be writing tutorials based around this area.<br />
<br />
I briefly mentioned in my last post that I was going to try and use Tuts+ to publish my Tutorials, however, I have had some issues with trying to submit some things to them and so am now going to be running them both here in text form and hopefully screen casts of them on my youtube account also.<br />
<br />
This tutorial is going to go over the basics of the software that we'll be using, how to get things moving with Node, and what exactly we're going to be doing with Node.<br />
<br />
Node is a Java based server technology, which is very both in terms of running as well as development iteration. The purpose of Node in these tutorials is to provide an end-point for an arbitrary application to connect to to ask for some data. The best way to perhaps think about Node is that it is a gateway that sits somewhere on the internet (or in the case of this tutorial, a port on your computer) and awaits incoming requests and then does something when it gets a request.<br />
<br />
Node can be downloaded from <a href="http://nodejs.org/#download" target="_blank">here</a> - depending on the operating system you're on, you'll want to get the right version for you. From the experience that I've had, Windows is a bad development environment for this sort of thing, but still works, I work from a Mac and Linux platform, however, the code and skills that you'll acquire from these tutorials are transferable as they're all based in the same language - Java. <br />
<br />
Node comes in a installation package, so once you've downloaded it, install it onto your computer, and that's pretty much all you need to worry about for installing. Once you've done that - you'll want to open up Terminal - we're going to go Matrix up in here. Terminal is where you'll be running your Node server from and frankly, Node is a very good way to get to know the way terminal works and the basics behind a <a href="http://en.wikipedia.org/wiki/Command-line_interface" target="_blank">command line interface</a>. As I'm working in a Mac environment, the commands that I'll be issuing will be for Mac CLI (Command Line Interface) again, the Windows and Linux commands are fairly similar, e.g. cd in Mac = dir in Windows.<br />
<br />
The first thing you'll want to do is create a folder somewhere that you'll want to put your Node server.<br />
<br />
<code>
$ mkdir SPGames_Tutorial1 </code><br />
<code>$ cd SPGames_Tutorial1 </code><br />
<br />
This will create a folder on your computer, and then change directories into it. Once you're inside this new directory, you'll want to do one of several things, depending on whether you want to use a simple text editor like VIM or a more complex GUI like EMacs or Notepad++, personally, I use VIM, so the command that I issue is:<br />
<br />
<code>
$ vim app.js
</code><br />
<br />
This will start a new file in VIM, and open up the VIM editor in your Terminal window. If you haven't used VIM before, the controls can be kind of hard to understand and seem quite unintuitive, but after a while, you'll get used to them and be able to navigate through huge files very quickly. The few commands and key strokes that you should know for this tutorial are:<br />
<br />
"i" - enter insert mode (Basically, you need to hit this to type anything onto the screen)<br />
"Shift + ZZ" - Save and close a file. Alternatively, if you want to save, but don't want to close the file, you should<br />
":w" - This command will only work if you are outside of insert mode, to exit insert mode, you simply tap escape.<br />
<br />
There are literally hundreds of keystrokes and keystroke combinations that VIM allows that allow you to look for things, go to the end of a word, end of a line, start of a line, find a matching parenthesis, the list goes on. But these ones will get you start.<br />
<br />
So, once you're inside VIM, you'll want to type out the following. Now, this is where one of my cardinal rules of tutorials comes in, if you're following this tutorial, I seriously urge you to put your Terminal window on top and type out the code in your own screen as opposed to copy & paste it. It is of course up to you, but I tend to find that I really don't hold onto much information if I just haphazardly copy and paste things in, and when things go wrong and it doesn't work - then I don't know what on earth is happening because I didn't write the code out myself.<br />
<br />
<iframe src="http://pastebin.com/embed_iframe.php?i=qEEpdxJX" style="border:none;width:100%"></iframe>
Stepping through this code:<br />
<br />
Line 1: Creates the "http" variable, the require('http') grabs the http library from node for use.<br />
Line 2: Create a server with our new http variable, the createServer method takes a function argument, with two parameters, req & res. Req is the request, and of course res is the response.<br />
Line 3: Writes some header information to the response object.<br />
Line 4: Ends the response object with a little bit of writing.<br />
Line 5: The .listen method of the http object sets the server up in terms of what ip address and port you want the server to listen on. Here it's listening on local host and 1337 for port.<br />
Line 6: console.log is a great way to test the server when you need to debug and know what's going on in terms of contact with the server.<br />
<br />
Now that we've written on the code of the Node server. Save the file in VIM by hitting Shift+ZZ. Then to start the server up:<br />
<br />
<code>
$ node app.js </code><br />
<br />
<code></code>Once the server has started, you'll want to keep that Terminal window open or the server will shut down. Using your favorite browser, navigate to the address that you specified in the Node app, in my case http://127.0.0.1:1337. Here you'll see the message that you put into your node app when you wrote it out.<br />
<br />
That's all that I wanted to put into this tutorial, it's a slash dash start-up and introduction to Node, and from here we're going to cover a few more complex subject. Most importantly, how Node is going to server as a game server for holding information and some more complicatedDavid 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com1tag:blogger.com,1999:blog-985473086724541245.post-51655150499522120402012-07-17T10:30:00.000+10:002012-07-17T10:30:22.206+10:003D Game Development - A beginners guide to choosing the right SDKHey guys,<br />
<br />
Recently I've been looking at a range of 3D game engines that lie outside of the Actionscript Stage3D realm, with the announcement that the Flash Player will <a href="http://blogs.adobe.com/conversations/2011/11/flash-focus.html" target="_blank">no longer be supported</a> on mobile devices.<span style="background-color: white;"> I am hoping to create a new 3D game idea that I have been mulling around in my head for quite some time now.</span><br />
<br />
After looking for a really long time and playing with a few SDK's and seeing how they all weigh up against one another, there are a few standouts.<br />
<br />
<a href="http://www.unrealengine.com/" target="_blank">Unreal Development Kit</a> - The engine behind the unreal series, a truly powerful piece of software, I won't deny that this thing LOOKS amazing. However, if you are looking to be able to ease into the development process, be warned, UDK uses it's own proprietary language called UnrealScript, and whilst it's not so far away from other OOP languages, you'll find yourself relearning a few idiosyncrasies of that corner of programming. It's free to play and develop with, however, if you're intending to go big with it (multi-developer big) then you might be deterred by their <a href="http://www.unrealengine.com/en/licensing/" target="_blank">licensing</a>, which until recently declared that royalties must be paid for any earnings over $50,000, however, there is now a application process that has to be gone through to get approval I believe. Aside from all of this, UDK is a brilliant set of tools to develop with, it's powerful, very quick at programming iteration and the engine itself looks gorgeous. There will be a learning hump before you get into any solid development, but apart from that, a good solid choice.<br />
<span style="background-color: white;"><br /></span><br />
<span style="background-color: white;"><a href="http://unity3d.com/" target="_blank">Unity</a> - Unity is one of the best engines I've played with, it's got a huge developer following and looks great. In terms of pricing, Unity uses a 'module' marketplace, for where you want to deploy, this can be a blessing or a curse depending on how you look at it. For example, if you only want to develop for mobile devices, it'll only be two modules, but if you want to go platform wide, it'll cost you a lot more. There are also both a professional and standard options which allow you to save money by losing out on some <a href="https://store.unity3d.com/" target="_blank">features</a> (click on the 'read more' link under each product). Aside from that, the game engine is great, very fast iteration time, good work flow and very easy to do things like model rigging, audio and above all, multi-platform deployment into native code. Unity also frequently does discounts and freebies, so it's always worth having the site on bookmark so you can come back later and see what's going on. Be warned, however, Unity is a end-to-end development suite, so if you are planning on coming into a project half-way through, you might find things difficult to pickup.</span><br />
<span style="background-color: white;"><br /></span><br />
<span style="background-color: white;"><a href="http://jmonkeyengine.com/" target="_blank">jME</a> - jME or Java Monkey Engine is a engine that I came across very recently when searching for alternatives to the standard Android development suite, with 3D in mind, from what I've seen of the <a href="http://jmonkeyengine.com/engine/" target="_blank">features</a> and more importantly their <a href="http://jmonkeyengine.com/showcase/" target="_blank">showcase</a>, it looks to be a very powerful, and easy to use system, it comes with it's own IDE, so no need to worry about messy set ups and getting things working in Eclipse or some such. I guess the most important thing that you should take away from jME is that it's 100% free! However, you'll only be developing for Android or Web. Which, considering the market and where the money is at the moment, might not be desirable.</span><br />
<span style="background-color: white;"><br /></span><br />
<span style="background-color: white;"><a href="http://www.stonetrip.com/" target="_blank">ShiVa</a> - I thought that ShiVa deserved a mention in this list also, ShiVa has been around for a while now and boasts some <a href="http://www.stonetrip.com/new-features.html" target="_blank">pretty impressive features</a>, compiling code in C++ it's got a lot going for it, and <a href="http://www.shivaengine.com/store.html" target="_blank">it's relatively cheap too.</a> And they're currently running a web deployment special which allows you to upload games for free.</span><br />
<span style="background-color: white;"><br /></span><br />
<span style="background-color: white;">Ultimately, as an indie developer, I'm always looking at the free or less expensive options when I look at a development environment, but looking at the wide spread of both suite and of price, I would suggest to anyone going past my blog to have a look at either Unity or Unreal, I recognise that they're more expensive (well, Unreal is only costly if you make a AAA title with it,) but I personally think that for the price that you need to pay for the product, you really do get the support and system that you pay for. </span><br />
<span style="background-color: white;"><br /></span><br />
<span style="background-color: white;">David.</span><br />
<span style="background-color: white;"><br /></span><br />
<span style="background-color: white;"><br /></span>David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com1tag:blogger.com,1999:blog-985473086724541245.post-49419708704943202762012-06-16T00:16:00.003+10:002012-06-16T00:16:43.887+10:00The Future of TutorialsHi Guys,<br />
<br />
Just wanted to post up a quick little blog update about what's going on with me and how I'm hoping to do things in the future for tutorials on the website. As some of you may be aware, I've recently gotten myself a new job, which is taking up a large portion of my time, and as much as I would love to continue to make movies with my dulcet tones and instruction, I just don't have the time any more.<br />
<br />
So - that leaves me in somewhat of a predicament, I want to continue to provide all of my followers and readers of the blog with the quality tutorials that I've been putting up in the past months, but I can't physically sit down and dedicate the time to actually doing it - so I've resolved to putting my writing skills to good use and I'm now going to be instructing through the medium of the written tutorial.<br />
<br />
To make things easier for myself, and to ensure that everything is kept in proper order, I've gotten myself an account with<a href="http://marketplace.tutsplus.com/?ref=SPGamesStudio" target="_blank"> Envato's Tut's+</a> to host all of my tutorials on - this will allow for all of my old videos to be put up as well as the corresponding text also.<br />
<br />
As for what the future of my tutorials holds, as I said in my last post, I'm going to be moving away from Flash in a somewhat smart fashion because I feel that the language is becoming stagnated and there are better alternatives out there for game development and I intend to show you all just exactly how to do that with my new series of tutorials.<br />
<br />
I'll be looking mostly at mobile development, because that's what I've been developing on all this time, and the skillset that I've acquired at my new job has given me sufficient skills in the mobile programming field to consider myself to be somewhat of a authority on the subject. In the next series of tutorials I'm going to be looking at:<br />
<br />
- The development lifecycle (mobile).<br />
- Debugging on Android and iOS.<br />
- Cross-Platform development for indie game developers ($$$ = :( )<br />
- Mobile games & Database driven gaming<br />
- Node JS - a beginners guide (this warrants an entire series of tutorials on it's own - it's a big field)<br />
- Setting up the node<br />
- Modules and you.<br />
- Encryption and hashing<br />
- Database management & REST calls<br />
<br />
- jQuery, EaselJS & the Flash Actionscript killer.<br />
- In-App Advertising, who to pick and what to call them<br />
- In-App Purchases, how to set it up.<br />
<br />
These topics are all things that I would like to cover and will be writing on in the near future. I DO still intend to finish off the last part of the Nape tutorial series, but I am certainly keeping my focus on the mobile gaming side of the spectrum as I feel that it's going to become a huge part of the future of gaming.<br />
<br />
In the mean time, feel free to check out <a href="http://marketplace.tutsplus.com/?ref=SPGamesStudio" target="_blank">TutsPlus</a> as it's already chockers with tutorials on many different subjects.<br />
<br />
Cheers,<br />
<br />
David.David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com1tag:blogger.com,1999:blog-985473086724541245.post-79193880222903413162012-06-10T17:41:00.000+10:002012-06-10T17:41:38.857+10:00SPGames - Flash & What's nextHi everyone that reads my blog.<br />
<br />
I just wanted to have some face time with you all about what's been going on on my end and where the next in the tutorials is going to be. For all of you that have been following my Nape series, I will be wrapping them up next tutorial. I understand that they've been highly sought after and have been some of the only tutorials written for Nape.<br />
<br />
However, in my current job, I have been doing less and less Flash actionscript programming and a lot more on Javascript, HTML5, Python and several other languages, however, what I have been doing most of all is server client architecture and the technologies behind it such as Node js. This had brought me to an interesting point in where I want to go with my tutorials and what I want to be showing you guys.<br />
<br />
I'm currently in the process of developing a mobile game which I intend to send out on both iPhone and Android, it has given me a lot of things to think about in terms of languages, server communication, database storage and most importantly, game logic and how to make the game fun whilst maintaining income and the like.<br />
<br />
I would hope to be finishing the Nape tutorial in the near future and then I'll start putting my documentation together for the next series, which will start with Node JS and the technologies that are behind that.<br />
<br />
Cheers,<br />
<br />
David.David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com0tag:blogger.com,1999:blog-985473086724541245.post-62208754069563416062012-03-24T15:53:00.000+11:002012-03-24T15:53:14.631+11:00Nape Tutorial 4: Bump and Grind hits Youtube.Hey guys, just a quick heads up, just wanting to let oyu all know I've gotten around to finishing Nape Tutorial 4. This Tutorial concerns itself with Collision Detection and how to know when two objects are hitting one another. It's starting off small, and I suppose I intend to touch on the subject again when we do a little more complicated stuff. But for the mean time, it's intended to let you all know exactly how to go about listening for collisions in your games!<br />
<br />
<object style="height: 390px; width: 640px;"><param name="movie" value="http://www.youtube.com/v/gSwCk8fFXhM?version=3&feature=player_detailpage">
<param name="allowFullScreen" value="true">
<param name="allowScriptAccess" value="always">
<embed src="http://www.youtube.com/v/gSwCk8fFXhM?version=3&feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"></object>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
I have updated my github account to more accurately reflect things, so now there is a repo for each individual tutorial instead of it all being lumped together.<br />
<br />
Thanks again for all the input that was sent through to me, really valuable stuff :). Until next time!<br />
<br />
David.David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com2tag:blogger.com,1999:blog-985473086724541245.post-76868290217753286652012-03-08T09:19:00.002+11:002012-03-08T09:19:30.645+11:00Nape Tutorial 4: In The WorksHey guys, just wanted to post up a little bit of into to keep you all in the loop as to what is happening with the tutorial series for Nape. I'm currently hard at work at a new job (ActionScript programming!!!) And have had not a lot of time to get things moving along with the fourth tutorial.<br />
<br />
However, today, I have started to make tracks towards the next video in the series. I'm hoping to bring a bit more production value to the series with this newest addition so I'm putting in a bit more work to try and make things a little easier for everyone to understand. There is going to be powerpoints, goals and objectives, things to remember, summaries etc.<br />
<br />
The next tutorial in the series is going to look over collision detecting and how to use it in your games for fun effects and functionality! It is going to be entitiled, Nape Tutorial 4: Lets get Physical!<br />
<br />
I am hoping to get some time on this weekend to try and get some of this down, but failing that, I'd hope to be bringing out the next in the series within the next few weeks.<br />
<br />
Thanks for your patience!<br />
<br />
David.David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com3tag:blogger.com,1999:blog-985473086724541245.post-25478284877583297542012-02-17T00:12:00.000+11:002012-02-17T00:12:27.210+11:00Nape and Flash Develop - Tutorial 3: Joints and you, a comprehensive guideHey guys! Here it is! Albeit a little late, here is the third installment of the Nape Physics Engine tutorials, focusing on Joints and the various types of constraints that you will come across programming for the Nape platform. I apologise if it seems a little rushed, I've been wanting to get this movie up for you all a long time ago, but haven't managed to have the time, but finally got my act together and produced something.<br />
<br />
Expect to see the production value of my movies go up significantly in the coming weeks as I start to get a little more technical with the things that we do with the engine.<br />
<br />
<br />
<object style="height: 390px; width: 640px;"><param name="movie" value="http://www.youtube.com/v/1ahnmdPmlfQ?version=3&feature=player_detailpage">
<param name="allowFullScreen" value="true">
<param name="allowScriptAccess" value="always">
<embed src="http://www.youtube.com/v/1ahnmdPmlfQ?version=3&feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"></object><br />
<br />
As I say at the end of this movie, I'm planning on doing a few other things with Nape aside from the normal tutorial series, which is next going to delve into Collisions and how to deal with events caused by them etc.<br />
<br />
I'm also going to be starting another series which puts into use my new software MazeGen, and takes the XML files generated from that into a Nape backed physics file to create physical mazes! Stay tuned, now that I'm back at home, I hope to be churning movies out midst all the other stuff that I have going at the moment.<br />
<br />
Also, one final thing, in regards to a github repo for this tutorial, something that I forgot to mention in the actual movie is that I haven't made one, the reason being is that the code changes several times and the most that you can hope to get out of it is just a single example of a joint. The purpose of this movie was more informational than actually build something.<br />
<br />
Thanks again guys,<br />
<br />
David out.David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com3tag:blogger.com,1999:blog-985473086724541245.post-30478391898504484372012-02-16T10:35:00.000+11:002012-02-16T10:35:29.275+11:00MazeGen v0.0.1Hi guys, bit of an update for you all, and the introduction of a new piece of software to my online portfolio! I present to you all MazeGen. For a few moths now I've been infactuated with Maze Generation tools and how to create dynamic mazes that are both solveable and highly complex. I spent a lot of time on Emanuele Feranato's site (found <a href="http://www.emanueleferonato.com/">here</a>) which goes through how maze generation works and there are a few open source code snippets on the matter also.<br />
<br />
The main reason that I was interested in maze generation is that I have a passion for maze type games - anything that is both puzzling and interactive. So mazes and maze generation is perfect for me! What I originally set out to do was to use the code on Emanuele's site to in turn create physics objects from the generated maze, which could then be manipulated as I saw fit.<br />
<br />
The way in which I envisioned the code working was this:<br />
<br />
- given a height and a width the maze would generate<br />
- the maze would then be sent to an xml file, with each row of the maze having a row in the xml file, 1's representing a wall and 0's a gap. This would allow for the maze to be broken down into something akin to:<br />
<br />
1,1,1,1,1,1,1<br />
1,0,0,0,0,0,1<br />
1,0,1,0,0,0,1<br />
1,0,1,0,1,0,1<br />
<br />
etc.etc.<br />
<br />
- The XML file would then be parsed by a physics creating loop which essentially looked through each row, and for each 1 it found, create a physical object. Thus leaving us with a maze!<br />
<br />
I had several fairly major problems along with way. My main issue was that I was targetting Corona SDK for the project - which, took on the actual code generation part of the task admirably, but when it came to converting the XML file in to a tangible maze I found that it had some pretty major shortcomings. The biggest of which is that you can't actually create a <b>compound</b> physics object, which is a large object made up of smaller objects all tied onto the one entity, the reason that I needed this was that in order for the object to remain a whole maze would be that each wall was connected to the ones next to it, without this, say for example when the maze rotated, each individual block rotated about it's own axis as opposed to rotating about the center of the maze.<br />
<br />
After a few weeks of frustrated bashing away at the keyboard I turned back to my flagship language Flash to get things moving. I re-wrote the maze generation code and put Nape in as my engine of choice, which turned out to be a godsend, as Nape allows you to push as many "shapes" as you want into a single body before creating that body in the world, which in a nutshell was exactly what I needed.<br />
<br />
So, now that I had a working system, I went about modifying the maze generation engine to make things easier say for a person wanting to make a maze based game. The major things that I wanted to produce with this piece of software was ease of use and simple interface interaction, this alpha release accommodates these features, as you can see from the screen-shot, there is some very limited functionality. The user manual (however brief,) will uploaded and available for reading along with the swf.<br />
<br />
<a href="http://www.dibsink.com/uploads/MazeGenv0.0.1/MazeGenRelease.html">Here is a link to MazeGen v0.0.1</a> - this will open up in a new pop up window.<br />
<br />
I'll give you all a quick rundown of how it works - enter in a width and a height into the respective boxes, and then hit generate. You'll get a image of what the maze would look like, if you don't like it you can just hit generate again until you find a maze that you like.<br />
<br />
When you do, click the Save Maze to XML File button, this will push the Maze into the XML file, that particular maze is now "saved." And you can enter in a new width and height to get a new maze to save.<br />
<br />
Once you have finished generating all the mazes that you want, click the Save to disk button, this will give you the save file prompt and you can select where on your computer that you want to save the XML file.<br />
<br />
v0.0.1 is by no means bug free - I expect that there will be problems, but the major ones I hope to have plugged by now.<br />
<br />
In future versions I'm hoping to introduce a number of other things:<br />
<br />
- Multiple export types<br />
- Load XML file<br />
- Edit Mazes that are in the XML "stack"<br />
<br />
Thanks for reading through all of this, and I hope that you have read up to here. Please feel free to have a play with it and I'll soon be uploading a video of how to get the XML file back into Flash and generate some physics objects from it!<br />
<br />
David.David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com0tag:blogger.com,1999:blog-985473086724541245.post-27664591005501834472012-01-24T11:03:00.000+11:002012-01-24T11:03:28.039+11:00Upcoming tutorialsHey team, I know it's been forever since I posted, and there's good reason too! I've had massive computer problems, and have just managed to get myself back online and everything shipshape again. For readers of the blog, and people that are watching my tutorial series on Flash Physics, the next two movies (Box2D and Nape) in the series will be out just as soon as I get some good recording software and a mic for my new Mac.<br />
<br />
I will be covering the creation of joints, and the various different joint types and what you would use each type for. I also have a special video that I want to record to show you all a little something that I've been working on, and hopefully include a few of you in too!<br />
<br />
Thanks for everything guys, if you have any questions, feel free to ask me!<br />
<br />
David.David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com0tag:blogger.com,1999:blog-985473086724541245.post-51589065861003008012011-12-24T17:23:00.001+11:002011-12-24T17:23:08.518+11:00Merry Christmas and a Happy New Year!To all readers! Merry Xmas and a Happy New Year,<br />
<br />
As you're all probably aware, I've taken a bit of a break from tutorials etc for the time being but let me assure you come the new year I'll be starting them up again!<br />
<br />
Thanks for your ongoing support and for those members that have joined up to my YouTube channel!<br />
<br />
Cheers,<br />
<br />
David.David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com0tag:blogger.com,1999:blog-985473086724541245.post-81032563819070281982011-11-18T23:40:00.001+11:002011-11-18T23:40:56.081+11:00Blog UpdateReally quick post - updated the look of the blog (as you can obviously see.) I've also put in some links across the top bar, you can now visit the youtube channel directly if you want to watch a series of movies one after the other, and I've also made another page which has each of the tutorials listed, incase you wanted to watch a specific tutorial again.<br />
<br />
Cheers,<br />
<br />
DavidDavid 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com0tag:blogger.com,1999:blog-985473086724541245.post-81349962466076144412011-11-18T18:53:00.001+11:002011-11-18T18:54:32.374+11:00Nape and Flash Develop - Tutorial 2: Sprites!Hey guys,<br />
<br />
Here's the second part in the series of tutorials I'm running on Nape physics engine, this tutorial goes over sprites and how to get them into your game!<br />
<br />
<br />
<object style="height: 390px; width: 640px;"><param name="movie" value="http://www.youtube.com/v/L6bDw5QqhFM?version=3&feature=player_detailpage">
<param name="allowFullScreen" value="true">
<param name="allowScriptAccess" value="always">
<embed src="http://www.youtube.com/v/L6bDw5QqhFM?version=3&feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"></object>
<br />
Let me know what you all think and as I say at the end of this movie, part three is going to deal with joints and moving objects with the mouse!<br />
<br />
Thanks guys,<br />
<br />
DavidDavid 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com1tag:blogger.com,1999:blog-985473086724541245.post-15666536288110860722011-11-18T17:47:00.001+11:002011-11-18T17:50:53.598+11:00Box2D and Flash Develop - Tutorial 2: SpritesHey guys, here's the second part in my Box2D tutorial series, it's fairly short, but goes over the important method of how to give physics bodies a physical representation!<br />
<br />
<br />
<object style="height: 390px; width: 640px"><param name="movie" value="http://www.youtube.com/v/o1E_Zsc3O0o?version=3&feature=player_profilepage"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/o1E_Zsc3O0o?version=3&feature=player_profilepage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"></object>
<br />
<br />
As always if you go to my youtube page you'll get the link to the github repo to download source code if you're lazy and don't want to type it out yourself! :P
As I say in the movie, part three will be out soon enough with how to do joints!
Thanks guys!
DavidDavid 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com0tag:blogger.com,1999:blog-985473086724541245.post-48652632531062269032011-11-18T11:02:00.001+11:002011-11-18T11:09:15.386+11:00PxlSmshBox2DHey guys, here's a video that I've been wanting to post up for quite some time about Pixel Smash, a funky little thing developed by the guys over at <a href="http://www.photonstorm.com/">Photon Storm</a>, basically it couples pixel art with the ability to back it with physics. Makes for some really cool effects etc. I've taken some time to develop out the code into Box2D and have put it onto my GitHub account <a href="https://github.com/SPGamesStudio/Pixel-Smash-Box2D">here</a>.<br />
<br />
I hinted that I was going to write a video about this last time and here it is:<br />
<br />
<object style="height: 390px; width: 640px;"><param name="movie" value="http://www.youtube.com/v/-l7mnH57Yi8?version=3&feature=player_profilepage">
<param name="allowFullScreen" value="true">
<param name="allowScriptAccess" value="always">
<embed src="http://www.youtube.com/v/-l7mnH57Yi8?version=3&feature=player_profilepage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"></object>
<br />
<br />
<br />
I'm working on pulling down the amount of "uuuuums" and "aaaaahs" that I say, but bear with me, I'm not used to recording what I do :).<br />
<br />
I'm going to be working on this project till I figure out it's either impossible or what's wrong with it, I'm hoping I come across the latter, and am able to produce a fully working version for you all.<br />
<br />
Thanks heaps!<br />
<br />
David.<br />
<br />David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com0tag:blogger.com,1999:blog-985473086724541245.post-59221623348548227302011-11-17T23:34:00.001+11:002011-11-17T23:48:58.097+11:00Musings of a occupational nature.Hey team,<br />
<br />
Just wanted to post up a little bit of info on why there's been a massive gap in-between posts (again.) Well, to put it plainly, daddy needs a job, or I can't buy nice things. As I'm sure some of you have dealt with first hand - the games industry within Australia is very very very small, and getting smaller by the day. And subsequently, the skillset that one possesses in order to become a successful applicant of the games studios left in Melbourne is getting bigger and bigger, almost beyond what one person can learn and demonstrate with no proir experience within the industry.<br />
<br />
This poses a Catch 22 problem (my favorite,) one is unable to obtain a job as one doesn't have experience within the industry, and yet, the only jobs that are obtainable to gain said experience, themselves request that experience within the industry be had as a requisite for applying.<br />
<br />
As such, it's come to my attention that the games industry, by and large is NOT the way that any young programmer / designer / smart guy should look. And that's not to say that any readers should be perturbed from reading further, don't lose faith just yet. I haven't finished. As I said - the issue is that to earn a LIVING off of creating computer games, is next to impossible. And for myself, that's certainly something that's very hard to let go of, from day one of Uni I've thought of working in a team of professionals creating the next big game, and in reality, it's just not happening any more. So - where do you go from here? I'm putting games to the back of my mind, into the drawer marked "one day, but not today." Because I know that there are a lot of good ideas swimming around out there, in the ether, and certainly many in my own head. But in the mean time, I need to focus in on what is important, and that's getting a job.<br />
<br />
As a consequence (I say that, but it's not really,) I'm going to be pushing out a new Flash program which I'm yet to name. The purpose of the program is to allow mobile app developers that have selected the Flash environment to monetize their app. There are a huge number of mobile networks to chose from - InMobi, AdMob, Millennial Media, Tapjoy, JumpTap, Inner-Active - the list goes on and on and on and on. What I intend to create is a method by which, a user can simple enter in which network their app is to choose and then issue a simple call which will display the ad at a given location.<br />
<br />
I will be developing this as an open source project and would love for anyone that thinks they have something important to input to take part. This will be the first step, developing this "Network Selector." Where I plan to go with it? Well, suffice to say, Australia is yet to have a fully Developed Mobile Network, and it's a very lucrative and economically advantageous thing to take part in.<br />
<br />
Stay tuned.<br />
<br />
David.<br />
<br />
P.S. I won't stop with my physics engine tutorials, I started them and intend to continue, if you have a good idea for a tutorial, email me!David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com0tag:blogger.com,1999:blog-985473086724541245.post-54482699598824866562011-10-18T12:35:00.000+11:002011-10-18T12:37:25.417+11:00Box2D Pixel Smash... Or not.Hey guys,<br />
<br />
A while ago I came across this awesome little program made by Photon Storm called Pixel Smash, which is essentially a really cool way to mix pixel 8-bit like games with modern day graphics. Check it out <a href="http://sandbox.photonstorm.com/pixelsmash/">here</a>, as you can see, there are quite a number of possibilities that come to mind when you've got what is essentially a destructible pixel environment (think Modern Warfare 2D or similar) how cool!!?<br />
<br />
One thing that this particular demo got me on to was of course <a href="http://www.deltaluca.me.uk/forum/">Nape</a>, as this is the engine that is powering it. However, as many flash developers are aware, the major physics engine of favor in and among game titles is of course Box2D, so I went about porting the Nape Pixel Smash example over to Box2D, with outstandingly disappointing results, I use a simple plugin class called "stats" which was developed by a guy called Mr Doob, and can be githubbed <a href="http://github.com/mrdoob/stats.as">here</a>, which gives you an awesome looking run down of what framerate you're running, how many objects you've got in your scene and also monitors memory and even refresh rates.<br />
<br />
Here's the annoying thing though, the Pixel Smash Nape demo gave me a steady 60fps, with 1017 objects and a refresh rate of around 17ms. Now, when I run my Box2D version of it:<br />
<br />
<a href="http://2.bp.blogspot.com/-eJqnJw9BvrE/TpzHYDpkoyI/AAAAAAAAACI/YCMg_tQpIhk/s1600/PxlSmashBox2DPerf10-18-2011.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-eJqnJw9BvrE/TpzHYDpkoyI/AAAAAAAAACI/YCMg_tQpIhk/s1600/PxlSmashBox2DPerf10-18-2011.png" /></a><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Suffice to say, pretty disappointing, and this is with an image that only generates 236 objects! For the purpose of this I've opened up a github account and y'all can browse and pickup the code there.<br />
<br />
<a href="https://github.com/SPGamesStudio/Pixel-Smash-Box2D">https://github.com/SPGamesStudio/Pixel-Smash-Box2D</a><br />
<br />
Be gentle with me, still learning all the stuff that goes with github, so I hope it's all working.<br />
<br />
Anyway, basically, the major problem with the Box2D version (I think) is that when the objects spawn into the world, they are all colliding off of one another. So if every object has 8 objects surrounding it, all colliding together, then that's a problem and very computationally hard.<br />
<br />
So, with that, I am still at a loss as to how to improve the performance of the Box2D version, if you feel so inclined, feel free to grab the code off of github. And remember, credit given where it's due, this isn't my code to start with, I simple ported it. It's really Rich Daveys' from Photon Storm, I just played with it and got it to Box2D. I'm now in the process of re-writing the code in Nape with the most recent milestone, and will probably end up making a little movie out of it, we shall see.<br />
<br />
In the mean time, yeah, get on it! Github it up people!!!<br />
<br />
David<br />
<br />David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com2tag:blogger.com,1999:blog-985473086724541245.post-85083784161502893412011-10-14T17:47:00.000+11:002011-10-14T18:24:39.105+11:00Nape and Flash Develop - Tutorial 1: Hello Nape WorldHey guys,
Just made another movie for ya'll, this one is a implementation of the much lighter physics engine Nape, here it is!
Let me know your thoughts!<br />
<br />
<object style="height: 390px; width: 640px;"><param name="movie" value="http://www.youtube.com/v/3LGXdSnWEUc?version=3">
<param name="allowFullScreen" value="true">
<param name="allowScriptAccess" value="always">
<embed src="http://www.youtube.com/v/3LGXdSnWEUc?version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"></object><br />
<pre class="brush: js; ruler: true; first-line: 10; highlight: [2, 4, 6]">package
{
import flash.display.Sprite;
import flash.events.Event;
import nape.geom.Vec2;
import nape.phys.Body;
import nape.phys.BodyType;
import nape.shape.Polygon;
import nape.space.Space;
import nape.util.ShapeDebug;
/**
* ...
* @author Sp Games
*/
public class Main extends Sprite
{
public function Main():void
{
var space:Space = new Space(new Vec2(0, 600));
var debug:ShapeDebug = new ShapeDebug(600, 600, 0x333333);
addChild(debug.display);
var border:Body = new Body(BodyType.STATIC);
border.shapes.add(new Polygon(Polygon.rect(0, 0, -40, 600)));
border.shapes.add(new Polygon(Polygon.rect(600,0,40,600)));
border.shapes.add(new Polygon(Polygon.rect(0,0,600,-40)));
border.shapes.add(new Polygon(Polygon.rect(0, 600, 600, 40)));
border.space = space;
var block:Polygon = new Polygon(Polygon.box(50, 50));
var body:Body = new Body(BodyType.DYNAMIC);
body.shapes.add(block);
body.position.setxy(stage.stageWidth / 2, stage.stageHeight / 2);
body.space = space;
addEventListener(Event.ENTER_FRAME, function (_:Event):void {
debug.clear();
space.step(1 / stage.frameRate, 10, 10);
debug.draw(space);
debug.flush();
});
}
}
}</pre>
Thanks again guys.David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com0tag:blogger.com,1999:blog-985473086724541245.post-72106303705754801892011-10-13T16:43:00.001+11:002011-10-13T20:44:37.175+11:00Tutorial 1: Hello Box World!Hey Team,
Here is the first in my series of Flash Develop Tutorials, this is entitled: Box2D Hello Box World!
Super excited to be hearing my voice on the YouTubes. It was only a matter of time...<br />
<br />
<object style="height: 390px; width: 640px"><param name="movie" value="http://www.youtube.com/v/BO_3XYJgifo?version=3"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/BO_3XYJgifo?version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"></object>
Here is the source code that you will end up with once you have finished this tutorial. In the future, and as the tutorials get bigger, I'll get a github account to upload to otherwise my blogs are going to get even longer :O.
<pre class="brush: js; ruler: true; first-line: 10; highlight: [2, 4, 6]">package
{
import Box2D.Collision.Shapes.b2CircleShape;
import Box2D.Common.Math.b2Vec2;
import Box2D.Dynamics.b2BodyDef;
import Box2D.Dynamics.b2Body;
import Box2D.Dynamics.b2DebugDraw;
import Box2D.Dynamics.b2FixtureDef;
import Box2D.Dynamics.b2World;
import flash.display.Sprite;
import flash.events.Event;
/**
* ...
* @author Sp Games
*/
public class Main extends Sprite
{
public var world_scale:Number = 30;
public var world:b2World = new b2World(new b2Vec2(0, 9.8), true);
public function Main():void
{
addEventListener(Event.ENTER_FRAME, update);
add_circle();
debug_draw();
}
public function add_circle():void
{
var my_body:b2BodyDef = new b2BodyDef();
my_body.position.Set((stage.stageWidth / 2) / world_scale,
(stage.stageHeight / 2) / world_scale);
my_body.type = b2Body.b2_dynamicBody;
var my_circle:b2CircleShape = new b2CircleShape(10 / world_scale);
var my_fixture:b2FixtureDef = new b2FixtureDef();
my_fixture.shape = my_circle;
my_fixture.density = 1.0;
my_fixture.friction = 1;
var body:b2Body = world.CreateBody(my_body);
body.CreateFixture(my_fixture);
}
public function debug_draw():void {
var debug_draw:b2DebugDraw = new b2DebugDraw();
var debug_sprite:Sprite = new Sprite();
addChild(debug_sprite);
debug_draw.SetSprite(debug_sprite);
debug_draw.SetDrawScale(world_scale);
debug_draw.SetFlags(b2DebugDraw.e_shapeBit);
world.SetDebugDraw(debug_draw);
}
private function update(e:Event):void
{
world.Step(1 / 30, 10, 10);
world.ClearForces();
world.DrawDebugData();
}
}
}</pre>David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com0tag:blogger.com,1999:blog-985473086724541245.post-14570064852660682352011-09-28T02:39:00.000+10:002011-09-28T02:39:09.308+10:00Radio SilenceHey gang,<br />
<br />
This is going to be a pretty long post as there is quite a lot to cover and I want to go over everything. So, as anyone who reads my blog is aware, there has been a long time since the last post, there has also been a lot of things happening on my end but I won't make up excuses, I've been lazy. I've also been flagging at my app idea, which, unfortunately, is now in the trash can until such times that I can be bothered to pick it back up again.<br />
<br />
The issue with Flip the Switch (it got a name!) was that it was structurally broken from day 1, there are so many holes in the code as we speak that the more efficient way for me to fix it would be for me to start again - which, co-incidentally I'm doing! My major gripes so far with developing for Android with Flash, and anyone who is thinking of getting into the market as well, please consider this list before you get started, as it'll save you a lot of time in the long run.<br />
<br />
- Flash to Android debugging; is a really annoying thing to set up and to run in the background whilst you micro-manage code. It's fiddly and if you run a few harddrives on your computer like me, you can spend ages with annoying error codes in Flash Builder as one thing can't see another thing etc. etc.<br />
<br />
- Android Manifest.xml editing; this one is slightly my fault, I will admit, but I'm yet to come to a suitable fix for the issue as well. There is one thing that will always get game developers when you start developing for android - you have to deal with different resolutions, different dpi's and different hardware. The first two are the most concerning, because anything that you code into your game in pixels is going to come out different screen to screen, it's possible to make this a little easier on yourself through some pretty complex Flash coding - which I'll be posting up here in the vain attempt to get a little more traffic through, but all in all, it's pretty damn hard to get the swf file to scale to different dpi's and screen sizes and not have issues with sprites being cut off.<br />
<br />
- AMAZING ANDROID 2D BOX COCO ENGINES! This is something, that I have to say, after almost a month of going through has irked me more than anything. I don't know if it's a personal trait, or if it's a global problem that the world suffers, but in the last month, I've tried to learn to use no less then seven engines for Android, most of which, obviously are based in Java, but boast "Amazingly easy to learn!" & "Instant integration!" I've got to say, it's saddening to see things like this. I'll be honest with you, it's great if you're able to get your hands on a fully fledged game engine and just start pumping out games - but realistically, the chances of you being able to just pick one up, and unassisted (most documentation is pretty lax) just start to churn out great game ideas, are not great.<br />
<br />
This has been the single biggest time-waster that I've had - I come across a problem with my current code, go searching and the only support that I find goes something akin to this "Oh, I had this problem, and then I started using engine X and all my problems were fixed and I found five bucks!"<br />
<br />
I've come to the conclusion that if you feel the need to use an external game engine you're one of two things:<br />
<br />
- Lazy<br />
- Shouldn't be programming games.<br />
<br />
Getting help phoned in is (I feel) cheating, if there is something that the game engine does that you don't understand (it just does something magic and you get a game out the other end) then you shouldn't be using it, I've started to program a new game, and I'm essentially laying out a fully functional game engine to go along with it, and I'm going to take the long road and learn how all the parts fit into each other - it's going to be harder and probably more frustrating then going and picking up one of the many free engines, but when I'm through with it, you know what? I'll have my own game engine that I know back to front and can manipulate as I see fit, and no open source, free, paid for, whatever, engine out there can say that for each individual user.<br />
<br />
As you can see there's been a bit of a block in the creative flow of my programming, which has largely been caused by needing help and being confronted by a bunch of mindless Zombies reeling off engine names at me -.-<br />
<br />
But, there has been other things that I have come across that I feel contributed to Flip the Switch going onto hold. Such as the fact that in all reality, I was finding it very difficult to code anything new into the game and as such wasn't getting any closer to putting something onto the market, and this is the big thing! What I want is something that is going to be quick to develop (relatively) can support itself (ad support) and will ultimately give me a good idea of what it's like to receive feedback and change and update a game depending on what the users have to say.<br />
<br />
Those three points listed above are something that I want to talk about too; having something that is quick to develop from idea to prototype to beta to release is CRUCIAL in the app field, because if you've thought of it, you can almost guarantee that there is someone else that has thought of it too and might be quicker at coding then you, or have a team of monkeys with him to help. So the simplest ideas are often the best - and when I first sat down to think of ideas, Flip the Switch seemed simple, I was thinking of all of the elements that I was going to implement, and now on the other side I can appreciate more then ever exactly what goes into a games development.<br />
<br />
Having an app that supports itself is something that is very important too - and it's a real problem for people that are developing through AIR for Android as there is pretty much only one choice - <a href="http://www.admob.com/">AdMob</a>, which you can put as a overlay on your game, app or whatever and just sit there. The real problem with that is that <a href="http://www.admob.com/">AdMob </a>isn't exactly know for it's great income, and the mobile advertising market is something that belongs in a complete other blog post (yes, I'll do one, I promise.) But the major companies that are doing advertising that you can use in an app are things like <a href="http://www.millennialmedia.com/">Millennial Media </a>& <a href="https://www.tapjoy.com/">TapJoy</a> - both of which only offer a Android SDK - which of course is in Java, and totally unusable by myself. So admittedly, from an income perspective, Flash - not the way to go until such times as there is support for people such as myself (when it happens, it will be a happy day!) This then leads me back to my freemium post which I made a while back, but I'll cover again in another post.<br />
<br />
Finally there's the feedback that people that use your app will give - negative, positive, anything that a person says about any app that is made will change what is done to it in future updates, and as such, having a total of 0 apps on the market, means that I have NO idea if any of my game ideas are going to sell well, if at all!<br />
<br />
Well, that's pretty much all that I've learned about the fickle mistress that is the Android App Market since you last heard from me. Where am I going from here? Well, I'm going to cut a lot of the fat away from what I've been developing over the past month, it's been in drips and drabs, and ultimately has led nowhere so I want to perk things up and start afresh and see how that gets me going. I'm starting on a new game, but am taking a real solid interest on getting the game engine and logic side of things right so that should I get to completion of the game I'll then be able to use that knowledge, and even perhaps some code on new projects that I start.<br />
<br />
The game that I'll be making (and I know it's already on the market, doesn't mean I'm not going to make it) is a simple constant scrolling game, using the accelerometers in the phone or keyboard input move your player back and forth to drop down slots to avoid being pulled off the top of the screen - simple idea and with a bit of polish can go far. I'm not going to try and aggrandize this idea with anything else at this point - I'm going to release it with a easy, medium and hard difficulty, a scoring system and that's it.<br />
<br />
I'm not expecting it to go far, but what I do want to do is get it out there! And then once I have, start working on more additions to it to get people coming back (think new power-ups etc etc.) But for the mean time, I'm working on this simple idea and am sticking to it till it's done.<br />
<br />
Another thing that I wanted to do was to organize starting to create some tutorials for any aspiring app creators that might happen on my blog (I dunno, they might :S) But I'm going to try and put a few together with my own personal spin on them for people looking to make games with android using just a simple physics engine and their own know - how.<br />
<br />
In the mean time though, it's three in the morning and I need some sleep I think... Maybe.<br />
<br />
David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com0tag:blogger.com,1999:blog-985473086724541245.post-74893132812436560432011-09-08T17:14:00.000+10:002011-09-08T17:14:04.344+10:00A lesson in version controlHey guys, just a really quick post about version control. This was something that was touted to me during uni and I never really understood what it meant until this week. So I was set to make some major changes to the game and set about introducing some singleton pattern classes to reduce some of the load.<br />
<br />
I however didn't think to save a new version of everything before starting to make changes - this was the first mistake as when I then found that a lot of the changes that I had made didn't work, I had nothing to fall back on, no backup - the only thing that I could do was reverse engineer all the work that I had done to get back to what I had started with.<br />
<br />
The lesson: MAKE BACKUPS!!!<br />
<br />
David.<br />
<br />
<br />David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com0tag:blogger.com,1999:blog-985473086724541245.post-31734834235083954752011-09-02T00:44:00.000+10:002011-09-02T13:15:53.902+10:00Alpha v0.0.4Hey team, <br /><br />Well it's been a while and there has been a lot of things happening on my end in terms of app programming and the like.<br /><br />I've started up a new app idea, and have also made some changes to my game.<br /><br />The camera function should now be working fully - which is exciting. I've also got a back and forth switch which allows the user to change gravity back and forth. I am now working on developing the game flow so that when the user reaches the end of the level, you can actually move to the second level. I will then work on balancing and then developing out the levels in full.<br /><br />It's all rather exciting. The biggest thing that I've wanted to get out and done with is the Google analytics and the AdMob - for those of you that don't know the market for apps very well, or haven't really thought about it before. Ever really wonder why there are two versions of most games? A free one and then one to purchase - with the free one you have to suffer through ad screens whilst the paid apps will sometimes give you extra features / content to allow you to have a richer game experience.<br /><br />It's my general understanding that the main reason behind this for most app companies is that the revenue that can be raised from having ads in a game is equal to or greater than the revenue raised from a paid app - and the most important factor of this is that everyone will immediately go to buy the free app first - it's free... And each time that the user clicks on an ad inside that app - it might make the developer five cents. Now, lets expand on that a little, Angry Birds, for the sake of the argument has had around six million installs for it's free version of the game. the possibility of someone clicking on an ad is not high, I know that I rarely click ads, and if I do, it's usually by mistake, but if there was six million of me all playing at the one time, well, you get the idea - monkeys and Shakespeare etc. etc.<br /><br />And then once you go and finish the free version of the app and want a second taste, you can go ahead and get the paid version, which again means another payment in the pocket of the developer. This all sounds pretty grim, but to the consumer and to the companies that are using the advertising services there isn't too much to be sad about, typically speaking, this will mean that we are going to see more and more apps come in for free onto the market, this will give the market a much richer breadth of games as well as all around apps, and for the advertisers, this will mean better product exposure and a better return on investment.<br /><br />To anyone who reads this blog and has any input on how you think the industry, in particular the app industry is going, let me know your thoughts! It'd be great to hear from some people as to what you think of the "freemium" way that the market is shaping into.<br /><br />Finally, I'll give you all a bit of a bullet point list on what I'm hoping to accomplish in the next week or so with the game:<br /><br /> - A level select menu - with around 5 levels to play.<br />- AdMob integration & Google Analytics<br /> - A clean method for destroying and selecting levels.<br /> - Better feedback about gravity and which way up you are - the reason that I raise this one is that it can be a little confusing as to which way is up, as at the moment, constant mashing of the gravity switch button can put you into limbo and up is east, or something. So I'm wanting to introduce a funky new method which will allow me to "flip" the world so that the gravity is always the right way up, but the level rotates to accommodate for "flipping"<br /> - A limit on the amount of times you can "flip." This will be dynamic from level to level. This really introduces a puzzle element as it requires you to think about the your next move before you make it as you have a limited amount of times you can flip.<br /> - Scores and points - this is a point of contention for me, I'm not really sure which way I should go on it. A lot of me thinks that perhaps the best way for the scores to work is for it to be timed, but then I don't really want the game to be rushed, I want players to have to take their time in playing. But then I'm only really left with the option of having a limit on the amount of times you can "flip" and if you have remainders, you are scored on that. Something similar to Angry Birds etc. etc, where by being awesome and taking short-cuts, you're rewarded with better points. What do you all think? For the time being, I think I'll probably go with just a simple timed interface.<br /><br />This is just the start, however.<br /><br />I wish I could show you all a little of how the game is playing at the moment, but I'm still working on getting a video capture feed onto my phone, once I do, I'll start to post up "progress" videos so that you can see where I'm at with it all.<br /><br />Here are some screen shots to show you what I'm up to, I'll go into a little detail about the camera too:<br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-UHqCpUsNaVk/Tl-YNrTHl3I/AAAAAAAAACk/lNXaT25Z2r0/s1600/2011-09-02+01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="192" src="http://2.bp.blogspot.com/-UHqCpUsNaVk/Tl-YNrTHl3I/AAAAAAAAACk/lNXaT25Z2r0/s320/2011-09-02+01.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: left;">This is the first image - the black circle is a placeholder image for the switch which will invert gravity back and forth. The text reads "Gravity Normal."</div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-gEBbQFYg0A8/Tl-YN0AXdvI/AAAAAAAAACo/xXqctpepspk/s1600/2011-09-02+02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="192" src="http://2.bp.blogspot.com/-gEBbQFYg0A8/Tl-YN0AXdvI/AAAAAAAAACo/xXqctpepspk/s320/2011-09-02+02.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">This is the game after gravity has becoming inverted - this is where the beauty of the camera class that I developed has come into it's own. I've made it so that when a level is drawn, it's drawn on a canvas that has a canvas on-top of it, for anyone that has worked with flash - I have made a display object container that contains a object container, the physical game world is drawn on the bottom most layer, and then the UI is drawn on the upper most layer. </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">This means that things that affect the viewable section of the bottom most layer don't affect the uppermost as they act independently of one another, the bottom most inherits the top most features, but changes to the bottom most won't affect the upper. That's a lot of bottom and upper, but when I draw a level I hand the camera class a x and a y value, which are the dimensions of the level - the camera interprets these as bounds and will never go beyond them - the ball will try and remain in the screen unless the view port bumps up against the edge of the level and then you get a nice fading affect which allows for a much smoother look.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Anyway, I have lots of work on,</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">David Out.</div><br />David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com0tag:blogger.com,1999:blog-985473086724541245.post-77046775836750772532011-08-22T18:48:00.000+10:002011-09-02T13:15:54.172+10:00Alpha v0.0.3Hey guys, a little update on how the game is going.<br /><br />I've been experimenting with cameras and the like, and I've got to be honest, the maths is mind-boggling. Anyone that's dealt with coding and knows about x co-ords and y co-ords I feel you.<br /><br />I've run through a few tutorials from various locations with no avail, the issue that I'm facing is that I am trying to get the interface overlying the background which contains the box2d world.<br /><br />This sounds fairly simple, but is overtly complex... I'm now trying a few different types of cameras to get things working properly. On another note I have been putting a lot of research into advertising and revenue within the game, the plan is to release two versions of the game once it goes live, one for a one off payment from the market and one free from the market which contains ads in order to keep revenue.<br /><br />In the mean time, let me give you a bit of an update on how things are going and where I'm at with everything. I have got the collision detection down pat, I now have an efficient way in which to instantly check between two objects and issue a boolean to be one or the other. That sounds complex, but basically means at any point in the code I can essentially write:<br /><br />isCollision(objectA, objectB) -> do somefunction().<br /><br />This means that I can do a variety of checks for collisions with the various parts of the level, the major updates that I have in mind will include some interesting things with gravity and magnets (HOW DO THEY WORK?!)<br /><br />In the mean time, I don't have anything to deploy to the market yet, but I'm hoping that once I put the camera into code I'll have something that I feel is solid enough to put up as a download for all ya'l peeps!!!<br /><br />David out.David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com0tag:blogger.com,1999:blog-985473086724541245.post-79011484343427446682011-08-18T23:06:00.000+10:002011-09-02T13:15:54.198+10:00Alpha v0.0.2Ok - so since my last post there has been only a few changes to the build - I'll be honest with you, what shows up on the screen isn't very different. But the back end has been modified pretty heavily to allow for an expanding range of levels etc. <br /><br />The major thing that is included within this build is the ability to play it on a Android phone. I've made a Accelerometer listener which will change the force applied to the player (ball) and tapping the screen repeatedly will now make the player 'float', which I will soon be modifying into a jump function.<br /><br />Another addition is camera panning and scrolling with the players movement, I'm still tweaking, and it's a bit of a mind bending thing to try and work out. I think that the best way for me to go about this is for each level to have an x and y bound that will restrict the camera when the player reaches the edge of the level. Otherwise the player will try and stay in the centre of the screen.<br /><br />Finally, I've also signed up to be a developer with Google, it's $25 and for ever. The only thing that I haven't done in order to get my game up onto the market is to get some icon graphics and some screen shots. <br /><br />I'm not uploading any variations to the market just yet, as I want to keep some cards close to my chest as it were, in the mean time, here are some screen shots to show you what's happened to the game so far. As I keep on re-iterating; there are a lot of back end changes that are happening at the moment to ensure that when the times comes to develop levels and to make the game into a fully fledged program.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-4Hp-6k8JfUM/Tk0OP4XfKbI/AAAAAAAAACY/yNMZXfe6_J8/s1600/SS01.jpg" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"><img border="0" height="232" width="370" src="http://2.bp.blogspot.com/-4Hp-6k8JfUM/Tk0OP4XfKbI/AAAAAAAAACY/yNMZXfe6_J8/s320/SS01.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-LDaSS588SuY/Tk0OPwfkoBI/AAAAAAAAACg/KQj0J5fSYKQ/s1600/SS02.jpg" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"><img border="0" height="232" width="370" src="http://3.bp.blogspot.com/-LDaSS588SuY/Tk0OPwfkoBI/AAAAAAAAACg/KQj0J5fSYKQ/s320/SS02.jpg" /></a></div><br />Next update will come when I've had some more time to work on the structure of the levels and the end - of - game event listener.<br /><br />Thanks all for your time.<br /><br />David<br /><br />David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com1tag:blogger.com,1999:blog-985473086724541245.post-86049928922333319712011-08-12T02:41:00.000+10:002011-09-02T13:15:54.224+10:00Where are we at?Hey guys,<br /><br />This is going to be a pretty long post because there is a lot of stuff that I want to go over and a lot of new things that I'm going to bring to the table. For those of you that have known about my gaming endeavours in the past, you may have remembered I was hoping to create some form of 2.5D side-scrolling platformer for something or rather.<br /><br />Well - let me tell you something, that's not the easiest, especially when you're working with a language that you're not familiar with - at all. So - where did that leave me? A language that I didn't know and a game that was really awesome in my head and pretty much impossible to get down onto paper.<br /><br />So, over the past months, whilst working at a real job, I've been devising a way in which I can both develop games in a form that I'm comfortable with as well as be able to produce it in such a way that it is deployable to a mass market. The more astute of you have probably realised where I'm going with this already hey?<br /><br />Mobile Apps - the obvious solution to my issues. A massive market and a simple delivery system. Only one problem with it. iPhones want me to program in progressive C - i'd rather eat balsa-wood. And android is programmed in Java, a language that I've heard a lot about, and is OOP, but never actually touched. Well - after a little digging and a few advances in certain programming suites, I cam across this nifty fact - Adobes new Flash builder 4.5 has the functionality to package a Flash game up into a .apk (android application file) and what's more then that, deploy it to a device.<br /><br />So - this was great! I'm going to able to program away to my hearts content in a language that I understand and am competent at and then be able to test it out on my handy nexus. The only thing that's left to do is come up with some good ideas.<br /><br />I'll lay it out to you all, I have millions of good ideas for games some of which are way out of my ability to program, but also out of the technical capability of the devices I'm hoping to deploy too. I've managed to narrow my search down to just a few good ideas. <br />Again, those of you that have been around for a while will know that I made a fairly simplistic and overall hacked code piece of work called "Under Pressure" as part of a uni course a few years back - the engine that I used behind that game - Box2D has grown in leaps and bounds in the time that I've been away from games. Something that I'm glad about, it's that much easier to use now and coding time for it's various functions has been cut drastically from previous versions.<br /><br />My time spent programming Under Pressure got me very well acquainted with most of the functionality that Box2D has to offer, and now that I have found that you can make Android apps that are built in Flash - why wouldn't I?!<br /><br />For those playing at home, the three ideas that I have, which, in my head seem programmatically possible are:<br /><br />1 - Side-scrolling puzzle platformer; Codename "Rain." This was the idea that I was working on in UDK all that time ago for the 2.5D game - I figured that it's still theoretically doable in a 2D physics engine. <br /><br />2 - Rocket Shooter; I have seen this game somewhere before, but the delivery was somewhat lacking. Think of it this way: shooting a rocket from earth to another planet, or a goal location. Easy hey? What if I put a planet in the way? Then what? Well, as we all know from Apollo 13, you can do some pretty funky things with gravity and the like, so, this is the premise that I am basing this idea off, sort of inter-stellar golf (Futurama anyone??). With the added feature of planets that will try and suck your ball (ship) off course.<br /><br />3 - Gravity mind-f*ckarama side/floor/roof scroller.<br /><br />I like this one - I have to tell you, I like this one better then the others, which is why I'm digging into this idea first before I go anywhere else with it. So, think of this: point A -> B game, BUT! Activating certain powerups will flip gravity, upside-down, to the left, to the right etc. A puzzle format game so that you have to premeditate your next move, but essentially the idea is that you can't finish levels unless you do some gravity switching.<br /><br />These ideas are currently in the works, and I'm sure will all go through refinement over time, for those of you that have any good ideas like the ones above, let me know! Or if you've seen these games made before. <br /><br />Now - where am I at the moment? Well, I've got my programming pipeline sorted, so that's the first hurdle out of the way, I'm currently working with the new functions that working with a mobile device has given me, for example, accelerometer input, multitouch etc. I'm using the most recent version of Box2D, which is 2.1 at the time of writing this, it's in Alpha stages.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-6lD3duoh3Ng/TkQCmG9InyI/AAAAAAAAACQ/0taI98F8BIE/s1600/Screen%2Bshot%2B2011-08-12%2Bat%2B2.22.23%2BAM.png" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"><img border="0" height="305" width="400" src="http://3.bp.blogspot.com/-6lD3duoh3Ng/TkQCmG9InyI/AAAAAAAAACQ/0taI98F8BIE/s320/Screen%2Bshot%2B2011-08-12%2Bat%2B2.22.23%2BAM.png" /></a></div><br /><br /><i>Figure 1: FlipTheSwitch Alpha 0.0.1</i><br /><br />I say alpha like that's a joke, but it's actually kinda true - this is the game in it's most basic form. The above screen shot features a few elements. For those of you that have had any experience with Box2D, heck, for those that haven't too - I'm no artist, I admit that first and foremost - I am terrible at drawing anything, especially on computers. So I use Box2D's funky little debugDraw function which renders everything in nice basic colors for me so I can see what I'm about.<br /><br />The above screenshot features three Box2D elements, for the sake of the argument, the circle is the player - very imaginative I know, but it gives the game a little variety, plus it rolls nicely when the accelerometer receives input. The green blocks in the corners are gravity "switchs" the Box2D collision detection picks up when the player hits one of these boxes, and will flip gravity in any of the four directions, for the sake of my sanity, and to not confuse myself, they're North, South, East and West in the back end.<br />.<br />The last element, is of course the walls - yay! Without them, the ball would just roll off the screen and onto the floor... And then out the door.<br /><br />Well - what's in store for this game? What's next on the smorgasbord for this little nifty thing? Well, I'm currently working on input logic to detect when the user taps the screen, I know that there is inbuilt functionality, and will post up a working APK file once I have figured it out, but that is essentially what's next.<br /><br />The biggest feature that I want to implement, and the one that poses the biggest logistical problem is this: when the player entity rolls over the say North gravity switch (this will send gravity's downforce north, or reverse it for those of you playing at home.) The entire screen should rotate so that the new gravity is represented as the downward direction. Yeah - that's what I said too :S, the biggest problem that I think I'll have with doing this is that when the borders of the world flick around, then they can and will impart some sort of force on the player - I don't want that. It is possible perhaps to make the player a static object for the duration of the rotation (heh, that rhymed) but finding out how long the rotation will take, being able to detect that... It's all a bit crazy.<br /><br />I will keep you all updated as things progress on that front, but in the mean time, I'm going to finish up with the input features that I would like to get going with the phone and then I'm going to start work on developing some form of level building device so that I can chop and change as I see fit.<br /><br />The biggest mistake that I made with Under Pressure was to use the Flash Professional suite in conjunction with Flash Develop - developing in two separate programs was both time consuming and led to problems I also built the individual levels of Under Pressure visually using Flash Professional, which meant that come time to change level in the game, the entire old level had to go through the rather expensive process of being pushed into an array and then destroyed whilst the new level was drawn all from one big function - not very good coding nature I know. And certainly not something that I want to include in a build for a mobile game. What I DO want to do however, is to have a levels "Class" which is called when the game wants a new level, this means that I'm not iterating over hundreds of lines of code to find the code to draw a level up. <br /><br />Anyway, I'm prattling on about nothing now, so I'll sign off and give everyone an update and a working version of the APK file (it's not going to be stunning, I assure you, in the near future.<br /><br />Thanks for reading all this if you got this far, you're a true hero :).<br /><br />Dibs out. <br />David 'Irish' Bindlosshttp://www.blogger.com/profile/13122349092220792376noreply@blogger.com0