Unity

I am following this magazine article on starting out in Unity Development. Current installment starts out describing the parts of a 3D scene:
  1. Lights
  2. Meshes
  3. Shaders
There are four types of lighting in Unity. One example is a directional light.

To understand meshes, we should start at the bottom. Vertexes define a polygon. The polygons make up your object. A mesh is a collection of the vertexes. Another name for mesh is model. You create your model outside of Unity with a product like Blender.

Shaders are code that describe how light interacts with your object. For example, your shader might project an image onto your object and show how shadows are formed.

Unity handles some of the movement details that I recall implementing in my last game by hand. Objects just don't jump around from one position to the next. The move slowly through each frame. This move is called tweening.

There are four coodinate systems to describe an object or point posisition in Unity:
  1. Screen space
  2. Viewport space
  3. World space
  4. Local space
Finally I will mention in passing that there are two particle systems available in Unity. There is an old one. But a new one called Shuriken is also available. The name sounds cool at least.

Yoda Stories LOL

Yoda Stories is some game from the 1990s. Just read an article on how Zack Barth reversed engineered the game's file format. The techniques used were very informative. He had played the game into oblivion. He uses deduction to figure out what is in the files, and how to read the data from them.

One real treat is how he finds the uncompressed image data. The he goes on to compare images that he extracts to what he sees in the game. The breakthrough is when he stumbles upon a color palette that makes all the extracted images looking good.

I will give one spoiler. Zack talks about, having full knowledge of the data files, being able to rewrite the game with some changes. Sounds like a nice project.

More Unity

I read another article on Unity development, and thought I should record some of the things I learned in case I need to come back to do some Unity game development. Here is something strange. Unity started out as a 3D development tool. They only later included support for 2D games in version 4.3 of their product. Seems backwards.

You import images into Unity as sprites. Heh. Not quite sure what sprite means in this context. But it apparently is something more than a texture. Those objects are then Sprite objects. Not sure what the Sprite class/object can do. You can also create a spritesheet, which is a file that has many images.

When doing 2D development, you have a choice of two different cameras. One is the perspective camera. It shows depth like human vision works. The other is the orthographic camera, which lacks depth.

Finally the GUI in Unity is being rewritten as we speak. Estimated release to happen in version 4.6. Right now you work with something called the legacy GUI. In the legacy GUI, the GUI objects are visible in the game view, but not in the scene view (which I suspect is the development mode). Ouch.

The conclusion of my reading was that there is a whole lot to learn about game developemnt with Unity, even for 2D games.

Book Jackpot

I have a day job. It pays the bills, and then some. It is development. However it is not game development. Recently my company purchased me access to Books 24x7. That's a web site that provides me with access to eBooks. A lot of them.

Right now I am reading an eBook on WordPress, because that's what I am studying at school. However I looked at the latest book releases on the site. There was a book on game development with Unity and Blender. Seemed a bit interesting.

Then I did a search for books on game development. Whoa. There were over one thousand hits. I have hit the technical book jackpot here.These are some books on page one of my query results:
  • Introduction to Game Development
  • Serious Game Design and Development
  • Game Development Principles
  • Beginning C++ Android Game Development
  • Professional HTML5 Mobile Game Development
  • Windows Phone 7 Game Development
  • Beginning iPhone Games Development
I am going to have to spend a lot of time just figuring out which of these delicious books to read next. There is not enough time for me to go through all the hot titles. Heck. I don't know if I even need to continue going to college. I can learn all this stuff by reading the books.

Super Slapping

Lenovo has started a contest that it announced on Reddit. They want you to create an 8-bit graphics style game. It is supposed to be based on Brad Blevins from the web show Tough Seasons. Brad is a cowboy hat wearing dude dressed in orange. Mkay.

Contest had some mickey mouse prize. $500 gift card or something. The cool thing is that I played one entry, Brad's Slapdown, which was tons of fun. You just slap this Lenovo computer. The fun is to buy power ups that increase your slapping power.

Check it out.

Unity

I read an article about the Unity game engine/framework. Thought I better jot down some notes so I can remember what I read. You design games with Unity. It supports two or three dimensional games. However it does not provide asset creation functionality. For that you need Photoshop or 3D Studio Max or Maya. As you may know, those programs cost $$$.

