Thursday, May 2, 2013

XNA book and more art

I have been making some more character artwork and recently picked up an XNA book written by James Silva ( developer of The Dishwasher: Dead Samarai). I'm hoping it will help me out of this programming slump I have hit recently with AI and pick up the pace again. I picked it up based on a recommendation from Dean Dodrill, the developer of Dust: An Elysian Tale, who happened to teach himself to program also.

I have discovered a website called Gamasutra which has tons of articles written by game developers. Every night I read a few and get inspired and then open Shiny Blade and stare at the code trying to think of what to do next. So when nothing starts happening when I try stuff I open up RPG Maker or Game maker and mess around hoping to hit something. Then I switch over to Photoshop and make some sprites. Google searching usually doesn't result in exactly what I'm looking for either on the code and AI examples.

Then I read on Gamasutra a postmortem (afterdeath?) written on Dust where Dean mentioned that this book really helped him get out of a slump. Building XNA 2.0 Games. I searched amazon and found it for cheaper than the shipping cost and ordered it. I already am stoked just to have a book to work with and be doing something. Sometimes that's all I need to keep me going and have the breakthrough I need.

I hope to have more updates to Shiny Blade soon.

Oh, and I'm playing the Mass Effect trilogy from the beginning. I am loving number 2 way more than number 1. I am a little over halfway and then I can finally try out number 3.

Thursday, April 11, 2013

RPG Maker and my first game made in it.



I finished another overworld enemy sprite. I have been trying lots of ideas and thinking things through and studying C# in general. I learned more about implicit and explicit conversions this week. I have gone through several books and pluralsite tutorials. Going back through the book for reference has helped me get more concepts down. I have been trying to think through the enemy behavior and how I want to handle that. I hope to get more done this week.


Recently I saw a game made with RPG maker and it made me want to try it out. I downloaded the free trial and spent about an hour and came up with a small game for my son to play. He thought it was awesome and loved the maps I made for him. I've added a link to the blog here. It's close to 200MB total. Opening it will ask where to extract the files and then copy all the files needed to that location. I could probably clean it up to make it smaller by removing all the stuff I'm not using but I just left it as is. This was made as a fun try it out project in less than an hour. I highly recommend RPG Maker if you are wanting to make a game without having to code much. It really is an impressive tool and makes it really simple to do. To the Moon is the most famous game I have heard of that was made using RPG Maker.

Feel free to try out my game "FirstGo". It's really simple and there are only two spots where you can fight enemies as my son doesn't quite get battles yet. He just likes to explore and wander around the maps so this was perfect for him to play.




Thursday, April 4, 2013

Trying to make enemies behave

I have tried getting enemies to behave like you are playing against a person. It's been trickier than I thought it would be. I haven't even made a code check in this week because I haven't gotten anything that I wanted done yet. I am tempted to move onto one of the other 7 tasks ahead of me like more sprite work and getting that in the game.

I have been going through some tutorials and studying coding to learn more and see if any ideas present themselves.

So far I've got something like:
public void UpdateEnemyAction(GameTime gameTime) {
           //TODO: AI stuff here
            float badguyChaseThreshold = BadGuyChaseDistance;
            distanceFromPlayer = player2position.X - player1position.X  ;
            if (distanceFromPlayer > 100 ){
                testBadGuy.AnimateLeft(gameTime);
                if ( distanceFromPlayer < badguyChaseThreshold ) {

                    velocityPlayer2.X = -moveSpeed * ( float )gameTime.ElapsedGameTime.TotalSeconds;
                }
            }
             if ( distanceFromPlayer < -100 ) {
                testBadGuy.AnimateRight(gameTime);
               
                    velocityPlayer2.X = moveSpeed * ( float )gameTime.ElapsedGameTime.TotalSeconds;
                }
            }
        }

The bad guy bounces around in between 100 and - 100 distance now. It just doesn't feel like you are playing against a person yet so I'm trying to figure it out. I have tried using -badguyChaseThreshold but it seems about the same. Hopefully I'll come up with some ideas soon.

Thursday, March 28, 2013

AI and how I could use some sometimes.

I put some simple artificial intelligence into the 2DBattleScreen. If you get within 450 pixels of the enemy he will begin charging toward you. It took me a few tries because I kept trying different things and then undoing just a hair too much when changing back. I would end up removing the velocity affecting player2 position and he would stop moving. I had to scratch my head a few times and set some breakpoints before I realized that I had removed the assignment.

