Tuesday, May 31, 2011

Chase cam - quick and dirty...very dirty

Yeah it's a bit rough, but you know, I've never found a polished stone sitting out in nature, so I think it's okay to start this way.  Also I had to do it in 2 parts because it was too long.  I think I will keep a stopwatch on hand from now on.


I'm contemplating ways to keep the walls out of the way and maybe I will try ray tracing.  If it hits a wall, move forward a bit--something to that effect.  You know, the really crappy thing about doing things this way is that I feel like everything I want to do I have to re-invent the wheel.  But that's also the great thing in a way...I feel like my brain is expanding every day!  On that note, I think I will start a new feature soon where I take the API functions I have used so far and expound on them based on what I have had to figure out.  We'll see....

Vectors!

 
 This video is my attempt to explain the very basics of vectors and how to use them.  I specifically hit on normalization and how that is useful.

Effective advertising

So the end goal for any indie game developer is to make at least enough money to be able to continue making games.  I have been researching some of the options available for earning money from games and the tough part now is to decide on what to do.  I know that it may be a bit early to think about it when the game is so far from completion, but I like to have some idea what I may do in case it will effect the development.  So far I have heard of these options:
  • Virtual currency
  • Direct in-game purchases
  • Pay to play(subscription)
  • Charge for the game
  • Charge for expansions
  • Advertising
  • Donations
  • Sell to a publisher or game portal
  • Some variation of the above
The difficult thing is finding the right balance.  You don't want money to get in the way of the game and yet you need money to continue to improve the quality of games that you can provide.  Even if you go strictly with open source and free tools,  and do all the coding, design, art and sound yourself, you will still have to worry about somehow getting test devices, upkeep on your hardware, application fees for app stores, etc.  And let's face it, if you work alone there is a limit to the kinds of games you can produce in a reasonable amount of time.  For a simple game like Radioactive, I think I am leaning towards either pay up front or make it free and pay for expansions, but we'll see!

Local and global coordinate systems

 
I wanted to get several videos done today, but life has a way of getting busy.  I have done quite a bit of work on the game in reference to trying to figure out the right way to code a chase cam that will act the way I want.  I think I have a good start and so now I am doing the videos.  The first is this one that talks about coordinate systems so that we have a basis for some of the code I had to write.  Next we will talk vectors.

Monday, May 30, 2011

3DConnexion SpaceNavigator profile for Blender 2.5

I had a request from my YouTube channel for the SpaceNavigator profile I use in Blender 2.5, so here it is: http://sites.google.com/site/subspacegames/blender.xml. Feel free to use it and modify it all you want.  If you have no idea what I am talking about, my video for the SpaceNavigator is here.

Friday, May 27, 2011

Added some walls

 

Nothing too exciting on this one--I didn't have as much time as I would have liked, but we now have walls and I increased the power of the ball.

Challenges with the diversity of the Android Market

For those of you interested in hitting the Android market, Gamasutra has an interesting article about the Android market.  I have to be honest, the idea of publishing to the Android is a bit intimidating, but only because there are so many different form factors to test.  The same goes for Blackberry, but to a lesser degree.  The nice thing about ShiVa is that everything scales to whatever resolution you are running in.  Of course you still need to check that things aren't too small, etc, but at least from what I have seen so far it works pretty well.  I'm hoping that the same can be said for Corona since that will be my next project.

Thursday, May 26, 2011

New link - Game Prototype

Check out the new link in the navbar above.  I will be publishing the game to the link above each time I make changes in one of my videos.  As I add more content, head to the forum and give me feedback and tell me about any bugs you find.  If you participate in the testing you'll get your name in the credits of the game!  If you want to leave anonymous comments and feedback, feel free to leave comments on a blog post.  I plan to add a link to the forum on the game page and vice versa, but I'm really tired now.

Vid 8 - Publishing a playable game to a website in ShiVa3D

 

Finally!  We publish the game to the internet.  Don't expect a lot at this stage - I merely want to put something up so that you can see how easy it is to publish and so you can go from watching the videos to actually interacting with the game.  I want to send out a big thanks to Mat at My Design for donating the server space for the game.

