Feelin'it  Golf

Top  Previous  Next

Augusto Bulow, although on a tight schedule, managed to find the time to answer a few questions for this month's interview.


Q: What is the size of the biggest level of the game?

A: The Golf game is using a nexus of 350. We have a good level of details on models, on the terrain, and this naturally asks for some computer processing. The biggest wmb level file have about 27 MB, but  I think the big terrains are the main reason for most of the processing needs. We are using huge terrains, a specific terrain for each map / hole, and this was one of our main doubts while we were developing the game.


A golf game needs huge terrains that don't have too many details and faces, but in some specific parts, the sand bunkers mainly, we needed a lot of faces in order to reproduce the shape of the terrain properly. We have tried to use multiple terrains, but we had problems with the lighting and the edges didn't look proper. In the end, we have used a simple terrain for each hole, with a reasonable number of faces for achieving all the needed details.


Q: How do you customize player's aspect?

A: The players are composed from different model parts.  I think that this is the best way to have a good customization level. We have some different models for each part, and each model with some skins. This multiplies the possible combinations, the customizations variations. Technically, if the model parts have the same frame numbers and share the same animations, it's easy to have them linked together. The parts should be created by the same function, using the smallest delay possible; this helps to maintain the parts visually synchronized.


Q: Are you using a regular PH_SPHERE entity for the golf ball, or is it more than that?

A: The ball is a PH_SPHERE, but let's say, it's a little more than that. We have some code that monitors the ball all the time. We let the main physics to the engine, but when we perceive some strange behavior we give it some help. We had some problems with the ball becoming stuck some times, some kicks on the ground were not looking so natural; then we made the ball code aware of and handling these situations. Also, we are using a simple terrain with different surfaces, which must have different friction and influences on the ball kick and the ball strike. The ball code acts on these functions also.


Q: How did you create the trail that follows the golf ball?

A: It's a simple particle effect, with a small white bitmap. I'm taking the ball's velocity with the PHENT_GETVELOCITY, and then using it to start the effect as the speed vector. The particle is STREAK and doesn't move; its function only decreases its alpha until the particle disappears.


Q: How do you change the behavior of the ball depending on the type of the terrain, wind, and so on?

A: It's all in the ball code. We are monitoring and helping the ball physics all the time. We perceive the kind of surface for example, and then we give a little help on its friction, removing some velocity with the PHENT_ADDVELCENTRAL, and the same for the wind. We have a wind function that creates wind variations, and then the wind force is applied to the ball code as another PHENT_ADDVELCENTRAL, with a different force according to the height of the ball.


Q: How did you code the "replay" feature?

A: We have our own replay function that actually was developed in 2003, while we were working at Matchball Tennis. We are using it, improving and optimizing it all the time. I think there is no real "secret" with replay functions; you basically have to record the position, rotation and animation of the main characters / models. Later, you can read and use them easily; just remember the order you saved the variables.


Q: What are the advantages of using Novint's Falcon for this game?

A: The Falcon is a device that's different from any other joystick on the market. It's different when it comes to the usual force feedback system found on joypads and joysticks. With the Falcon you can feel the weight, the friction, and a real force feedback on X, Y, and Z. There is a X, Y and Z force with this controller and it can be greatly used in several games. For our golf game, you have the swing movement, you can feel the club weight, and your deviation and swing velocity are detected; it all reflects in your strike.


Q: What is the biggest mistake you've made while you were developing your first games?

A: I think there weren't big mistakes; I believe it's all part of  an understanding, a learning process. Of course, I look at my old game code and I can see how many useless lines, or what a complicated way I have found to solve something, but then I perceive that my understanding today was developed by making those little mistakes.


There are a thousand ways to make the same thing with computer programs, using different codes. I still think that the best code is the code that works. In time you can learn how to make it better: try harder, search, use the forum and also ask the JCL when no solution is apparently seen - you will then find the solution.


Thank you a lot, Augusto.