|
|
v1.2 - April 2002
"If you can't beat your computer at chess, do what I did ? try kick-boxing."
|
Editor's corner GDC is a great place for computer dorks to feel like celebrities. I wish I went...
|
|
|
Game Developers Conference Photos from the floor of the 2002 GDC.
|
|
Project Focus We talk with the founding members of the team behind the interesting Torque project, Dog of Prey.
|
|
|
reSource: Model Viewer A look into the design and implementation of a model-viewing control.
|
|
rtfm manual: Finding a team Why exactly should an experienced 3d modeler join your project when you don't have a clue what you're doing? Hopefully this should help... |
|
|
Level design: textures A look into the use (and misuse) of textures in level creation that should help beginners and experts alike.
|
|
Community Discussion If you don't like this, I'm going to have to sue you. You think I'm joking? I'll sue you for that as well.
|
|
|
month++ Community project starts, and the GDC wraps up. A lot of interesting information from the industry veterans, and a few one-hit wonders. |
|
Q & A If I had a penny for every question I answered in this newsletter... I'd almost have a dime.
|
|
|
memory leak Tired of explosions and gibs? Why not fight your way to the top building bridges, feeding fish, or running your own television station?
|
|
|
 | The past month has been pretty surprising.
No need for some cliche April fool's post about how Duke Nukem Forever came out or Valve finally released any game. I can't say I wasn't tempted, since this was my first time writing for an online publication during the month of April.
|
| Reality can be a surprising joke. Bad Milk won the top prize at the Independent Games Festival, Gamespy News actually provided something useful, some hacker humiliated himself infront of the court, and Baby Bob was a hit. |
| I don't think anyone expected it, but it did very well. Oh, and don't say I'm being negative. It was a fricking show about a talking baby! I mean, what the hell is that about? What kind of idiots would watch that? Millions of American idiots, that's who! |
| Enough about television. Let's talk about a more important and more relevant form of media. Games! (bet you didn't see that coming) The most notable thing this month was the Game Developers Conference in San Jose, California. GarageGames had cool little portion of the Intel display, and a bunch of the GarageGames community made the trip. I can't say much first-hand, but GarageGames has provided me with a bunch of pictures of their booth and the conference. |
| Also important was the announcement of the GarageGames Community Project, Realm Wars. Not too much is known about it aside from the basics of gameplay and the theme, but the buzz is building fast. People have already begun creating modifications to the scripts to add teamplay and capture the flag support, and many others have expressed an interest in helping out with the project in some way. |
| Now that we're on the topic of helping out, I'd like to remind that we (read: "I") over at the GarageGames Community Tune-Up are seeking some writers for future issues. If you noticed, we went from 8 to 10 articles this month and the more support we receive the better. |
| Thanks, and enjoy the show. |
| - Matt |
return to top |
|
|
|
|
|
|
Dog of Prey
Matt: Thanks for coming. Today we're talking with two of the people behind one of the more unique titles being worked on through GarageGames, Dog of Prey. Please introduce yourselves.
Frank: I'm a Frank Bignone. I'm a French programmer. I'm 31 years old and started programming 22 years ago. At the moment, I'm working in a small company in South of France. My actual position there is research and development staff and project manager.
Laurent: I'm Laurent Pavet. I'm a French cartographer. I'm acting as game designer and 3D modeler in the team. I work at the same company as Frank.
Frank: Our team is named Darkhand Team. We have been working together for 5 months now. At the beginning, we were only two guys: Laurent and I. Then a third member joined us quickly: Gema. He's a 3d modeler. We worked like that during 2 months and had a first proto in December.
The Darkhand team
Matt: What is Dog of Prey?
Frank: Dog of Prey is a funny team-based dog fight game with a special emphasis to mission objectives.
Matt: How did the idea for the game come up?
Frank: The game idea came up after Laurent and I played at our first torque tech demo. Laurent did a super-deformed Corsair model, and we played with it on the waterworld map. We found it funny, and decided to work on that idea a little bit more, and came with some main guidelines for Dog of Prey. It was the premise of our design document.
Matt: Did it walk around like a person instead of a plane?
Frank: To tell you the truth, no! But it didn't fly too!
Laurent: In fact it was just a camera.
Frank: It was very funny. The plane acted more like the camera in torque. And moreover, it advances through the tail.
Some planes from Dog of Prey
Matt: How long has your team been working on Dog of Prey?
Frank: We have been working on Dog of Prey for 5 month now. Our team is up to 9-10 members now.
Matt: What other games have influenced this project in it's design and graphical style?
Frank: Micro Machines V3 for Playstation and Jet Set Radio for the cel-shading..
Laurent: Sky odyssey on PS2.
Matt: How has the design progressed? Have things stayed the same as day one, or is everything constantly changing?
Laurent: Hopefully it changes! We started to think at a RPG, and today we are doing a flight simulator!
Frank: As said before, everything comes after our first tech demo. The design doc is constantly changing; evolving is a better word. I still have the RPG in mind, but it is easier to make Dog of Prey instead of a new RPG with a small team.
Laurent: DoP is the first stone of a great building.
Design sketches for a level and the homing missile
Matt: How does the Darkhand team stay in contact with each other and stay organized?
Frank: I dedicated a lot of my time to set-up some tools like a CVS server, a private WEB and FTP server, and a forum. Each of these are key points in order to communicate within the team and to share our contribution.
Matt: How do you assign tasks and responsibilities?
Laurent: We get a to-do list where we have Frank list all the tasks.
Frank: There everyone can share their advancement and put it on the CVS.
Matt: What kind of gameplay are you trying to create for Dog of Prey?
Frank: We are trying to have an arcade-oriented airplane combat game where team play and mission objectives are very important. We want also to put in the game some funny element: deformed plane, funny weapon, funny environment.
Laurent: We always will keep the team play in mind.
Matt: What is your favorite part of the game so far?
Frank: For me: flying at high speed in one of our map.
Laurent: Flying at maximum speed as lower as I can, and shoot Frank.
Frank: You never make it!
Matt: Hehe, it seems you guys are pretty competitive. Does that help when coming up new ideas for Dog of Prey?
Frank: It is really important to maintain a high degree of criticism over our game and between the team members. We always put new things on the forums and let everybody criticize it in order to be sure it will fit. Nevertheless, Laurent and I make the final decision.
Laurent: Frank is a really good programmer but a bad 2D artist.
Matt: Ah, I can smell the honesty already.
Frank: Yes, I'm really well known for my bad programmers arts.
You can almost hear the bagpipes...
Matt: When are you trying to get the beta for Dog of Prey out?
Frank: Difficult question to answer. First, I should say that team members work in their free time. Nevertheless, we aim to have a public demo in the beginning of June. We will put a capture the flag mission and a racing mission
Laurent: I think it will be a near-finished release in the last quarter. We want to release it free for PC, Mac, Linux, and PS2.
Matt: So you want to try to get DoP on consoles?
Frank: If DoP fullfill all my expectations, I will definetly give it a try. I would not sell DoP on console, but I would rather port it onto the PS2 linux environment just for the challenge.
Laurent: I think that it's some kind of dream for Frank.
Matt: What have you learned relating to game development that you would like to share with the readers of this interview?
Frank: Game development is really a team job. You should really be careful at selecting your team members and also have a strong idea of what you want to do in order to have them follow you in the right direction.
Laurent: My girlfriend just told me: "don't have a girlfriend". That way I'd have more time for the game.
Showing off cel-shading and smoke trails
Matt: Is the Darkhand team looking for any new members?
Frank: We still have two ads on GarageGames: one for a coder and one for a 2D artist!
Matt: Anything else you guys have to say?
Frank: Concerning our final release, I want to add that we will also release the source code free for non-commercial use to every Torque user. As a closing statement, I can say that thanks to DoP I learn everyday more and more, and I'm very pleased to work on it with our current team. Moreover, I will be very happy if some members in our team will find a job in the gaming industry thanks to Dog of Prey.
Matt: Thanks for your time! Dog of Prey is shaping up to be a great game!
Dog of Prey's web site
|
return to top |
|
|
|
Matt Webster
Purpose
The goal of this article is explain the process behind the design and implementation of a DTS model-viewing GUI object. This will help other people working on a similar effect learn a possible way to implement this feature, work with loading and manipulating game resources, and to understand how to create a fairly complex interface object.
|
Design
A common feature in many 3d multiplayer games is a menu that allows the user to customize their player character. Whether it be changing skins or models, it is useful to show the user the model and skin they'll be using in game. I decided not to reinvent the wheel, so I built on top of Frank Bignone's object viewing GUI control which was derived from the Torque SDK's guiPlayerView.cc. It loads a DTS shape file textured with the default skin, and allows the user to turn the model around and zoom in and out with the mouse.
Outline of processes
- Load model (already in)
- Load default skin (already in), or apply custom skin
- Load and play animation sequence
- Print debug information
- Allow user to manipulate position and size of model (mostly in)
|
Implementation
One of the first things this control does is determine which "mode" you want to use. The script function sends an integer which sets the mode, and is routed into a switch statement. Depending on the value of the mMode variable, we'll send different variables to the GuiPlayerSelectView::setModel function. This is needed due to overloaded functions not working in this situation. Some cases would call for the same number of values to be passed, and all you programmers out there know that doesn't work with overloaded functions.
First we use the resource manager to create a new resource, and shortly thereafter we check to make sure the thing we loaded is valid. Now we load up the shape (also with the resource manager), and if that didn't work we stop right here. If we chose to load an animation sequence, we'd do that here. We create a new Stream object, and using the resource manager yet again, we open a stream for the .dsq file. After it's loaded up, we close the stream (yep, also with resource manager!) and then add the sequence's name to the end of the string table in the shape, called names.
Now we create the shape instance, and set the level of detail. This is done with the member function, setCurrentDetail. If we chose to use debug mode in the gui control, we'll print out the debug information (LOD count, current LOD, and polygons for current LOD) to the console using Con::printf. Check to see if we want to use a custom skin. If we do, we'll create a texture handle for the skin's .png file and set the first material in the instance's material list to it. After the skin is all setup, we'll add a thread and initialize the sequence for the model to make sure the animation works correctly and intiialize the camera's values. We get the current time in milliseconds to work with the animation rendering, and we're done with the setModel function.
In the renderWorld function, we check to see if the object is supposed to be animated. If it is, we advance the animation ahead based on the difference between the last render and this one, and then call the shape instance's render function.
Problems
Most of the features implmented were fairly easy to code because much of the code is used elsewhere in the engine. The problem was locating that code. I ended up finding pieces in player.cc, shapeBase.cc, resManager.cc, and ShowTSShape.cc.
The only real bug that showed up in the development of this control was a fatal error that occured if you gave the setModel function an invalid model. This was allieviated by checking to see that the file loaded into a new shape was greater than 0 bytes before the shape instance was created. Sounds like a hack, but it was the best fix I could come up with after 8 hours of debugging. Yes, 8 hours.
Other notes
Future goals for this interface object is to add the rendering of nodes, and supporting mounted objects like weapons.
Special thanks to Frank Bignone and Xavier Amado for the base code.
Access the tutorial and source code here
|
return to top |
|
|
 |