You can purchase assets in the popular Unity Asset Store. You write your code for Unity in JavaScript or the C# programming language. The Unity game engine itself is written in C++. The game engine requires the dot net framework to run. You can choose a target of Windows standlone that generates executables and DLLs. You need a Visual Studio plugin called UnityVS to debug games with the IDE.

Now for some Unity terminology. Packages contain resources. Your game is broken down into levels called scenes. You add GameObjects to your scenes. And you add Components to your GameObjects. Make sure you use Unity to modify your game. Don't hack the files you find in the folder created by Unity.

Click the Play button in the Game tab to run your game. Beware that while the game is running, you are in a special mode, and changes to your game are not saved. That feels like a bug.

Microsoft Buying Mojang

Microsoft is buying Mojang for a whopping $2.5 billion. This is to get their hands on the Minecraft empire. Some players are unhappy about this arrangement. I doubt that Notch is sweating it. He is making out with a boatload of cash. Plus from his posts, it seems like he is tired of being the Minecraft poster boy.

What I really want to know about this deal is whether it is just the purchase of the Mojang company, or if Notch is also selling the rights to Minecraft. He holds the IP and leases it to Mojang each year. If he continues to receive the licensing fees from Microsoft on top of his share of the $2.5 billion, then this is the most epic win.

I personally could never get into Minecraft. Had some problems downloading it to my PC. The mobile version worked better for me. But after running around in the Minecraft world for a while, I failed to see the excitement.

Dragon's Crown

So I recently heard about this game Dragon's Crown. It is for the Playstation 3 and Vita. Apparently it is a 2D side scrolling RPG. I guess they say the graphics are nice. The thing that caught my eye are the crazy proportions of the females in the game. Maybe that is just the marketing materials. But these witches have breasts that are much bigger than their heads. LOL. WTF is going on here?

Crystal Heroes

I just read a postmortem on 50+ games from a developer's last four years of work. One of the games was Crystal Heroes. I downloaded the game and tried to play it. The thing complained that a DLL was missing. That's when I paid more attention and saw that you need to have the RMVX RTP installed.

Well I never heard of that acronym. Figured it might be some type of game maker engine or something. Guess I was on the right tracker. I googled around and got to the RPG Maker download page. There were a few options there. I clicked the first one.

To make a long story short, I did not want RPG Maker VX Ace. I needed RPG Maker. Or at least I needed the runtime for that development environment. Once I downloaded and installed it, I could play the game.

There was a lot of dialog that I had to get through. Got a bit tired of pressing the space bar. Then I finally got to the game. After all the dialog, I decided to skip the tutorial. You seem to control one player that has three others follow. I did not seem good at killing monsters. My followers were better at that.

I got through a few screens. Then I arrived at a screen with no visible exit. I did see a shovel on the ground. Figured I needed to pick the thing up. But I did not know how to do that. Darn. I wish I used the tutorial.

This game seemed nice, especially given that it was made with some game maker software. Graphics seemed good enough. It did not hurt that the download was free. Looks like there are many other games to try out from this developer.

Young Game Makers

Just read this long post about one developer's game he made four years ago when he was in the sixth grade. Man the graphics look pretty good. Many of his games were never released, or released for a while and then pulled.

Guy seems to use game making software. I guess that helps with the game assets. Heck. I have downloaded a few programs that help you make games. Could never get into them. I love programming from scratch too much. The problem' is that my games don't look that good.

You should check out this guy's part 1 post where he does a postmortem on the games from his sixth grade school year. Very entertaining and educational. I look forward to reading his other parts in the future. Who knows how far this guy has come in the last four years?

Successful Game Marketing

I read a post and an article on how CJ E&M Corporation is dominating the game charts over in Korea. How do they do it?  They say it has something to do with their social networking presence. Yeah maybe.

But take a look at the marketing picture for one of their games. I see a lot of reasons why someone might want to download/buy their game. We have a naughty nun. Then there is the sexy nurse. And who can overlook the vixen cop?

There are plenty more reasons that come out on their graphic. Got a bunch of animated hotties with the cleavage ready to draw you in. No rocket science there in their marketing prowess. Sure a social networking campaign might not hurt. But don't discount the fact that sex sells.

A Tale of Two Demos

