background preloader

Programming

Facebook Twitter

Procedural World. An Automated Pipeline for Generating Run-Time Rigs « Game Development. On account of getting the flu at GDC, and then having to catch up on all of my work that wasn’t getting done, I’ve been a little behind, but I wanted to make sure I got up a write-up for my main conference presentation from GDC this year.

An Automated Pipeline for Generating Run-Time Rigs « Game Development

What’s This About? This post is not meant to blow your mind, but to turn that hat around. In order to set the proper tone, I want to clarify a few things up front.I’ve had to implement run-time rigs in the majority of games I’ve worked on, but I don’t consider myself an expert. I don’t even consider myself to be especially smart, just really persistent.This presentation was not meant to blow anyone’s mind or to show some cool new technology, but more to point out something that you can already do with things you have.My implementation was done with Unity and Autodesk Maya, and I chose to implement specific features from Maya.

I hope it’s obvious, but you should be able to do this no matter what software you’re using—your own or otherwise 1. 2. Creating powerful languages with Xtext. Today, I would like to introduce the Xtext framework to you.

Creating powerful languages with Xtext

Xtext is an open source framework which allows you to define your own textual programming languages before you know it. Xtext was not developed specifically with game developers as a target group in mind. It is rather independent in terms of its application context, and I’m convinced that every tool department that ever needed to define their own programming language can immensely benefit from Xtext. So, although there already exists convenient documentation, examples, forums, and so forth, I would like to provide an article that uses a small, game-related example to introduce the technology.

Steering Behaviors For Autonomous Characters. Steering Behaviors For Autonomous Characters background and update by Craig Reynolds Abstract: This paper presents solutions for one requirement of autonomous characters in animation and games: the ability to navigate around their world in a life-like and improvisational manner.

Steering Behaviors For Autonomous Characters

These "steering behaviors" are largely independent of the particulars of the character's means of locomotion. AI : Neural Network for beginners (Part 1 of 3) Introduction.

AI : Neural Network for beginners (Part 1 of 3)

Welcome. 10 Technical Papers Every Programmer Should Read (At Least Twice) T=Machine » Entity Systems are the future of MMOG development – Part 1. A few years ago, entity systems (or component systems) were a hot topic. In particular, Scott Bilas gave a great GDC talk on using them in the development of Dungeon Siege. The main advantages to entity systems were: Clb.demon.fi/files/RectangleBinPack.pdf. Implementation of Delegates in C++11. Download delegates.zip - 4 KB Introduction In C++, it would be useful to be able to bind an object with its member function and produce a global function.

Implementation of Delegates in C++11

Such features exist in other languages: for example, delegates in C# enable programmers to do exactly that. In C++, there are member function pointers. But they do not provide that feature. Background. Raw Material Software. Battery Powered Games LLC. Mobile Applications Development, iPhone & Android App Development - Marmalade. Leading Enterprise Java Web Framework. Development on Android NDK Tutorial - Gluing C++ Native Code to Java. Ok, in this post I am going to talk about how to join C++ native code to a thin Android Java code layer.

Development on Android NDK Tutorial - Gluing C++ Native Code to Java

I am not going to be doing all native code, as I think the easiest route is to use the Android higher level convenience SDK for loading resources/file I/O, setting up OpenGL context and other state management. I won't be using any IDEs or anything else to complicate things. This is as easy as it can get, you get the source and type "make" (I assume you are on a system with GNU make, and your environment is setup correctly. Linux is easiest, but it should run fine on ANY system that can run Make, even Windows!). Static.googleusercontent.com/external_content/untrusted_dlcp/www.google.com/en/us/events/io/2011/static/notesfiles/BringingCandCppGamestoAndroid.

NDK. Before installing the Android NDK, you must agree to the following terms and conditions.

NDK

Terms and Conditions This is the Android Software Development Kit License Agreement. iPad Programming Tutorial – Hello World++ Introduction Now, that the iPad has been released, I’m sure you are all scrambling for ideas on how to snag a piece of the maket in the imminent gold rush. iCodeBlog is going to help you on your journey with a series of iPad tutorials to come.

iPad Programming Tutorial – Hello World++

