Building an XNA Game Studio XBox360 Indie Game.

[page 0058] ~ There Under Breathe Couldn’t I:

Updates: – Adobe FlashPlayer Version and Substance Painter, version from
DownLoads: – .

The theme is, Water.

So if all you have is a construction worker in red overalls wearing a yellow helmet holding a huge crescent wrench, and water is the theme, it only makes sense to have the Hero be some kind of plumber.  But, not a Mario Plumber, I think Mario was a plumber, jumping around, collecting coins, where every jump he would make would sound like “More”, “More”, “More”, or so my dad would say, back in the day.  But now, I need a story line, for my plumber.

More Digital Tutors, and with that my PhotoShop has another trick that it can do, Scalable Vector Graphics.  And I have learned a little bit more about SVG’s and how they have less artifacts that build up to degrade the initial view of what was intended to be seen as the contents are scaled up and down within whatever application they are sent to, be it for a resizing web page or in this case a video game HUD.

So I looked into a possible purchase of Adobe Illustrator to use for SVG game art creation.  But one thing that I didn’t quite understand is what Adobe has done with their product line.  Everything has been turned into a “Rent a Product” with a Cloud memory, which to me is not conducive to the way I work.  I might use their product for a total of a few hours every couple of months, and the way it looks, I don’t actually get to buy the product, to then keep it and to use at my own leisure.  But it is more like a lease of an apartment, payable every month, even if you are just going to poke your head in the door to read the help file, during the month.  And further, it doesn’t seem to compare to the likes of a car lease where you could then buy it outright at the end, where it would have a set purchase price that would be paid into until fulfilled or at some point in time, be granted an opportunity to make a complete buyout.

With Adobes’ current business model, if I were to have used that product for, well, let me see …, I’ve been doing this game building stuff on and off since about 1980 till now, and at 30 bucks a month that would be, hmm, over 12 thousand dollars, payable to Adobe, for a product that I would use so sporadically that I would remain inefficient in its use.  It seems to be a rather high cost just to be able to keep my love alive.  Truely, I can not schedule my love to learn for what, nor for when, it will present itself, for the sake of any needs.  And as a hypothetical, if I wanted to use their product for a half an hour this month and then work on some Maya FBX file stuff for the rest of the month, get some textures ready in Substance Designer to then build some models, flipping them back and forth in between Maya and ZBrush using GoZ, then afterwards, see how those textures work in Unity on those models, so then, when I get back to an Adobe product to work on some small GUI HUD for the game like, “how many lives or medical packs do I have left”, which would take about a half an hour or maybe forty five minutes to draw something out, I would need to get another “lease” for that half an hour to use their product for just that half an hour, again?  There is no version that I can purchase and simply open and use when needed?

I really don’t get their sales, lease paradigm or business model.  Not happy.  So it looks like I’ll be stuck with my ol’ reliable PhotoShop CS4 Extended for the time being and if I need something in the future I’ll look to something else.  Until then, what I have, I will need to agree, has its own kind of special charm from out of the past and is even more charming because it is there to greet me and I don’t need to go out to rent it again.

But really, a lease?  I understand ZBrush with its deactivation and web reactivation after an upgrade, just to make sure I am me.  But a lockout with Adobe products?  That isn’t the way I work, play or test with others.  I might be totally wrong but that is what it looked like to me.  Whatever, good for them, I guess.  Maybe that’s how it works for somebody.  But if I am only going to open it up to get a little practice in during the month to hone my skills, I’m not going to pay anyone for a whole months worth of rental.  I wouldn’t be using it at all.  Then my skills would atrophy and my desire would wane.  The skills I have in other aspects of game design that currently use an array of different asset creation tools would become more prominent from their ease of access.  I bought them to use them and to keep them close in proximity.  And when I would like to use it, I would like to not need to feel that I must use it, as an obligation, to their monthly leasing business model, wow, so be it.