Recently I heard about this alpha version of a demo that a team was making. It sounded intersting. So I decided to check it out. Downloaded the files and tried to run the program. Got an error message stating that "msvcr110.dll" was missing. WTF?

I really wanted to check out the game. Therefore I researched the file and found that it was a Visual Studio 2011 redistributable runtime file. Microsoft releases their redistributables for free. I downloaded and installed Microsoft's install. Then the game worked. I was irked that I had to go through all this trouble.

The game was not bad. It was not good. With the broken install, I decided to pass on even mentioning the name here. Contrast this with another demo I just checked out today: NeonJack. This download came with a readme file that explained everything I needed to know quickly. The executable worked right out of the box.

Initially I tried running NeonJack using a small screen. That was no good. I could not see the track well enough to drive in it. Even with a bigger screen, I had trouble when I hit the gas too much. I only used my laptop and keyboard to play the game. It is supposed to be played using an Occulus Rift Virtual Reality headset.

Good luck to the people at Shinyfish software. They might have a winner here with NeonJack. I was impressed that the lead developer quick his day job to work on the game. This was especially surprising as his day job was mobile game development.

MechWarrior Online

I recently read an article about the development of MechWarrior Online (MWO). There seemed to be a lot of discontent amongst the players of this free online game. I gather that the development was previously crowdfunded. Then there was a lot of Beta testing. The developers and production company are making decisions to monetize the game. And those decisions are pissing off the faithful players who were on board from the beginning.

To tell the truth, I think I had purchased an old copy of MechWarrior. It might have been something like MechWarrior 2 or perhaps even the original version. That was back in the MS-DOS days I presume. I don't remember much about the game. I suspect my PC could not handle the processing power required to run the game adequately.

This time around I signed up for a free account in the MWO version. I thought this was a game you run from your browser. Instead it seems to be a client you install that plays over the network. The minimum specs appear too much for my cheap laptop. Don't have the CPU power needed. Don't even have the graphics card support either. Oh well. I guess this is going to be a pass for now.

Pacman Version Two

I am working with a friend this summer to write a Pacman clone. We are using the Java programming language. At first we just drew a Pacman and a ghost. We got them to move around the screen nicely. Now it is time to actually draw a maze that constricts the Pacman and ghost.

So far I hacked together a maze implementation. Pacman now responds to keyboard controls. Movement is choppy as the Pacman jumps from discrete maze cell to cell. Now I need my friend to get the ghost working in the maze.

After that we might add other maze items like power pellets and such. Or perhaps we will get some smooth animation going on. I think we should save that for last though. The goal is to get something impressive done by the end of summer.

Here Be Dragons

A comment on my blog took me to the 7DRL entry Here Be Dragons. Turns out you roll to determine the members of your party. Looked pretty advanced to me. Then I started the game. Hmmm. Number pad does not work. W-A-S-D-Z keys do not work. How do I move my party?

I almost gave up. Then I figured I would give the mouse a try before quitting. That was it. You control movement with your mouse. Then I found something strange. If I dragged my character with the mouse, the dungeon screen moved on the monitor screen. Weird. Very weird.

There is a lot to like about this game. When you are in the middle of a battle and damage is done, you see the amount of damage fly up in the air. That looks way professional. Are we sure this thing is only a 7DRL?

Stuck in Hellspace

Previously I had thought I found a 7DRL entry with good graphics. Well I had not seen anything yet until I checked out Hellspace. This game has an intro sequence that is neat. I am flying around in space. Then I dock at what I guess is Hellspace.

After docking, I walked into the main portion of the first level. That's when I was freaked out. The screen rotated around as I curved around the corner. Tight. The graphics were tight. There was one problem though. I did not know what to do on the first level.

If the rest of the game are anything like this first taste, I am in for a treat with Hellspace.

Happy Hord Days

Today I had the pleasure of testing out 7DRL game Hord Days. Man. These graphics were nice. How does someone do that well in just seven days? In this game, it looks like the zombies like to bunch up together to give you the beat down.

At first I found the zombies easy to bump off. Then I think I headed down a level and things got harder. So hard, in fact, that I got killed. Something weird happened down on the second level. I think I must have stepped on a light switch or something. The whole room lit up.