This article is aimed at teams looking for members. If you've followed my exploits you'd see that I've gone through a handful of teams due to many different reasons. Hopefully my experiences and observations will help people wondering where they should go when starting out on a project, and how to identify quality additions to their development team. |
| There are new projects starting everyday, and with that comes the need to recruit new talent. Sure, you might think just hearing your game idea would trigger dozens of applications to come rolling in, but that isn't the case. You're already trusting of the idea, so you might not realize that others might be skeptical.
If you want to attract talented applicants you're going to have to sell your project. No one wants to join a project that is based on a hackneyed design with a crumbling team. They want to know that their efforts won't be wasted, and that they'll be supported by a responsible project leader and an organized team. They want to know where this project is headed, and be able to figure out if it can succeed or will be destined for failure.
Jimmy Jones realized that he wouldn't be able to create a game on his own (after all, he can only program in QBasic) so he's started looking around for some new talent for his team. Oh look! He posted a help wanted ad on GarageGames.com. Let's take a look at it...
PROGRAMMER FOR DRAGONBALL Z
Time & Payment:
Time Frame: a few years
Pay: no pay unless we sell on playstation 2
|
Synopsis:
I need a programmer to make my game that is going to be based around dragonball z and is really cool. it will be the best game ever and we can make a lot of money to. |
Description:
I need programmers to program in c++ and java and html since I cant program. I want people who are good since I want my game to be good and not bad. k thnx. |
Damn Jimmy, and you're surprised that Carmack didn't apply?
If you didn't feel it was important enough to proofread or even provide useful information about your project, then why would it be important enough for anyone with half a brain to apply for the job? You have to realize that even if the design seems flawless to you, others don't know anything about it. Either explain to them the reason your game is going to be a success (or even better, provide a link to your project's site) or don't expect any responses.
Don't try to stress aspects that are out of reach for a team that is just forming. Discussing how it's going to be on the Playstation or Xbox is pretty foolish, and the serious applicants should realize that. A foolish project lead usually doesn't have much potential to be a good leader. He's the one to set deadlines and goals, and if he's talking about being released on consoles before the talent has arrived, then the quality of his judgment should be doubted.
Now that the basic problems are out in the open, let's assume you've written a quality help wanted ad. You might receive some applicants, and you're going to have to screen them to find the best person for the job. Artists are probably the easiest to screen. Ask them for a portfolio and example work. If they can't provide any past work, then you might want to question their experience. Programmers, on the other hand, can be difficult to screen. How do you know who's a better coder? Ask for past work, and find out their level of experience. If you can screen out the people you don't need, you'll save countless hours down the line trying to locate replacements. Chat or phone interviews are always good to help get a feel for the person, and always add to the professionalism of the project. After all, when was the last time you got a job in real life without an interview?
If you're trying to create a project, then you're going to have to take it seriously. If you can't take finding new talent seriously, then why should anyone else take you seriously? The first contact you make with people usually has the most lasting affect on your relationship. Don't act like an ass to people whom your project really needs. Be polite, friendly, intelligent, and act professional.
For those of you who did not want to read this article, let me summarize:
- No one gives a crap if you have a cool idea. Ideas aren't games.
- Proofread anything that you post about your project.
- Act reasonable, professional, and responsible.
- Supply information on your project, preferably a link directly to your site.
- If there's no pay, you better explain why it's worth their time.
- Screen applicants, and you'll save yourself a headache down the line..
Note: Some people wondered about last month's "chat log" with Jimmy was real, so let's clear it up before you even ask. This is not a real help wanted ad, but is very similar to many that have been posted. It's funny, but damn if it isn't depressing. Reality was the reason I wrote this article.
|
return to top |
|
|
|
Common texture mistakes and how to avoid them
What makes a level? A box with a texture and some light in it? Yeah, that's a level. Probably a good description of everyone's first level. What makes a great level? Expert use of architecture, sound, layout, item placement, balance, performance, lighting, models, and textures. There's no real way to describe the perfect level or how to make it, so when just starting out it's best to try to tackle each aspect on it's own.
Textures are what give the level it's personality. Whether it be a mildewed brick texture that gives the dilapidated feel, or the rustic feel of wooden floorboards. Every texture can add to, and take away from the quality of the map. Here I show you some of the most common mistakes in texturing that usually occur when a mapper is rushing, or just isn't paying attention to every detail. None are difficult to fix, but even one misaligned texture can ruin the whole "professional" feel of a map.
Mirrored textures
One of the most common texturing mistakes occur at the seams or corners of walls or buildings which can be seen in the below picture:
Mirroring will usually occur on 2 faces that are perpendicular to one another. The mirrored effect gives a skewed 3d feel to it, and can inturrupt what was a well textured level. This can be tough to detect at times, so make sure to search carefully in game and in your editor.
The solution is simple enough, but may not be obvious. Select "texture properties" and click on one of the sides that are affected by the mirroring. In the "X Scale" input, multiply the scale by -1. This will cause the texture to flip over the Y Axis, and remove any mirroring since the textures are no longer identical:
Unrealistic use of textures
The goal of texturing a level for most projects is to reflect some realistic location comprised of realistic materials. A common mistake is ignoring the limits of a material type. This may be difficult for me to explain, so let me show you in a picture:
Bricks are bricks. Don't treat them like concrete or glass. They cannot be cut at awkward angles and expect to stay there. The reason this is overlooked so much is because fixing it can be difficult. As seen above, the problem is because an arch is needed, and the wall is made up of cinderblocks. There is no simple solution, but there is a fairly easy way to cover it up which you can see below:
Borders such as the simple one used above can make unrealistic edges less obvious. Borders are also great for joining two surfaces that might not line up perfectly.
Too many textures
Just because you have hundreds of textures at your disposal, doesn't mean you should use all of them. Here is a map that uses way to many textures in a small area:
In the above picture there are at least 15 different textures. None of them really do anything but paint the walls, and end up creating a confusing and jumbled scene.
The best way to deal with limiting textures is to come up with a texture set. Choose a group of 8 to 10 textures you plan on using for the majority of your interiors. Try to stick to using those for much of your map, and use other textures for accents. In real life you won't find walls composed of 10 different textures as they were in the above example. If it isn't something you might see in real life, then it should be avoided!
What the heck?
Next problem has to do with using unrealistic textures. This picture below is probably the best example I've seen of using textures that just don't make any sense:
The above picture actually made me laugh when I saw it. "Radioactive stuff stored in wooden containers?" Just think before you make levels and textures. Don't use rock walls in a computer factory, modern bunkers aren't made of wood, and it's doubtful that you'd see metal flooring inside a supermarket.
Sky can be the limit
Pick a skybox that fits the theme of your level. Does it take place in the city? Get a skybox with buildings in the background. Does it take place at dawn? Get a skybox with a sunrise, or with low light at the horizion. Here is a pic showing low-quality sky:
One last thing to remember about skyboxes is that to make sure the enviroment's light (sun, moon, or ambient light) has a color and brightness that reflects how the skybox looks. If it's a night skybox with a full moon then have the sun entity of the mission emit a fair amount of white light at a high angle. So many times do people choose skyboxes because they are pretty, and not enough because they fit the theme of the level.
Not everyone can be a Picasso
The last topic I will cover can be humbling. Not everyone is an artist. Most people must rely on other user's texture packs, and live with what they get. Some are lucky enough to recieve help from some very skilled artists. Some people want unique textures for their map, but can't make them worth crap. What do they do? They make crappy textures!
There are thousands of textures on the internet for you to use in free projects, and many that can be used legally if you get permission of the creator. Your best bet is to find someone for your project to work full-time on the textures. Just because you tried to make a texture doesn't mean you should use it. If you do, your map may end up looking like this:
|
return to top |
|
|
|
selling virtual items
If you've played any of the major online role-playing games, you've probably seen or heard of it. Maybe even done it yourself. Buying and selling items or characters for these online MMORPGs. It's something that the developers behind these games are having to deal with by setting up rules, and now having to deal with it in the courtroom.
MMORPG (Massively Multiplayer Online role-playing Game) is probably the most popular game genre in the world right now. There are popular, mainly because it's a very easy way to escape reality. Don't like your job? Your kids? Your family? Your life? Don't worry! You can be Stryder the Paladin Dwarf who's popular, happy, and the ladies man.
Most people are able to differentiate between entertainment and reality, but there are a growing number of people who are treating their virtual-life much like their real-life. You might normally want to buy a new pair of shoes or car, but many people like to spend their hard earned cash on virtual items. Yep, that's right. Need a new sword in Everquest? Pay $45.00! Need a new cloak in Dark Ages of Camelot? Pay $190.00!
Enterprising basement-dwellers have organized businesses to try to allow them to "work" full-time as a gamer. Dozens of websites have popped up that sell in-game currency or items, or even run eBay-like auctions for peer-to-peer sales. They cleverly avoid acknowledging how the sales of these items are prohibited by the developers, by saying things like "You're not buying the actual item. That's not allowed. You're just paying us for the time it took us to get it for you!". Legitimate players are insulted to see some person pay $500 and start with some high-level character and great equipment, and this has forced some of the developers to take notice.
Verant (people who made Everquest) have banned all auctions on the major auction sites (eBay, Yahoo Auctions, etc) for their game. More recently, Mythic (developers of Dark Ages of Camelot) has cracked down on a private company called Blacksnow Interactive. Blacksnow operates http://www.camelotexchange.com as well as http://www.aoexchange.com and was ordered by Mythic Entertainment to stop selling Dark Ages of Camelot items on their site.
Blacksnow returned the threat with a lawsuit. Claiming that they are "fighting for the rights of the gamer" and that Mythic has no right to regulate the sales of virtual items in their game. I'm guessing they found some pretty desperate lawyer, because I've read through the documents a few times and I don't have a clue how they think their case can hold water. Legal documents, BSI vs. Mythic
You think this is the end of this rather humorous situation? Hardly. As the urls above imply, BSI also sells Anarchy Online items. Funcom, the company behind Anarchy Online, has realized that the accounts owned and operated by BSI have been using exploits. Exploits are the equivalant of cheat codes or hacks. They are against the rules, and unbalance the game. Dozens of other people were banned in the past for using cheats to do more damage or have better items, but BSI's accounts set a new precedent for cheating. Characters that were leveled dozens of times a minute, stacks of tens of thousands of high-end items, and billions of credits. Funcom shut down all of the accounts, and this is where things take a page direct from soap operas.
One of Funcom's employees, tried to discuss the matter with BSI's lead, Lee Caldwell. Funcom wanted information on the cheats used so that they could fix them, and were willing to possibly return some accounts if they complied. When it became clear there were no accounts that could be returned, BSI became desperate. Implied threats of legal action, then an offer of $7000 monthly to allow them to continue, then finally a direct claim that they'll be filing a lawsuit against Funcom. Think I'm making this up? Here's email correspondence between Andre Backen of Funcom and Lee Caldwell, and here's a verified legitimate ICQ chat log between the Funcom employee and Lee Caldwell of BSI. It was released by BSI in order to provide support for their cause, but I don't see how this could do anything but put the nail in their coffin.
I contacted the folks at Blacksnow and tried to schedule an interview with one of the three plaintiffs in the case versus Mythic, but was told by Richard Phimm (one of the three) that his lawyers recommended that he say nothing over the phone. If I wanted to give him an interview I'd have to do it via email or online chat. He said he would like to discuss the matter and that he'd get back to me within a few days. Guess what happened next? He disappeared. Nope, not a joke. He's hiding after the FTC has pressed charges of defrauding customers, and is demanding payment of almost $80,000. Here's the legal documents for this case. I'm disappointed that Richard ran away, since I was looking forward to an exclusive interview for the Tune-Up!
Other links
Press release from BSI regarding Mythic suit
Funcom's official press release on the situation
Unknownplayer's in-depth report on the debacle
So what do you think? Should gamers be allowed to sell items and accounts to other people? Should the game developers support it and act as middle-man? What do you think about this whole Blacksnow Interactive situation? What about their claims at fighting for gamers rights?
Post your thoughts here
|
return to top |
|
|
|
|
|
Dump it
Is there any other way to get information on objects and datablocks in game? The standard dump log functions are pretty limiting.
H. North
Matt responds: Yes, there are a few manual ways to get the information on objects in game. My personal favorite is the dump function that is automatically in all objects. To use it, just type objectName.dump(); and you'll get a list of all available member functions and variables in the console.
Another function you can use is the dumpConsoleClasses function. Enter dumpConsoleClasses();into the console and it will dump all currently declared console classes to the console window. Very useful.
Master server
I noticed recently that Torque's master server supports filtering and region masks so that we can have per-project server listings. So far, however, my experiments at getting this to work have failed.
I've tweaked the settings in server "defaults.cs" and client "default.cs", as well as joinServerGui.gui. But I can't seem to get the query to list my servers.
I searched the resources and forums, but couldn't find anything on this.
D. Michael
Guest, Tim Newell responds: find these lines in example/common/server/game.cs
$Server::GameType = "Test App";
$Server::MissionType = "Deathmatch";
$Server::GameType - Tell the master server what type of game that can join this server.
$Server::MissionType - Tell the master server what type of mission the client should be running to join.
in example/fps/client/init.cs:
$Client::GameTypeQuery = "Test App";
$Client::MissionTypeQuery = "Any";
$Client::GameTypeQuery - Tell the masterserver what kind of servers it is looking for and to only display those.
$Client::MissionTypeQuery - Tell the master server what type of missions it is looking for. It is defaulted to "Any" so you can join any server.
It won't work!
I keep trying to use the member function setText to set the current text in a textbox. It doesn't work, and I can't figure out why.
R. Harring
Matt responds: Yeah, this is an annoying problem. I think the reference to obj.setText() was left in after Tribes 2 stuff was removed, or was never used. The correct syntax to use is: obj.setValue("text here");
This blows
I can't figure out how to cause a projectile to blow-up after an elapsed time. Can you help?
F. Lawton
Guest, Harold Brown responds: First we will take a look at a function that will do the dirty work:
function blowup(%obj,%dmgtype)
{
%pos = %obj.getposition();
%dblock = %obj.getdatablock();
%p = new explosion() {
dataBlock = %dblock.explosion;
position = %pos;
};
MissionCleanup.add(%p);
// Radius damage is a support scripts defined in radiusDamage.cs
radiusDamage(%p,%pos,%dblock.damageRadius,%dblock.radiusDamage,%dmgtype,0);
%obj.delete();
}
%pos = %obj.getposition();
This line finds the current position of the object passed to the blowup function, in our case this would be the projectile from our weapon of choice.
%dblock = %obj.getdatablock();
This line will return the base datablock ID of the object passed to the function.
The next block of code will create the explosion.
%p = new explosion() {
dataBlock = %dblock.explosion;
position = %pos;
};
%p will hold the object ID of the explosion so we can add it to the MissionCleanup simGroup.
We use the new command with explosion to tell the engine to create a new instance of an explosion object.
The dataBlock line tells the engine what explosion datablock to use and the position line tells the engine where to place the explosion in the game world.
MissionCleanup.add(%p);
As I mentioned earlier this places the object into the MissionCleanup simGroup. This is always a good idea to do when adding objects into the game world by scripts as it will ensure that the objects will get removed when the mission cycles.
radiusDamage(%p,%pos,%dblock.damageRadius,%dblock.radiusDamage,%dmgtype,0);
This function calls the radiusDamage function. It tells sends the explosion id (%p), tells the function to center at %pos and sends the damageRadius and radiusDamage tags for the explosion datablock. It also tells the function to tag damage as the %dmgtype damage. The final option the 0 tells the function how much impulse to apply to objects that are in the blast radius.
%obj.delete();
The final line in our function will delete the projectile object.
To call the function add the following line in your {weapon}::onFire function:
schedule(1000,%p,"blowup",%p);
Add it after between the following 2 lines:
MissionCleanup.add(%p);
return %p;
Post your questions reguarding this issue here.
|
return to top |
|
|
|
Need some creative inspiration?
|
| Looking for some examples of innovation and creativity? Well, look no further! Here's a few interesting and unique games that should get some ideas flowing, as well as entertaining you. This issue of the newsletter was almost late because of these addictive examples of independent game development! |
|
Game: Kung Fu Chess
Developer: Shizmoo Games
URL: http://www.kungfuchess.com
|
Description: Real-time chess. Pieces move same as they do in normal chess, but there are no turns. Move any number of pieces in a short period of time with the only limit being a short timer between moves for the same piece. Won the IGF 2002's Audience Choice Award.
|
What makes it fun?
- Fast-paced, unlike most games of chess.
- Short games, so losing isn't going to tick you off.
- Simple rules.
- Balance of reflex and strategy.
|
What is innovative?
- Infuses a normally slow game with action.
- Feels like a fighting game, but no punches are thrown.
- Four-player mode.
- The guys who made it wear crowns and have perms.
|
|
Game: Pontifex
Developer: Chronic Logic
URL: http://www.chroniclogic.com/pfx.html
|
Description: This game gives you a budget and a selection of building materials, and forces you to use creativity and knowledge of physics to build a bridge that can withstand a train running across it. The engine uses fairly realistic physics, which can make for some pretty spectacular collapses. Overall, the hands-down best engineering game I've played.
|
What makes it fun?
- The same reason building blocks are loved by most kids.
- One of the few games where experimentation is rewarded.
- The train. Saving it... or smashing it.
- Sense of accomplishment when "defeating" a level.
|
What is innovative?
- You build bridges!
- Simple gameplay mechanics that create a complex game.
- Probably the only fun engineering game on the market.
|
|
Game: TV Manager
Developer: Niels Bauer Software Design
URL: http://www.nbsd.de
|
Description: This game allows you to take the reins of your dead granduncle's sinking television station in the 1950s, and try to bring it back to life. Sign advertising contracts, schedule programs and movies, and custom tailor commercials and news broadcasts to your viewers' demands.
|
What makes it fun?
- Day-by-day play keeps things changing frequently.
- Input from customers adds realism and humor.
- Freedom to customize everything.
|
What is innovative?
- Probably the only television station simulator.
- Tweak pretty much anything.
- Uses knowledge of TV and business to be successful.
- Very realistic responses to most actions.
|
|
Game: Insaniquarium
Developer: Flying Bear Entertainment
URL: http://www.freshpulp.com/fishtank
|
Description: Start with two guppies, and try to upgrade to piranhas and lasers! Another weird game, and it requires that you feed and protect (or feed to the piranhas) a bunch of guppies and blast away any incoming monsters. Won the IGF 2002's award for best game design.
|
What makes it fun?
- Never a dull moment.
- Cute animation and graphics.
- Simple, arcadey gameplay.
- Fear of monster attacks and losing fish.
|
What is innovative?
- All objects and animals react realistically.
- Protect instead of destroy.
- One button gameplay.
|
return to top |
|