Since the iPad uses the same SDK as the iPhone, all of the code under the hood is almost identical. Actually, when looking at the new and changed API classes, you will realize that most of them are user interface related. This is good news for us since we have already been coding iPhone. Implementing Huffman Coding in C » Programming Logic. Huffman Coding (link to Wikipedia) is a compression algorithm used for loss-less data compression.

Implementing Huffman Coding in C » Programming Logic

Here’s the basic idea: each ASCII character is usually represented with 8 bits, but if we had a text filed composed of only the lowercase a-z letters we could represent each character with only 5 bits (i.e., 2^5 = 32, which is enough to represent 26 values), thus reducing the overall memory needed to store the data. For example, the table of characters -> binary code could look like this: a = 00000b = 00001c = 00010d = 00011e = 00100 And so on.

This is the fixed-length representation, and it already creates a significant compression rate (around 35% in the example above). Intrusive Lists. I will finish off my series of articles on data oriented programming by discussing the linked list. I will detail the linked list implementation I use, the intrusive linked list, which I first encountered many years ago hacking on the Linux kernel. The intrusive linked list is the data oriented version of the linked list container. But, before I detail intrusive linked lists, I will detail the typical linked list, the external linked list, so I can easily point out it’s limitations compared to the intrusive linked list. The external linked list of type T looks like this: This is straight forward enough. Constraint Relaxation IK in 2D. April 13, 2009 Inverse kinematics (IK) solvers often become mathematically intensive or computationally expensive with long kinematic chains or when functioning in higher dimensions.

Constraint Relaxation IK in 2D

I am going to cover an approach to solving IK that is easy to understand, handles any number of joints, and is easy to implement in any dimension. We will walk through a two dimensional example and I'll present sample code to perform the algorithm. A basic kinematic chain of joints with no rotational constraints can be viewed as a set of points (the joint positions) with distance constraints between pairs (bones with a fixed length). By iteratively stretching the bones towards our target and resolving these distance constraints, we will converge on a solution to the system. You might also be interested in the following articles on different IK solvers: Now that we have our joint positions in a common space, we can start the constraint relaxation process. Figure 1a figure 1b. Analytic Two-Bone IK in 2D. December 29, 2008 Due to their complexity, inverse kinematics (IK) problems are often solved with iterative solutions.

While iterative solutions can handle different IK poblems with a single algorithm, they can also become computationally expensive. If a specific IK problem needs to be computed often, it is worth considering an analytic solution. If we limit the problem to a two bone chain in a two-dimensions, we can derive the anaytic solution without much complexity. This will generally be more efficient than its iterative alternatives. Inverse Kinematics for Humanoid Skeletons Tutorial. Go to Tutorials Page | go to 3DKingdoms.com Other Tutorials I've written: Normal Mapping with Skeletal Animation | 3D Selection | Tips on programming a 3D Editor.

Geometric Algebra For Computer Science. Amazon.com automatically deduced from its sales and search figures that many who are interested in quaternions are also exploring geometric algebra. Quaternions and 3D Rotations. The title of this tutorial is short and sweet. The tutorial itself will not be. First, an introduction. Gamasutra - Features - "Advanced Character Physics" printer friendly. This article explains the basic elements of an approach to physically-based modeling which is well suited for interactive use. It is simple, fast, and quite stable, and in its basic version the method does not require knowledge of advanced mathematical subjects (although it is based on a solid mathematical foundation). Spending Your Cache Wisely. Back in the day, computers were much simpler things. They had a CPU and they had some memory. Getting data to/from memory took a fairly reliable amount of time, and when optimising you’d just try to make sure that memory speed wasn’t the block in the pipeline that caused your application to slow down.

Today however, things have changed, primarily due to the fact that CPUs have gained speed at a much faster rate than memory has.

Reference

Function Pointers vs Member Function Pointers. The Impossibly Fast C++ Delegates. Download source - 35.7 Kb (source code, tests, demo, documentation, benchmark) Introduction. Ming-Lun "Allen" Chou. Signal System using Delegates. C++ Reflection: Type MetaData: Introduction. Algorithms. A-star Shortest Path Algorithm « C++ recipes.

Quick Sort - Sorting Algorithm Animations. Algorithm.