I did read the instructions for this game. They were written in "markdown" format. WTF right? I did find out that I was a hoarder. And I had to use my items in a certain order. Perhaps the items will help me get better at killing zombies.

Commission Impossible

I started playing 7DRL entry Commission Impossible today. Right from the start, I liked the large font/symbology being used. Don't have to squint to see the screen. I did not like that I could not hold down a key and be able to move multiple times in that direction. Nitpicking.

There did not seem to be any way to regain my hit points unless I gained an experience level. It did not hurt me too bad. The monsters were not that hard to give the beat down. I cleared out a whole level by being careful.

I am still trying to figure out how to climb down the stairs to fight another wave of monsters. What I take away from this game is that large font graphics are cool.

Mountain of the Gods

I downloaded Mount of the Gods, a first time 7DRL roguelike. This was quite an impressive game. It was especially impressive since it was the author's first attempt. There was a hot splash screen to start off the game. You get to choose your class.

When playing the game, the lighting was nice. Ha. I been doing 7DRL roguelikes for years and have not got into implementing anything like that yet. My one complaint on the first play was that this thing was hard. I got killed after fighting a few monsters.

Might have to try this thing again in the future. Not sure how I can even get past level one, since I got killed while playing a strong warrior.

Beware of Strange Warp Points

I downloaded and ran 7DRL entry "Beware of Strange Warp Points"  (BOSWP) today. This one is a quirky game. There is a whole PDF manual to go through first. Nice touch. The window does not take up the whole computer screen. It is square.

A cool feature of this game is that you have a small viewport to look at close up space in the game, and what looks like a minimal-detail long range map as well. I saw a big D as I warped to different space sectors. Figured it was an ancient dragon. However we were in space. So it turned out to be something else.

This game looks like it might take some time to get good at. It came as no surprise that four people teamed up to produce this game. I was just glad that I had the dot net frameworked installed to run the thing.

Goldfish 7DRL

I played Goldfish today. It is a 7DRL entry. I liked it because you play it online in a web browser. The thing started up fine. I started out in a pond. People were trying to fish for me. I let myself be hooked, then had to beg the fisherman to let me go.

Then I went down a level. There were air bubbles down there that I used to reclaim some oxygen. I headed over to some unknown symbol on the screen. Then the game froze up. Not sure what was going on. Did I die? Is this ia bug.

Oh well. The colors of the dunegon (pond) were nice. It was strange to see the different people/animals I interacted with speaking to me. Looks very impressive for a 7DRL.

Assault Fish; Airship Dragoon; RiftRL

Now that I finished my 7DRL entry, I want to check out what others have done this year. First up is Assault Fish. Hey. The splash screen looks good. However when I ran it, I got a "Java Exception Error" message. Then the program ends.

Next I tried out Airship Dragoon Rogue. The thing had a professional looking install. But then when I ran the program, I got an error stating that X3DAudio was missing from my computer. Maybe I don't have DirectX v9 on my computer. Too bad because I was looking forward to the 3D Rogue.

Next up is RiftRL. I downloaded the program and ran it. Got an error stating a folder was missing in the executable directory. I created the folder and tried again. It gave me the same error. I am starting to see a pattern here with the 7DRL entries.

We Present OL Rogue

This year's entry to the 7DRL may look a bit like my work from last year. That's because the major feature I implemented this year was the game save ability. I wrote this using the new PHP and MySQL database skills I gathered during the school year. It was nice to have something real to practice my skills on.

I do have some ideas for a second MySQL and PHP application. Might be teaming up with a friend to work on this together. It might not be a cool roguelike game. But it will be educational. Will keep you posted on that. For now, you should check out my 7DRL game entry OL Rogue.

7DRL Finished

I declared success late last night on my 7DRL entry OL Rogue. Published what I got. I accomplished most of what I set out to do. You can save your game. The saved data gets put into the MySQL database on my web host. While that sounds simple, I had to do a lot for that to happen.

During my coding of the game save feature, I learned a number of things. One is that the mysql_query function in PHP can return one of two types. Specifically it might return the value FALSE on error. Didn't see that coming. I should have. It is in the documentation.

The other realization was that my PHP code should handle everything. Previously I thought I would bounce the user from PHP script to PHP script. However PHP is controlling the whole show for my game delivery. So I rolled most of the intermediate PHP pages into one super smart page.

