36 of 37 people found the following review helpful
- Published on Amazon.com
I currently have two games published on the Xbox 360 in the Indie Games section. They are Acid Rain and Acid Rain Heroes. I am a huge huge Xbox 360 fan. When Microsoft announced XNA and the Indie Game marketplace I knew it was time for me to dust the cobwebs out of my brain and learn programming again after a 20+ year hiatus. I previously developed Paladin's Legacy and got it published back in 1985. I spent 2 years learning C#, XNA and numerous audio and graphics applications in order to publish my games on the 360. I even formed a company, PermaFrost Gaming. And all during my development, I watched as Microsoft fumbled and stumbled and most likely even intentionally sabotaged their own Indie Marketplace strategy. They changed the name. They changed the pricing structure (lowering it to be competitive). But ultimately as a business model, the Indie Game Marketplace on 360 is a failure. As a hobby location for creation and distribution of games, it's a massive success. Existing digital distribution models have proven that you can't put up a bunch of barriers and expect mass adoption of a marketplace. Barriers like, MS requires you to buy points in order to purchase anything on the 360. Indie games have a very limited 3 tiered pricing model and there is no free option. Indie games don't have access to some of the most attractive features available on Xbox Live (Achievements). Indie games by default are under 18 restricted. My current view is if you want to learn C#, build 2D games and distribute them as a hobbyist, then XNA may be your thing. But if you have aspirations of a successful business and plan to delve into 3D game development, then Unity is the better choice. This brings me to this current review.
I made the switch to Unity because Unity allows me to further my knowledge of C# but develop and distribute games on multiple platforms. Multi-platform development is the future...if you intend to make a business of game development. And this book is the perfect place to start.
Ryan starts the book off by giving the prerequisite indie game developer warnings. I love these quotes, "I don't want to set my sights too high, so I'm going to make a game like Gran Turismo, except with fewer cars." and "I'm going to build World of Warcraft with fewer class and about half the items." He devotes the first couple of chapters to explaining the core mechanics of games and establishing realistic expectations for beginner game developers. By chapter 3, you're already developing your first game prototype in 3D. That's the power of Unity! After finishing chapter 4, I just laughed out loud. Ryan humorously quips, "Worst. Game. Ever." My thought was, I can't believe what I just created in 2 short chapters. Awesome! For the record, in XNA, I intentionally avoided 3D. Even with the XNA framework library at my disposal, hand coding 3D cameras, lights, viewports, 3D model importing etc. etc. was and still is way over my head. I could go on and on...... XNA doesn't have a built in physics solution or a particle solution or a menu creation solution but I'll stop and just say that Unity has all of that stuff built in along with almost universal 3D model, audio and texture import functionality. (even native Photoshop files .PSD) I'm not embarrassed to say WOW!
At this point, I'm just going to highlight the things I think Ryan really got right in this book. These are things I sticky noted for future reference. In chapter 4, how to display variables in the editor for code debugging. You use Debug.log(). In chapters 5-7, using the GUI (Graphical User Interface) tools in Unity. I would have preferred that Ryan used the GUI feature to build an actual game menu system instead of an entire game. But one could argue that he killed two birds with one stone by creating a 2D game and a simple menu system all at once using the GUI system.
In chapter 8, you begin crafting your first real 3D game. He covers 3D Meshes, physics (rigidbodies and colliders) and the FBXImporter used to import models from Blender. Unity can import from numerous 3D modeling applications. Blender happens to be free which is pretty cool. He covers the use of Tags which helps you identify game objects through code. In chapters 9-10, you begin another 3D game and get introduced to the amazing particle system, Prefabs and audio in Unity. Prefabs allow you to craft multi-component/object Game Objects and then make an unlimited number of copies of that original multi-part creation. By making changes to just the original Prefab, your changes are automatically propagated to all prefab copies in all scenes in your game. In C#, it's the same idea as creating a class with a bunch of stuff and then instantiating that class numerous times in a list or an array thus resulting in multiple copies. Unity is basically perfecting or evolving the idea of Object Oriented Programming with a visual representation in the Unity editor......and calling it a Prefab. And that's really cool!
In chapter 11, Ryan introduces the multiple camera setup and the use of layers to control what those cameras see/display. Yes that's right, Unity allows you to use multiple cameras using layers to define what objects are seen by each camera. Simply assign a depth value to establish which camera is rendered in what order. I don't even want to think about the complexity of that in XNA.
Finally in chapter 12, Ryan goes back to the game you created in chapter 8 and introduces us to lights, more layers, more cameras and using the animation editor to animate one of the cameras in order to simulate a 1st person 3D walking effect.
I highly recommend this book to any beginning game developer.