Now he is on the left. He also turns to face me.

I also discovered that if you are using "If" statements and checking the wrong variables they don't work correctly. It's fun to program and to laugh at yourself for making mistakes like that. This is definitely a passion project that is keeping me in coding everyday which is what I really want and need. I have had lots of fun with it and showing it to people. It's fun to say "I'm making a game and here it is." Most people aren't too impressed by the game or gameplay itself, but that I made it in my spare time after work and by teaching myself.

I thought it would be fun to share some of my concept art for the sprite work. I drew these using the paint app on my wife's iPad.
I have thought about going for this finger painted style for the whole game.

Early hero concept.

Just brainstorming some ideas for background battle screens.

Another background idea.


See you next Thursday.


Thursday, March 21, 2013

Unity and Sony

Great news to hear that Unity is teaming up with Sony. I have to admit that this news is tempting me to drop XNA. I have heard so many good things about Unity and what it can do and how easy it is to make games with it. I stuck with the XNA because I wanted to finish Shiny Blade and have a project that is done under my belt. I have played around with Unity and their GUI is quite impressive with how easy it is to hook up objects and some small amounts of code and do a lot with it.

This week I have spent some more time on drawing some sprites. I also did a little coding. I made it so that when blocking you move at half speed. I also took a stab at some AI based on distances. I didn't have much success on the first go but it has been a busier week for me.

I also published an alpha build to get to a friend who wants to try some music. It was good to try that out and I look forward to some feedback.

I just want to say that I love my life. I have a great job during the day that teaches me a lot and helps me grow. I have a very understanding family that let's me spend some time in the evenings to try out coding and making projects.

Thursday, March 14, 2013

Pi day update

Finished work on two enemy overworld sprites. The bowman ranger type guy and the ninja guy. I am really starting to get the hang of using photoshop for this kind of artwork and feel that I am getting better and better. They are not perfect but it's fun and great for Shiny Blade. They are three times bigger than the sprites I borrowed for setting up stuff so I haven't implemented them into the game yet.

My son is liking the progress and wants me to keep working on it. If I am at the desk he will come up to me and say "Dad, work on your game please." This external motivation really does help and I'm excited to have him play my game when it's ready for him. He usually wants to see progress weekly, sometimes daily.

Ranger Bow Guy

Ninja Guy, because ninjas are cool.
Speaking of playtesting, I had a gathering at my house for a party over the last weekend and had all of my brothers try Shiny Blade. My nephews saw them playing and all wanted to play. It was good to sit back and watch people try stuff out on my game and see what they thought. I hope to get more feedback later on when more game play mechanics are in place.

I started diving into some AI tutorials to see how they do it and what to do for enemies. I am still thinking of keeping just a single hit battle so they are quick. I want to keep the game short so I can actually finish it in the next few months.

The bowman I want to maintain distance and shoot from afar, the ninja guy I want to be quick and slice with the sword. I have other plans for the other characters and want them to behave a little differently from each other so there is variety. Whether this will come to fruition or not remains to be seen. I want them to play and control similar though for a possibility of two player mode or playing as them.

To help me keep everything straight and set some goals for myself I created a design document and several tasks in my source control. I hope these will help guide me in the right direction. There is still a lot to go.

Until next week.


Thursday, March 7, 2013

Retry menu, new sprites started.

I have created a player sprite for the overworld screen. It wasn't too hard but it's far from perfect. I should be able to finish up the rest of the characters quickly now that I know how to do it. They are only 8 frames each. This sprite is 3 times bigger than the one I was using before so I had to adjust the collision detection appropriately.
Player Sprite

I do want to create bigger and more complicated sprites for the battles. That will be some more work to do. I plan on an attacking animation, a blocking animation, maybe a falling down animation and if that is going well some more complicated stuff. I already some code in place to start handling those types of animations. I don't know a good size to choose yet for the battle screen sprites but I am thinking being close to the size of sprites used in Streets of Rage 2 and Shining Force (updated to modern resolutions).

I also hooked up the event handler for the Retry Battle option. It currently resets the active state of the player and battle starts again. There is still more to do to reset the battle screen all the way correctly. I thought about a few ideas on how to do it such as implementing an initialize or a reset method that changes the values. I attempted that at first just a few minutes ago but I couldn't get it right yet so for now it's just reactivating the player sprite.

So from here on out it's making more sprites and artwork. Then it will be making the battles fun and challenging. I will need to wire up the rest of the menu entries and options. Then music.

Until next week.