Vid 7 - Materials in ShiVa3D

 

Added some basic colors to our objects to get the game ready for posting to the internet.

Vid 6 - Adding more control to an object in ShiVa3D

 

 Ok, I was able to finish my video with my new software.  In this one we add some more code to make the ball return to its starting point after it comes to rest.  I recorded 3 videos tonight, so get ready for the spam! =)

I changed my video software...

Ok, so after the vid 5 debacle where my software cut off the last 3 minutes of my video and after having my video software crash all the time, I did some research and found HyperCam 2 and it is fantastic!  I'm sure my other software had settings I could have played with that would have made things easier, but HyperCam worked wonders right out of the box and it's free on top of that!  My videos are orders of magnitude smaller than my old ones and the quality seems to be just as good.  Anyway, give them a try.  The only thing I don't like so much is that the screen doesn't follow my cursor without holding down other keys while I move my mouse.

Enabling and Disabling an Object's Physics Controller in ShiVa3D

 

I just realized I never posted this video to my blog!  Mainly because I do this at night and sometimes I let the videos upload while I go to bed.  In this video I disable the physics on the ball and then go about changing the code so that the physics gets re-enabled when the mouse button is clicked.  I also set a boolean flag so that I can tell when the ball is in play -- important for disabling the ability to add more force to the ball after it has been launched.

Wednesday, May 25, 2011

In-game Achievements Analyzed

There's a good article on Gamasutra about how to use in-game achievements and their impact on the players.  Achievements are definitely something that I would like to eventually put into my games because there are plenty of cases in which I am going back and trying to find all of the achievements within a game even after I have "finished" a game.  Personally, I hate when there are achievements that can only be earned once so that you can't go back later.  Most of the time I am playing a game I am not focusing on the achievements until I finish the game and it sucks to find out you can't go back to that achievement unless you start the whole game over again.  I would be interested to hear about your ideas of successful achievements.

Tuesday, May 24, 2011

Setting AI Variables and Basic Event Handling

 

This video demonstrates how to set variables in another AI.  For those of you that haven't been watching the videos, the AI modules contain all the code to run the game.  You define behaviors and actions in the AI and then attach it to a game object.  The game itself has an AI that is responsible for handling all of the events that are generated during the game such as screen touches, mouse button clicks, etc.  The video shows how to pass events to a secondary object from the game AI and how to do the same with data.
I'm hoping to start doing a few videos a night so that we can make some progess.  The last couple of nights have not worked out the way I wanted because the hard drive on my computer is getting too full of all the videos and so it crashes in the middle of recording.  Hopefully I will be getting another hard drive soon to clear out the videos.

External XML in Shiva3D

 
This video goes over how to access an XML document from within Shiva3D.  I like the idea of putting your settings in a separate file because it makes it so much easier to update them when needed.  The heavy lifting for this video came from the Shiva website - http://www.stonetrip.com/developer/377-xml-manipulation.  I simply did a google search for "xml shiva3D" knowing that it would direct me to the appropriate page on their site.  Once I figured out how to do it, it was pretty easy to implement in the game.

Also, check out http://www.stonetrip.com/developer/doc/ for api and manual information and http://www.stonetrip.com/developer/wiki/index.php?title=Main_Page for the wiki which has a ton of useful information.  The forums are at http://www.stonetrip.com/developer/forum/ so stop in and say hi or ask a question - I'm wdtracy.

Friday, May 20, 2011

Great News!

Wow!  I'm excited!  I sent off an email to Stonetrip, makers of Shiva3D, and they have graciously allowed me to put a web version of my game online before actually buying the game engine.  I don't think I have explained how this works, but Shiva has the PLE - Personal Learning Edition that you can download for free to try out their software.  I encourage you to go download it at http://www.stonetrip.com/download.html -- download the Shiva3D Suite.  That is the version that I am using and it is fully functional it just leaves a watermark on the game screen when you play it.  I'll put some video up in the near future, but basically all I have to do for the web version of the game is put the game files on a server and then put some autogenerated HTML into a webpage and that's it!  When you click on the link, it will install a very small plugin and then you can play the game.  So the idea is you will be able to test my game and give me feedback while I am developing.  All testers will receive a spot in the credits of the final game.

