Recommended Reading: RunTime C++ Scripting

Interesting bit came up at work with our bi-weekly “brown bag” lunches with our programming team – Scripting vs Native C++ code. A lot of game developers, and even in many other realms, some of the code base may be split into Lua or Python for easy, quick iteration. I know many studios, such as many of the Call of Duty studios, use primarily Lua for their gameplay scripts.

The argument is that is easy to write, iterate fast, and provide to employees who don’t have deep programming knowledge (like some gameplay designers and such). It’s perfectly legitimate too, there isn’t anything inherently wrong with the scripting languages augmenting a huge C++ code-base engine. However, there are caveats such as managing two different languages and creating wrappers for stuff. Also, Lua doesn’t have proper debugging tools many C++ programmers are used to, and when tied into that code-base, it can become a nightmare to debug.

Enter C++ code thats runtime-compiled and used as a scripting language.

Fantastic read, pretty classy too. Each script is a single cpp file that gets compiled into a dynamic library which recompiles everytime the file changes, even during gameplay. The scripts even get a nice little compression size reduction too. Good read.

Ubisoft Montreal GameJam 2014 – “You & I”

Team Omega’s Ubisoft GameJam project – “You, Me, Pigs In A Forest”

A spooky co-op game that features the theme of “You & I”.
One player controls a lantern and the other a sword. Enemies cannot be hit with the sword unless they are vulnerable from the lantern light. The lantern player is powerless to defend himself and the sword player has no light source. They must stick together to survive but are sometimes forced to separate.

Using Unity Pro, we employed depth of field and noise filters to create a cinematic quality to the darkness.
A custom shader I made gives maps a “fog of war” where shadows envelop the player, and only the lantern has the ability to shine through. If the sword player moves out of the lantern, the darkness completely covers him.
Enemies employ the Unity nav mesh system to follow and hunt the player down in swarms.

jpeg

Book Review: Effective C++

Effective C++ by Scott Meyers has been around for awhile and it is pretty revered. With good reason. It is one of the books a lot of C++ programmers, both beginners and adept, read and then never look back after. After being recommended the book several times, I finally got around to picking it up.

Unlike a lot of other programming books, such as the ones I’ve previously reviewed, this isn’t a tutorial or “how-to” C++ book. So there is some technical requirement for the book and if you don’t have interest in C++, it probably won’t do much for you. But if you want to check it out, my review can be found after the break.

Continue reading

Book Review: iOS7 Game Development

iOS7 is Apple’s latest update to their mobile OS at the time of this writing. With it came huge changes for consumers and developers. Namely ‘flat’ design came about and the entire iOS interface was redesigned with new visuals. The change meant new features for developers too such as SpriteKit – the new 2D game development framework.

iOS7 Game Development by Dmitry Volevodz from Packt Publishing demonstrates how to create an endless runner using the new SpriteKit framework

Continue reading

Today I Learned: Struct Packing With A Microsoft Twist

Member declaration order for structs and classes are important. You want to order the smallest to the largest (or vice versa) in order to avoid what’s known as ‘padding’. Padding is basically what the compiler will use to keep the memory allocation of the struct/class aligned in memory. This padding tends to be wasted space unless some compiler specific enhancement is occurring.

What I learned today was that Microsoft’s C++ compiler actually has extra padding involved, by design. And the solution to avoid the extra previous memory being stolen from you? Quite elementary, how could you not know? Inheriting from an empty abstract class makes your objects smaller.

Continue reading

Today I Learned: Never Rely On Memory – Let The Code Do It For You [If You Can]

So this is something I’ve seen two large camps pitted against each other for. Programmers should always be responsible for the code they write and should always be actively trying to write responsible code in itself. I think everyone can get behind that without much quarrel. But! One camp tends to argue that the programmer should ensure there is ~absolutely~ no way for things to blow up while the other camp argues that the programmer should place ‘checks’ in the code in the possibility that it does.

Hopefully the issue is clear.

Should a programmer place checks in their code to not only protect users in the future, but also themselves? “Why wouldn’t you?” your reaction may be. Well, you might have a complex piece of code that would take a lot of resources to constantly check will work properly. The goal is to make sure your code is exception-safe as much as possible, but there is always someone out there who will holler out “at what cost?!” If something is expected to work one way, that should be the ~only~ way it will ever work they argue!

It boils down to a kind of elite purist paradigm vs a human-error safe paradigm. Both have merit!

I made a pretty timely and amateur mistake today because I was running the purist paradigm. I’ll talk about how I should have placed checks to save myself and evidently my boss about 2 hours of time. But at the same time the issue could’ve been easily avoided and no check at all would’ve been needed if I didn’t rely on my faulty memory.

Continue reading

Today I Learned: Creampuffs and Caneles Are The Keys To Everyone’s Hearts

I baked a ton of cream puffs for work to give out. I’m not French, so I’m at an immediate disadvantage to all things cooking but I got a pretty fantastic response. So I intend to do more of them.

More importantly, I’m trying to perfect Caneles. These are sweet, caramelized dough tubes with a hint of rum. The office raves about them and stampedes every time it gets offered. I shall bake them… and they shall come.

Also on that note I’m starting a food photo gallery. /shrug

Book Review: CryENGINE Game Programming with C++, C#, and Lua

CryENGINE is the popular and insanely powerful game engine used in games such as Crysis, Ryse, and originated with Far Cry 1. Developed by Crytek,  it supports the latest and greatest visual renderers such as DX11. CryENGINE 4 is coming soon as well as Linux support. A modified version of the CryENGINE spawned the Dunia Engine, which is used by Ubisoft Montreal for Fary Cry 2 and 3.

I wanted to try my hand at playing around with the famous engine and thus I am reviewing  CryENGINE GameProgramming with C++, C#, and Lua by Filip Lundgren and Ruan Pearce-Authers, published by Packt Publishing. Read on to see how it went.

Continue reading

Today I Learned: Connections Can Come From Anywhere

So GDC 2014 starts this Monday and as much as I want to go, I only went last year to shoot for an awesome internship. The people, the booths, the information were all great but its hard to justify the cost to get down there right now especially now that I do have an awesome internship at Ubisoft.

But something hilarious happened today in relation to GDC and, to some it might not be a big deal, but to me its just… WOW the coincidence. And its just so inspiring and now if I truly had the money, I’d jump right back on the plane to GDC again.

Continue reading