I can’t figure out if they or I are actually frugal or cheap.  It seems that they feel it is better to give somebody the newest and the best, apparently every month, or at their directed leisure.  But each time I would get around to opening up that application, it sounds as if it could have something of a different look within the API or a different feel in the implementation of the components.  But, I have done more than enough carpentry in my life to know if buying a Sawzall or a Hole-Shooter makes more sense than renting something that would have a different grip, shake, shimmy and feel each time I would show up at the job site.  For me, consistency, ease of access and reliability through stability is more paramount than someone else’s ideas of what cutting edge learning curves and perpetual changes in work flows can make, for me and of my desires, because of their products.

I think they were chasing the MicroSoft paradigm with the online web office suites of Word, Excel, Access, PowerPoint and the like.  And I really do believe they should rethink their payment schedule and their no buyout clause as they have what seems to be a much better than average set of tools to get some of the odds and ends jobs done.  And what is with the lack of a, “This is the total cost”, bottom line.  I mean, it’s like what they used to say, “Where’s the beef? & in (YouTube)“.  How am I to factor in any ROI(return of investment)?  The biggest question I would have is, at what point in time would I have paid enough to no longer need to continue to pay them every time I would like to open that Adobe product.  Would that be, ever?  It seems that they have no belief in customer loyalty because of the virtues of their product.  And if you get stuck in a mode of work that forecasts the reliance on that product then that end-user is stuck in the perpetual payment system.  To me it’s like going back to the days of the video arcade, paying at least a quarter every time you want to play a video game, where it’s all pay-to-play as you watch the quarters go away faster and faster.  Well, enough of that, no sale, this time, not my quarters.  Sorry Adobe Illustrator, it was not meant to be.

OK, I found it, Never Mind.
Adobe Illustrator CS6 & Full Versions.

So anyway, scalable vector graphics seem to be the best way to have interface components drawn in a video game screen because their definition and clarity remains consistent after being resized.  But after watching “Unity Mobile Game Development User Interface Design“, I was somewhat disheartened by all of the manual hot-fixes and work-arounds that are needed to get SVG’s prepared for and working in Unity as HUD interface elements.  It’s not like it can’t be done, but even to me it sounds like a little bit more ham-fisted knumbskullery than I would be willing to attempt, as a work flow or build process, even if I did have Adobe Illustrator helping me out.  There just seemed to be too much long winded file regrouping and curious guess work going on, although in the end it did work, or from outward appearances it seemed to work, as a resizable SVG.  And it is supposedly light weight enough to run on a Pad or a Tablet as an SVG in Unity.  Probably even a Smart Phone too, but I don’t know how small the scaling for all that, along with the other game assets, would come to the screen and find resolve.  Well, enough of that, too.

Then, after going through a short set of “Quick Start to Unity: Volume 1“, I started reworking my pipeline for the construction of a terrain in Unity.  I followed the same construction methods I had used from the old global settings of the save files I had previously used for my XNA HUD_On game to create my Height, Diffuse and Normal maps in GeoControl2.  But now, with the addition of Substance Designer Indie Pack, I can get a better Normal constructed to give to Unity, which catches the lighting better across the entire terrain.  I think I might be able to formulate some kind of dawn to dusk lighting set up, eventually.  And who knows, maybe even a dusk to dawn C# script.  And then, I could work on a day and night cycle of day-break, morning, afternoon, twilight, evening and night skyline lighting.  But right now I’m getting the shoreline of my maps smoothed out so the beaches are not so jagged and saw-toothed looking.  And for the next little while it will be a grand endurance contest against the dreaded ennui and its desolation fraught with tedium.  But after it is all done and said, it should make for some nice beach front scenery, for a video game at least.  And so it does, but now that I know how that works, kinda, I’ll need to come up with some type of “production pipeline” that can recreate that whole process for all of the processes with all of the differing tools that are needed to go on to get me to this point, again and again, to give me a finished terrain.  It’s nice to be able to do this once, with a lot of hunt-and-peck, but to have an actual work flow within a stable process that can produce the same effects, repeatedly, with consistent results to then be seen and felt as natural without caveat is a whole ‘nother story.

