(Original Image by Valerie Everett)
It is sometime necessary to move an object in a physics simulation to a specific point. On the one hand, it can be difficult to analyse the exact force you have to apply; on the other hand it might not look so good if you animate the object’s position directly.
A compromise that works well in many situations is to use a spring-damper system to move the object.
The trick is simple: we apply two forces—the one is proportional to the displacement; the other is proportional to the velocity. Tweaked correctly, they combine to give realistic movement to the desired point.
Continue reading “A Simple Trick for Moving Objects in a Physics Simulation”
I wrote an article for Dev.Mag covering some techniques for working with seamless tile sets such as making blend tiles, getting more variety with procedural colour manipulation, tile placement strategies, and so on.
Check it out!
The Python Image Code has also been updated with some of the algorithms explained in the article.
I am Herman Tulleken.
I have an honors degree in computer engineering, and I have been making games professionally since 2006, working for Luma Arcade, InnovationLab, I-Imagine and ICE and for many others as a freelancer. In 2013 I partnered with friend / colleague Jonathan Bailey to start a new game-tools business Gamelogic. In 2015 we started a community of game developers in Chile, which became GameDev Planet in 2016. In 2017 we started Plinq, where we make games to help organizations actively engage with their customers.
I have written on many game development and related topics (on Gamasutra and others). You can get a full list on my Writing page.
On occasion I also compose the odd piece of music, mostly for piano.
Random steering is often a useful for simulating interesting steering motion. In this post we look at components that make up a random steering toolkit. These can be combined in various ways to get agents to move in interesting ways.
You might want to have a look at Craig Reynolds’ Steering Behaviour for Autonomous Characters — the wander behaviour is what is essentially covered in this tutorial. The main difference is that we control the angle of movement directly, while Reynolds produce a steering force. This post only look at steering — we assume the forward speed is constant. All references to velocity or acceleration refers to angular velocity and angular acceleration.
Whenever I say “a random number”, I mean a uniformly distributed random floating point value between 0 and 1.
Continue reading “Random Steering – 7 Components for a Toolkit”
The quadtree is an important 2D data structure and forms the core of many spatial algorithms, including compression, collision detection, and stitching algorithms. Below you can download general purpose quadtree implementations in Java and Python.
The code accompanies the Quadtrees article in Dev.Mag. The tutorial explains how the implement a quadtree that can be use to store 2D data efficiently, lists what considerations there are in real-world applications, and gives some debugging tips.
Channels Compressed Simultaneously
|The original image (by smcgee).
||The image after being loaded into a quadtree.
Continue reading “Quadtrees”
Google App Engine has many properties that makes it suitable for indie development. Two articles in Dev.Mag look at GAE for game development (Issue 24 and Issue 25). The first is an overview of Google App Engine, with some focus on games. The second is a tutorial that explains the implementation of “Guess a Number” on Google App Engine, for which you can download the code. For the tutorial you will need:
Continue reading “Google App Engine for Games”
Game Maker is a great tool; it is especially suited for rapid development and small projects. However, as a project becomes bigger, it becomes more difficult to find things, easier to break it, and generally harder to work on. This is of course true for any production environment, and there are many things you can do to tame the beast of scale. Here are 60 things to make Game Maker projects more maintainable.
Continue reading “60 Ways to make Game Maker projects more maintainable”