In the future I want to be able to save more of the user's game state to a database. That includes the location you are in the dungeon, the position and hit points of the monsters in the dungeon, and other stats regarding equipment/items.

Finishing Touches

Last night I knocked out half of my TO DO list. Today I completed most of the remaining items. I spruced up the previously boring login and game save pages. Most of that was stylying. Added a picture here or there. Then I changed the colors of the main game to improve visibility.

I changed the order in which the dungeon levels are drawn. Before I saved the more complex layouts for last. Why delay? I made the more complex layouts first. I tested out a winning run into the dungeon. Check. After renaming some of my source files, I uploaded the release candidate to my web host.

Since I redid the database schema, I had to fight with PHPMyAdmin once again to get the database to match my new game version. Once that was done, I logged in online and played the version uploaded to my web host. Not sure if I will make any more tweaks. Most likely not. Tomorrow was the last day I planned to work on my 7DRL. I might just publish this version to the world.

Game Save Feature

Today I implemented the Save feature in my 7DRL entry OL Rogue. Well it is not a full save of the game. It just saves the player statistics. When you reload the game, the dungeon level gets regenerated.

The good news is that I already have the Load feature implemented. So now you can play the game, save your progress, and load your character back some time in the future. This is pretty much what I set out to accomplish this year.

Next step is to fix a hack I got for page navigation. Need to eliminate a middle man PHP page that you currently go through during login. Then I might mix up some of the actual game mechanics, like switching around the look of the levels.

Just got to make sure I can push this local version of the game up to my web host so all can play.

Making Progress

I continue to work on my 7DRL entry "OL Rogue". Previously I had completed character creation and login. Now I needed to actually run the game based on that character. Since I am concentrating on the PHP and MySQL database portion, I decided to reuse some old roguelike game code.

I needed to figure out how to launch my URL from PHP once the user logged in. Found out the best way to do this is through JavaScript. Man it has been a while since I took JavaScript in college. Next I needed to load all the player stats from the database using PHP. After I got one stat loaded, the rest followed the same pattern.

Now that I can load the player from the database, I have to implement the save to database feature. Currently I have only been testing with records I mocked up in my local database. After I get save working, I think I will push this version of the game up to my web host and call it a week.

Going Live

I decided to test my user creation code on my web host. I had to use some web tools to set up the MySQL database there. Did not like that I had to meet the host's requirements for database name. They did make it easy to create a database user that could interact with my database.

Normally I interact with MySQL using the command prompt. My web host makes me use phpMyAdmin. It takes a little getting used to. Had trouble interpreting the results of SQL queries. A nice surprise was that I could use the same code as I did locally as long as I named everything the same on my machine and my web host.

So what do I have right now? I can create characters, and then log in with them on my web host machine. Big deal. Now I need to figure out how to save the state of an existing roguelike game to my database. That is the task at hand for this week. I hope I get something playable done in the next few days.

Slow Start to OL Rogue

I had planned to start working on my 7DRL entry "OL Rogue" tomorrow. However why put it off a day? I got down to business tonight. First thing I did was break out my old PHP textbook. Then I studied one of the problems I solved from the MySQL database chapter.

I fired up my local WAMP server. Created a database and table to hold player information. Then I wrote/modified some PHP code to create a player and login as that player. Had a bunch of bugs from that task. Eventually I got something running on my local WAMP server.

Now I can create characters that have a name and a password. Then I can log in as that character as long as I have the right password. Not sure how secure this code it. Probably not very. But it is good enough since this is just a 7DRL game entry.

Next I will try to push this code up to my real web server.

The Birth of OL Rogue

It is that time of year again. Time to compete in the seven day roguelike (7DRL) tournament. Well I am really competing against the clock. Got one week to create a roguelike game. I have been doing this for years. Got to represent.

I figured I had a class in the PHP programming language. It covered a little bit of MySQL database development. I will finally add a game save option into my game. In fact, that is my primary goal this year. Produce a game that allows you to save and come back to it later.

Just so happens that I got a web hosting plan. It offers PHP and MySQL. Now is the time to take advantage of those features. My game will be OL Rogue. It stands for Online Rogue. See you in a week. I should be able to post my URL here when I am done.