With that being said, and my terrain up and running in Unity, again, I’ll be jumping right back into the Digital Tutors “Introduction to ZBrush” to continue my adventures in that asset creation tool.  In this tutorial, their little whirlwind tour isn’t just a bunch of, click this then click that, then this, then that, but it’s more of a field trip through all of the buttons and settings needed to turn a lot of concerted effort into a nice looking sculpt of an angry worm where the tutorial uses a huge set of a lot of the most common and some of the less common sculpting configurations ZBrush has to offer.

It would seem that I am really digging into this Indie Game Culture thing with all of its conundrums, headaches, triumphs and trophies.

Now, where is that Plumber Hero and what is he up to …


April 22, 2014 Posted by | 2014 [0050] to [00??], The Process | , , , | Leave a comment

[page 0057] ~ Water Water Everywhere:

Updates: – Windows ShutDown Update, Xbox 360 Update.
DownLoads: – Maya 30 day trial and one month of paid Digital Tutors.

The theme is, yes, you guessed it, Water.

I hate it and I love it all at the same time.  SoftImage is going out of print and AutoDesk will have the 2015 version as the last model year out from their product line.  This makes me happy and sad as I was saving up for that and it was the package that I was looking to use for my mesh asset creation and animation production pipeline.  But now I’m happy because I won’t be getting a product that will no longer be supported after 2016, small consolation.  Earlier, I picked up their 30 day version of SoftImage and never hooked it up to my copy of ZBrush and that made me angry and sad, mostly sad because of not realizing that I could hook those two up until about a day or so after that 30 day trial had ended.  But now I’m happy and glad because I have downloaded the Maya 2014 30 day free trial and have hooked, yes that’s right, ZBrush up so both apps, Maya and ZBrush, are connected and can seamlessly transfer model meshes.

