[Book Review] Unity iOS Game Development Beginner’s Guide
While going through this book, I tried to imagine myself as a beginner with little to no previous experience with Unity. With that perspective in mind, I felt like I came away with little to show for my time invested into this text. That isn't to say there wasn't useful information to help one get started out. However, there just didn't seem to be an appropriate pacing or coherent order of material to help me feel confident when continuing with Unity.
To the book's credit, I never felt like it was swamping me with too much information at once. It stayed reasonably comfortable to follow along with and had me never feeling completely lost. But again, the general topics covered seemed to jump around with little warning, at times feeling like a wild ride through someone's last minute check list. I had a difficult time anticipating where the instructions were going to inevitably lead me, and it offered myself only a slight sense of being an active participator in its exercises.
An example to help relate the book's textual inconsistency is revealed by the fact that quiz questions are given at the end of the first two chapters but fail to appear in the following chapters. This may seem trivial, but it is an odd pattern to begin with and to suddenly drop. And just so everyone knows, I love quiz questions at the end of a chapter! :D
I wish the book spent less time on how to use third party plugins and more time going through real world examples of how to achieve varied control styles or game mechanics tailored for iOS devices. I believe it could have benefited from including such a topic as raycasting, something which I considered vital for my own projects, as the iOS version of Unity does not recognize user input on game objects like the PC or Mac version. For example, the OnMouseDown() callback is not recognized on game objects for iOS, thus requiring raycasting to be used inorder to directly interact with objects when touched.
I found too many subjects just briefly touched upon. Some chapters have a sense of being incomplete and not following through with teaching the functionality promised in the book's advertisement. I wouldn't be so bothered by this fact if the book didn't advertise itself with overhyped expectations.
Being somewhat of an experienced Unity user, I was satisfied with some useful morsels of information which I gleaned from this book, but I am glad that I have the experience already behind me to fill in the blanks that I felt were missing on some subjects.
If you are a fledgling beginner with Unity and iPhone development, this book might be okay to start with. Despite its shortcomings, I still found myself able to get through it quite easily and learn some new things along the way. But, don't expect it to make you a whiz or even leave you with a well rounded knowledge of Unity basics. Expect further books, tutorials, and hands on experience to fill in the other basic concepts you will need to know along your adventures.
FINAL VERDICT: 5/10
[Game Maker] Grid Movement -PART 1- The Basics
Accompanying video tutorial. Please watch at fullscreen with quality set to 480p or higher.
Note:
You can preview an implementation of grid based movement here
When you are finished, be sure to check out further lessons in this series for grid movement:
Part 2: Collision Detection
Part 3: Character Animation
And now to the lesson!
1) Start a new project
2) Add a new object and call it obj_player
3) Inside obj_player, Add Event -> Create
and add a piece of code
containing:
/* Initialize required variables */ gridSize = 32; // Should be power of 2 (...8,16,32...) isMoving = false; // Keeps track of when player is moving moveTimer = 0; // Counts down from grid size each step moveSpeed = 4; // Do not set higher than grid size! speedX = 0; speedY = 0;
4) Inside obj_player, Add Event -> Step
and add a piece of code
containing:
/*
When not moving, check to see if a direction key is held.
If so, assign x/y speed and change status to moving.
*/
if (isMoving == false)
{
if (keyboard_check(vk_right))
{
isMoving = true;
moveTimer = gridSize;
speedX = moveSpeed;
speedY = 0;
}
if (keyboard_check(vk_up))
{
isMoving = true;
moveTimer = gridSize;
speedX = 0;
speedY = -moveSpeed;
}
if (keyboard_check(vk_left))
{
isMoving = true;
moveTimer = gridSize;
speedX = -moveSpeed;
speedY = 0;
}
if (keyboard_check(vk_down))
{
isMoving = true;
moveTimer = gridSize;
speedX = 0;
speedY = moveSpeed;
}
}
/*
When moving, subtract from moveTimer our moveSpeed value
and update location relevant to set speeds.
Stop moving when moveTimer reaches zero.
*/
if (isMoving == true)
{
x += speedX;
y += speedY
moveTimer -= moveSpeed;
if (moveTimer == 0) isMoving = false;
}
5) Add obj_player to a room, preferably aligned to the grid size which you set in obj_player
There! You should now have a simple implementation of grid based movement. You can play around with changing gridSize to other values, such as 8 or 16 for tighter grid movement.
You can download the example gmk for this tutorial HERE
Incorporating what I discussed in my previous tutorial, you can also download a version which betters the 4 direction input HERE
Feel free to contact me about any questions or comments!