A final note--if you find my content useful, please click on an ad or two.  Trust me, I know they are annoying, but I am starting to incur some small expenses on the project and hopefully ad money will help mitigate those expenses.

Thanks!

Thursday, May 19, 2011

Shiva3D PolyTrail Editor Overview

 

Yay!  Finally done with the "overview" videos so now we can start the actual game development.  I still plan to have basic prototypes available online, but I also need to verify with Stonetrip that it is okay to use the web plugin functionality for testing while I am using the free version of Shiva3D.  I plan to buy a license ASAP, but on my tight budget I will need to save up - it's around $200.  Of course, if you want to click on my ads, I may get there quicker =)

Particle Effects Overview in Shiva3D

Shiva3D Material Editor Overview

Shiva 3D Log Reporter overview

 

Wednesday, May 18, 2011

Game Prototype Coming Soon!

I came up with a wild idea, I am going to put the prototype for the game online and use your feedback to make improvements as I work through the iterations.  Many of the interviews I have been listening to at the Experimental Game Dev Podcast Show have talked about how useful it is to do testing and iterative development.  I am not sure how it will work out having it online like this, but we will see.  In order to support the conversations around testing, I created a forum at http://indiegamesdev.lefora.com and also put a link in the menu bar at the top of the page.  Be the first one to drop in and say hi!

Shiva3D 3D Game Engine AIModel Editor Basics

 

We're getting there!  This video shows the basics of the AIModel Editor which serves as the brains of the whole operation.  I like the way you can package a set of behaviors into the AI and then attach it to whatever model needs that functionality.

Attribute Editor in Shiva3D

 

I busted out a bunch of video last night so that I could get to the actual work on the game.  I will be posting 6 more video over the next 2 days and then it's off to the races!

Tuesday, May 17, 2011

Game Editor overview in Shiva3D

Quantity! Great advice for indie game developers getting started

I love the Experimental Game Dev Podcast Show because of all the great information in the form of interviews.  I have been spending all of my spare time listening to these interviews going back to 2006.  Today I was listening to the interview with Tom Scott from December 2008 and this is what he had to say--its long, but worth the read:
It’s not particularly positive advice when you first hear it, but it’s the kind that’s helped me through. If you spend 10 pounds on your game – sorry – if you spend ten bucks on your game, whatever, it’s likely to fail. I’m just saying there are so many people chucking so many ideas out onto the Internet that you’re likely to get lost or somebody else would have gotten there beforehand or the public just won’t be interested. 
There are a million people chucking a million ideas a day at the Internet and for most of them just by the laws of probability are doomed to fail. If you spend a million pounds on a game, it’s still likely to fail. And this is what big companies don’t get about the web. It’s that the odds of a million pound project succeeding aren’t much greater than the odds of a 10 pound, $10, project succeeding simply because of that same weight of numbers. 
You don’t know what’s going to capture the public’s imagination. I used to think that people had a magical corporate influence detector, and that anything that big companies put out on the web was going to fail simply because people could detect that it was corporate. It’s not the case. It’s just the fact that corporate games are outnumbered so so greatly by the millions of people putting ideas out there. The odds are that the million pound games are going to fail just as much as the 10 pound ones.
My advice is don’t worry about it. Chuck out as many ideas as you can. The only way to improve your odds is not to spend a year of your time working on that one perfect project. Put out a quick version of it. If it’s successful, spend the time and the budget on that. If it isn’t successful, chuck out the next idea instead.
The big bit of advice I always have is put as many ideas out as fast as possible. Be in as many places and as many times as you can, and then, maybe, one of them will be in the right place at the right time

Someday I will have the resources to really do a great, in-depth game, but for now I am shooting for quantity so that I can learn as much as possible and get my skills up.

Demo of using the 3Dconnexion SpaceNavigator in Blender 2.5 and Shiva

 