What started this all off was a question of @McFunkypants which caught my attention as I had just installed Unity as my game engine and had downloaded some free 3D models that were used in the tutorials of the Unity web site to get last months game moving along.  But from that question and after doing a little inquisitive searching, I found there would no longer be the app, SoftImage, that I was looking to build my assets with, so therefore the glad to sadness, :) to :(.  Then as I continued my search I also found a ZBrush 4 – GoZ Tutorial that explains how to connect Maya with ZBrush using the ZBrush “GoZ” asset transfer utility, so sad to glad, :( to :).  Wow how emoticons have grown.

All of this has made for an, um, very interesting and informative month of April.  Then along with the searching and researching, I’ve been working on various applications that compliment the Digital Tutors tutorial videos, or I should say, the tutorial videos that compliment the applications.  One of the tutorials was going on about how to get a texture mapped to a mesh so the uv’s of the interior environment would have the desired ambiance portrayed within that portion of the game.  That tutorial mentioned a product from Allegorithmic, which sounded familiar from my previous work with XNA for the XBox, MaPZone 2.6 circa 2007, also by Allegorithmic.  But it had been a while since I had opened that old application.  That old app had a clumsy interface.  But after going through another tutorial for Substance Designer, I found their updated replacement of their product to be more intuitive.  And after visiting their site, it just so happened that they had a sale going on.  So, as luck would have it and to my chagrin, with their enticement along with my need to have a more expressive environment in my games, I became another happy owner of their product and walked out the proverbial door to put their texture creation application into my toolbox and into my games.  I can now work with this new application, building textures for my games, within any software package that supports Substance Designer, which for me would be Unity, my game engine, and also Maya, which is my pick for asset creation because Softimage will become unsupported and then nonsupported in the near future.

While building these textures in Substance and thinking about how to use these textures efficiently in Unity I found Scripting Shaders in Unity, again on Digital Tutors.  These two ideas of building textures and then having the appropriate shader provided in Unity for the proper lighting, that, and the fact that Maya has a built in plug-in for Substance, has made the idea of utilizing Maya as my game asset creation software a much easier choice than I had first thought.  All of these affordances to easily transfer assets across applications has also brought some resolve to the choices of which applications I will be studying and using for my own game production pipeline.

So it looks like April will be a Digital Tutors kind of month.  Because of my one month subscription I’ll be digging into Maya, Unity and ZBrush tutorials, for the most part, while I try to build this months game about water.  Seeing that I’m just starting off with Unity, my games will be very basic, and probably boarder line almost not games, as they are hallmarks of study rather than production models of games to hit the showroom floor.  Some would further debate that, but these games are built to follow the One Game A Month theme and incorporate the new technologies that perpetually become apparent as a continuous onslaught that make themselves obvious as my game building journey progresses.

To be Continued …


April 15, 2014 Posted by | 2014 [0050] to [00??], The Process | , , , , | Leave a comment

[page 0056] ~ When In Doubt:

Updates – .

The theme is still NEON.

When in doubt, read the instructions.  And so, off to where it all began, kinda sorta, for me at least, something more like the near of doing Xbox C# stuff in the past and not so much as the far off of the c++ past, and definitely not the really way back BASIC past, for the most part, I think.

Well, the Unity Project: Roll-a-Ball reminds me of the MSDN FuelCell Example Game which uses the MicroSoft XNA Game Studio 2010.  I also found this, Unity Third Person Control: Camera Follow – Tutorial 7, which is a multi-part tutorial that runs a character around using an XBox 360 Joystick Controller, my favorite means of game input.  Currently I’m using the afore mentioned controller that is connected via the USB Wireless version to my PC.  Using this, the PC can take up to four controller inputs simultaneously.  The wireless models let the XBox 360 connect up to four controllers concurrently, if the game is built for that type of allowance.

And so, not only is this game going to be focused on neon, but also on getting a camera to follow the game character around the game, correctly.  This simple game, FuelCell, uses the XBLIG Vector3 class to define its usage much like the Unity Vector3 class.  Both of these game platforms with, XBLIG FuelCell and Unity Roll-a-Ball, use the class GameObject as a binding structure to consolidate its game pieces and be able to reference them, by a named tag, as a component from within the contents heap of the game.  The FuelCell game builds the GameObject as a simple class to hold the 3D models, load content and bounding sphere, its draw transforms and lighting effects, input and movement routines, collision detection and camera placement in relation to the Avatar, seen as multiple classes all within the same code page,  with name spaces, using statements, class constructors, definitions and declarations, methods and functions, accessors and mutators for public and private properties, etc., all written in C# code in text.  Unity uses GameObject in much the same way except for the fact that the game engine adds the protocol and code “Under the Hood” behind the API in a black box fashion as Components, with a single click of a button, where the public access of its variable contents are seen in the Inspector tab and where extensions that connect the objects and variables can be implemented through a scripting language.  What I will be dealing with here as I move through both of my XNA Game Studio and Unity games will be an old school new school thing.  It’s kinda like what XNA was to DirectX back in the day, a wrapper that simplified the coding of broiler plate templates to initiate the start of getting something to begin to become what was intended to be needed, for the actual task, required, to get ready to …  Well let’s just say it was a long hard road to go from a computers system space to go to a games name space.  But the concepts are all much the same although the simplicity of implementation has grown in complexity to encompass what is now seen as the Unity Game Engine, XNA is pretty much the same thing but without the walls.  Sometimes walls can be nice, and a roof, and some plumbing, and … but it is good to know how it all came to be, fits together and why.

So every GameObject has a Transform, in either case, so each piece exists at a specific location in the game.  Now to take a look at how the XNA FuelCell is put together and try to compare it to the Unity Roll-a-Ball so my game, Neonlithic, can get done and submitted.  The XNA Camera uses an offset from the target to position the camera back and up from the target to look back down at an angle.  These values are given to the View Matrix and Projection Matrix which are in turn given to the World Matrix which is drawn to a 2D screen space.  Back in Unity I need the offset to remain constant in relation to any rotations that are given to the target, i.e. the Avatar.  OK, MonoDevelop has a “find all references” to see where and how all of the variables are placed and used, that’s nice.  What I need to do is get the Avatar to rotate in a direction and then give it some forward velocity to make it move, in that direction.  The camera also needs to have the same direction and velocity, and then to find how something else works so that it moves more like a chase camera.  Something like having the camera placed behind and up to become an offset with the cameras’ LookAt point being the Avatar.

And that is where I will be going next, Chase Camera.  I already have the XNA Game Studio installed and loaded up.  I also have the Chase Camera downloaded, unzipped and running.  Chase Camera is one of the code samples that I used to build HUD-On and will hopefully become of help again with Neonlithic.  Well it looks like, for this game anyways, I’ll get the direction that my Avatar will move towards from an ol’ quick and dirty trigonometric function.  Using the left and right buttons of the mouse, I’ll get an input register from the FixedUpdate() to count at an increment and decrement for either button.  This will give me a positive or negative number which I’ll give to a Quaternion.Euler to build a new transform.rotation from my target. After that I’ll take the .y of the transform and change it from radians to degrees.  Giving this number to both the sine and cosine functions I’ll multiply it with the forward velocity and give it back to “movement” which is the force added to the rigidbody component of my Avatar. Eeek, but it makes enough sense to move my game piece around the board so the controls seem to do what is intended.  Now I need to get that camera to follow suit and follow my Avatar.

That’s interesting, the Debug, DrawLine and DrawRay act almost the same when the second Vector3 argument of Line has its value of the character position added to the direction, without it, the DrawLine function does some really weird curly-Q stuff on the screen.  Another thing is that the Ray points directly out horizontally while the Draw has its second vector pointed towards the ground, one more line and it would become a triangle, but for now its just an angle. Debug.Draw and .Ray are really good features for testing and research. But I need to get this chase camera thing hooked up to my Avatar.

Or, I could go back to what I usually do and add some text to the screen, although I have some text running in the Debug Console now.  And the text will be a compass with the direction in degrees that the Avatar is facing.  Simple, but how do I add text to the Unity screen.  “7. Displaying text” from the Roll-a-Ball tutorial gives me enough insight into and direction for me to get my faux-magnetism of this games rather flat terrain displayed as a number between 0 and 360, where 360 becomes 0 again.  One thing that I find very strange is that little deadened “ding-bonk” is missing for all the mistakes that I make when the Unity scripting compiler, which gives me my error messages, finds an error.  I’m having some phantom error message sound beleaguerment going on in my head.  So guess what I’m working on right now, that isn’t doing exactly what I think should be happening, with many scripting errors.  I need to get the camera hooked onto the end of where the Ray is positioned, but I can’t figure out how to get one variable from one script in the Player object into the Camera class to be used by that script, “ding-bonk” (Red Stop Sign Exclamation Point) error message, “ding-bonk” (Red Stop Sign Exclamation Point) error message, “ding-bonk” (Red Stop Sign Exclamation Point) error message, hmm.  Well, at least there is some constructive and safe feedback and not a blank stare of Oh-No, where I’d be lost in lah-lah land with the blue screen of death and a hopefully successful reboot, without a loss of data.

With a little bit of searching I have found “20. GetComponent” that explains well enough, for now, how to get properties from a script to another.  And there is another somewhat odd feature in Unity, where, when scrolling the mouse all the way across the screen while holding the mouse button down to change a variable, the mouse will reappear on the other side of the screen and continue to scroll the variable, rather handy, indeed.  Hmm, it seems that Unity has no Vector Line Drawing capacities or anything that I was used to doing in Processing.js, which was a whole lot of vector drawing, or something like it.

I think that I’m starting to figure out the way that their textbox drag and drop stuff works.  It seems that what it is doing is making a reference to an object and therefore its properties.  The other option is that it is that it is copying it by value, to then be worked on further, which seems unlikely.  When accessing an object “By Reference” what is happening is that the memory space allocated to that object has a residence starting at some memory value and continues to fill that memory space until the end of the objects length.  Many things can access that object by reference and if it is changed, then all forthcoming requests for that objects properties or actions are also changed.  “By Value” is when a completely new copy of that object is made, and subsequently uses up another objects worth of memory space, so twice the space is used but the are two separate objects that will perform differently.  But how does this help me.  I just deleted the Main Camera and placed it in the Avatar object to see if that would make accessing the rotation any easier.  What I’m trying to do is take my sin and cos values I get from the mouse buttons and change them back into a rotation for the camera.

That makes no sense, why would a rotation transform for an axis not be used to move that object in the direction that it is facing.  The camera rotates in a direction to “look” in that rotation but how does the forward velocity become altered so that the LookAt direction is the new forward and therefore taking on the roll of forward velocity.
OK, I have something that moves the Avatar forward and backward while pressing the w and s keys and then comes to a halt when the keys are no longer held down, that is my forward velocity.  Now I need to have that velocity distributed throughout a Vector3 so the forward velocity is relative to the rotation of the objects transform.  OK, so I need a Vector3 force influenced by the transforms rotation of the y axis, possibly a torque value.  And, per usual, what is observed as obvious becomes the complete antithesis of what is needed and provided.  It’s as simple as the Kata in Karate, first you look in that direction, then you strike, block or evade using that side of the body that you moved your attention to.  So my Avatar must look in the direction that it will be going, then it will take that as the new forward and move in that direction.

Well, I’ve got a camera that pivots around the Avatar even while it moves forward, which is the only direction that it can go, for now.  I’m getting there.  Instead I need the camera to always point forward as the Avatar changes its position on the playing field.  Hmm, just a lot of flailing about with EulerAngles, LookAt and other Quaternion things.  But what I haven’t been doing lately is making script Back Ups so when I get to a place in time that things are working correctly I’ll be able to paste the back up back into the script and start over with a stable working model.  The only draw back is that there may be more objects that have been added to the game engine that are dependent on some of the variables in the previous script that wasn’t working all that well, but that bridge will need to be crossed when I come to it and if it is ever reached.  Until then, it’s time for a back up save of this C# script.

Blah de-Blah, I have a rotation in the y axis.  I need an x and a z value for my Avatar rigidbody.AddForce so it has an argument value being a Vector3 made up of (x, y, z) where y = 0.0f, no voluntary jumping, and the x and z are comparative to width and depth of the game board, no need for the y axis because this Avatar is stuck to the ground.  When I go forward, my y rotation in degrees is 0.0 and, Hey Hey, it works!  Time for another save.  Hmm, but after moving around for a short bit, like about ten seconds the screen starts to shake and then the screen begins to spin in a perpetual loop, until the stop debug button is pressed.  So what am I missing here.  That fixes it, in Rigidbody/Constraints/Freeze Rotation, I needed to check all three X, Y, and Z boxes.  No shutter or recursion spin.  Now to tidy up and off to #1GAM.

And that is that.  Not the best game in the world, but it is a slightly better or at least a more Neonie version of Roll-a-Ball with a hint of FuelCell.

Your Avatar must collect the eight neon stones that have been thrown about the map, as they sparkle their neon shower.  They will soon disappear but don’t run your Avatar so fast as to fall of the edge of the world.

Controls :

A-W-S-D keys and Up-Down-Left-Right arrows move the Avatar in those directions.

Play NeonLithic Here.


April 2, 2014 Posted by | 2014 [0050] to [00??], The Process | , , | Leave a comment