I had a user ask for a demo, so I spun up this video.

Monday, May 16, 2011

Shiva Data Explorer module overview

 

The Data Explorer module within Shiva gives you control over your assets.  You can create, import and organize models, textures, particle effects, etc.  This video will introduce you to the basics.

SpaceNavigator in Blender and Shiva

 

The new version of Blender does not support the 3Dconnexion SpaceNavigator yet, so I did some searching and found information on the Blender forum.  The video shows some of the basic features of the 3Dconnexion beta software.  The other great thing is that this new software gives you the ability to use the 3D mouse in just about any program.  It has done wonders for using Shiva!

Sunday, May 15, 2011

Shiva UI overview

 

Posted a video going over the basics of the Shiva3D UI.  The plan is to have a series of <5 minute videos that cover specific actions within Shiva and then pull it all together as I work on the game.  Stay tuned for more!

Friday, May 13, 2011

Introducing Corona SDK

I originally wanted to try out Corona, but because of some of the other things I was working on at the time I didn’t take the time.  Since then I have done some more research and have decided to give Corona a go.  I think it will be an especially good fit with Shiva3D because they both use Lua as a basis for their programming language.  I have heard good things, so we will see how it goes.  It will be very nice to have solid, affordable options for both 2D and 3D development.  The one thing that I am not so excited about 2D development is the fact that I am a horrible artist.  I feel like I can get by better in 3D because it is more like building with Legos.  Of course both methods require considerable artistic ability to do well so at some point I will probably have to team up with an artist, but I will keep this project simple enough to not have to worry about that at the moment.

First video!

Just posted my introductory video for this project.  Expect more soon.  I plan to do a video on getting a game started in Shiva3D.  My YouTube channel is http://www.youtube.com/user/MrSubspacegames.  You can also get the video on Vimeo where I have a channel at http://vimeo.com/channels/197842.

We’re Back!!

Wow, how’s that for downtime, Google?

Game features

I figure it is a good idea to sit down and put together a tentative list of features when working on a game.  I think this will help me to brainstorm how the game will work and what I need to program, graphical resources needed, etc.  Here is my list so far:
  • Physical level that will house all of the game play objects and also provide boundaries that will interact with the physics.
  • Ball - The object we are trying to get to the target.  Possibly have different skins.
  • Target - goal for the ball.  Most likely be standard design to make it easy to identify.
  • Movable items - items that will be inside the level - placed during level design - that the player will have to move in order ricochet the ball to the target.
    • Columns or other simple physical shapes
    • Trampoline - adds force to the ball
    • Cannon - if you get the ball in the loader, will enable you to aim and fire the ball.
    • Teleporter - probably not movable, but will teleport the ball from one gate to another.
  • Puzzles - Walls of flame, doors or other obstacles that must be dealt with through a series of actions
  • Hidden items - some form of hidden items or achievements somewhere within the level.
I'm sure the list will grow over time, but I am committed to keeping the list manageable.  Variations with similar functionality would be fairly easy to implement with minimal design time, such as several different basic shapes that only function as colliders.

I wanted to see some ideas of the more visually appealing items, so I threw this together for the teleporter in the Shiva3D particle editor real quick:


The video conversion made it a bit laggy at the beginning, but I think it turned out nice.  With the proper lighting I think it will look pretty cool.

    Tuesday, May 10, 2011

    Lets get it started!

    BallThrow in Shiva3D
    So, this blog is supposed to be about game development so I guess I need to kick off the coverage of actual game development.  The screenshot above shows my game in the Shiva3D IDE.  Of course it is just a jumble of objects at the moment because I was prototyping some of the game play, but I have worked out some of the features that I want to incorporate.  I called the game BallThrow for now but that will change.

    So how does one come up with an idea for a game?  Most likely if you are interested in making games you already have ideas and they can come from anywhere--other games you have played, a movie, talking with a friend, etc.  What I want to talk about is how to come up with the right idea.  By right I don't mean the one that will be hugely successful, although I'm sure we would all like to know that, I am talking about the right project for getting your feet wet and getting a finished project under your belt.  I have been reading and listening to a ton of interviews with successful indie game developers and they all say about the same thing--finish your projects!  For my first game I wanted to do something very simple so I would have a better chance getting the thing finished.  The original idea was simply to have several targets that you would have to get a ball through to score points.  You would get 10 balls on each level and in order to move to the next level you would have to get a ball through a certain target.  What I really like about starting with a very simple idea is that it gives you a little breathing room to add features as development progresses.  The game begins to have a life of its own.  BallThrow, for instance, has changed to become a game in which you have an infinite number of balls, but there is only one target and you move to the next level once the ball hits the target.  In order to get to the target you will need to position objects in the level so that the ball bounces off the objects and eventually reaches the goal.  The basic programming of the game will not change much, but as I thought more about what would be fun for me to play, the game naturally changed.  There were definitely moments in which I came up with ideas that would have made the game more difficult to make. I really liked some of the ideas and was set on implementing them, but the more I thought about it the more I realized that I would be making it that much more difficult to finish the project.


    Keep it simple, keep it small.  Once you have a few successes, let your ambition run wild.  Make that epic MMORPG you have been dreaming about =)

    Monday, May 9, 2011

    Links!

    One of the things I have been collecting as I research the internet are bookmarks.  I use xmarks to keep track of and sync my bookmarks across all my browsers and computers.  One of the cool features is that you can share out your bookmark folders in the form of a webpage or RSS feed.  Click on the "Links" button in the navbar above to go to my bookmarks page.  I will be moving over a ton of links as I get them sorted and organized.  I would give you access to my actual folder, but it would be a nightmare to figure out what anything is =)  I'm hoping to figure out a better way to actually integrate the links to my blog rather than dump you out to an external page.

    Choosing your tools

    I think the hardest aspect of getting started in game development is picking your tools.  I have to say that I jumped around quite a bit.  At one point I wanted to do javascript/html, C++, Java, you name it, and so I looked at many of the engines and APIs out there, but never seemed to really find a good fit -- I even considered picking a platform and writing my own engine. I wanted to develop for multiple platforms with as little extra work as possible, but also use an engine that was robust and easy to use.  What finally helped me decide was the fact that we use Blackberrys here at work and I have the opportunity to do some development work for some small projects.  So originally I thought of developing for the Blackberry phones and Playbook and I saw that RIM was partnering with Ideaworks Labs to add Blackberry devices to the Airplay SDK, so I checked it out.  The Airplay SDK allows you to have one code base, but to publish games on multiple platforms.  This was exactly what I was looking for.  The one big problem is that Airplay is C++ and it has been a long time since I have looked at C++ so I knew the learning curve would be steep.  Then I happened to notice that Ideaworks had also teamed up with Stonetrip to allow Shiva3D integration with Airplay.  I checked out Shiva for the first time and finally found an engine I thought I could use.  It is simple to get up and going, allows you to publish apps to multiple platforms and was cheap -- perfect for a lone programmer!  My big hope is that it will really work as advertised.  So I am using Shiva3D for my main development and Airplay for any other platforms I may want to publish to that Shiva does not support directly.  As far as art and other resources, I am pretty much sticking with the open source standbys such as Blender, Gimp, etc.  The Shiva3D developer site has a wiki that lists other helpful software and I will highlight those as I find a need for them.

    Saturday, May 7, 2011

    Welcome!

    Welcome to the Indie Games Development blog - home of Subspace Games.  Subspace Games consists of a single person - me.  I wanted to start a blog that would follow the game development process from start to finish.  I think it will be a good opportunity to learn a lot about making games because there is a lot that I don't know myself.  As I hit obstacles, I will explain the problem I had and how I went about solving it.  I have actually done some work on the game already, so I will have some catching up to do.  The work I have already done is also what has inspired me to start this blog because as I have been looking for information, it has been very difficult to find sources of information that didn't assume I was already a genius or they explained a very simple concept but failed to show how it applied to the bigger picture.  Hopefully I will be able to do a good job of explaining very basic concepts and then integrating them into a finished game.