Programmers update #3


Programmer's Update Header

Introduction
As I promised, here is a huge programmers update with a lot of stuff I am going to show you. Before I start, I have to let you know that the following things (same counts for previous updates) are all WIP (Work-In-Progress), so don’t get back on me when something changed in a later update.

You might have heard that I have been on vacation in Italy, and damn I was bored… I was so bored, I took a laptop and completely restarted coding Project Stealth, with a good ending! We (the team) now have more than before I went to Italy. So, today I am going to show you some pictures of the special optimized Project Stealth Editor, I will talk about Environmental Events (EE) once more and I will give you a quick sneak peak behind the scenes.

Are you ready?

Project Stealth Editor
The Project Stealth Editor is actually what makes Project Stealth Project Stealth. It is used to create maps, to make visions work, actually making almost everything visual possible. It has a powerful material editor (for textures and such), it can make in-game menus, HUD’s, it even let’s us handle most of the sound.

Luckily, I and the rest of the programmer’s team don’t have to customize that. What we do have to customize is the interaction between the maps and the game itself. No matter how hard we would program, you won’t be able to see visions without this interaction, since the map basically has to “tell” the game what should be visible in a vision and what not. Same counts for EE’s, without the map telling it to the game, you won’t be able to hang on a ledge or even do something “simple” as climbing a pole, a fence or even interact with an hackable laptop. As you might understand, doing this interaction thoroughly is very important.

Sub: Visions
The first type of interaction that was needed in the maps were visions. I guess you saw MR.MIC’s great EMF video (If not, go watch it now: ModDB Link), that video is a great example of a successful implemented piece of interaction. Let me tell you how the visions work and how the maps help with that.

Basically, at the moment you toggle on a vision a material (remember the powerful Material Editor I mentioned?) gets deawn on the screen, only allowing a certain color to shine through it. In our case, we took the neutral and not very common magenta color (This is magenta). So, to make something visible in say EMF, that “something” has to be magenta colored. Still there? Now, you might be able to imagine how odd it will look if the levels in Project Stealth would be magenta colored all the time. So, we had to make the editor tell us when and when not to make an object magenta colored.

For this, we invented the PSStaticMesh (click to enlarge).

PSStaticMesh

The PSStaticMesh acts as any other StaticMesh, yet, it allows us to add some extra entries to it’s properties. Say we want this PSStaticMesh (a stairs) to light up in EMF, we add a magenta colored material to the list and save the map.

PSStaticMesh Properties

Next we would want to see how it looks. To prevent the mappers from starting and closing the editor every time they want to test something in-game, we linked Project Stealth itself into the editor, thus clicking “Play from here” from the right-click menu allows us to immediately see the effect. Voilà, the PSStaticMesh just told the game the stairs should light up in EMF (click to enlarge)!

In Editor Game

To let you experience what I just told you, I’ll ”untoggle” the drawn material. The following happens when you toggle the EMF on (for example, click to enlarge):

Underneath the EMF

The nicest thing of this approach, is that we can add certain effects to the magenta colored material from above. Won’t you like the spy even more when he had some details on his body when EMF is activated? It also allows you to make certain parts of an object (eg. a halfburning stairs) more “hot” than other parts. Also here the Material Editor will help you big time!

Easy stuff right? Everyone can do it, even you! Feeling itchy to start mapping? Then start the Unreal Editor and simply start mapping, you won’t need anything from our side yet (besides instructions on how to convert it to a Project Stealth map when Project Stealth is released). Try to use as much StaticMeshes as possible, since this will making them show up in a vision easier at the end.

Sub: Environmental Events
The second type of interaction that was needed in the maps were Environmental Events. What the heck are EE’s again I hear you think? EE’s are interactions that tell the game what can be used as a pole, ledge, hack-panel or whatever. Depending on the type and settings you set in the properties of an EE, it will tell the game how it should act.

To make this kind of interaction possible, we made a special type of volume called “PSVolume”. It works and acts like any other volume the editor knows, though, it comes with a manual. Say I make a 512 units high vertical pole with a decimeter of 16 units, place a square EE over it with a size of 17×17x512 units, the game can calculate exactly where the beginning and the end of a pole is. Though, as you might guess, these calculations are only correct when the height matches the pole it’s height and the volume is centered on the object (or see it the other way around, the pole is exactly in the middle of the volume). This is a lot of work to do and we never said it was fun to make maps, but it’s something that has to be done to make things like a vertical pole work.

Though, to cheer you mappers up a little (and the other future Project Stealth players aswell ofcourse), I can announce that we have a pre-alpha Vertical Pole climb working. It has some nice features as:
- Detecting whether you wish to use the EE or not (eg. you accidentally hit the volume or bumped off it)
- Rotating around the pole as the pole’s placement allows, so say the pole is in the middle of a room with no obstacles, you could rotate 360 degrees around it.
- Some other tricks I’ll keep to myself now.

The sneak peak
If the above announcement ain’t enough yet, I can tell you something about current in-game things aswell. Note, this requires some imagination from your side.

Well, to start Project Stealth, we ofcourse use our own executable, no hassle with command-line parameters whatsoever, the executable will handle it for you.

After a short loading time which we could spend looking at a Project Stealth splash (20 seconds), we can actually see a start of a menu, it has the following options:
- Create server
- Join game
- Quit

I’ll just click “Create server’. Hey, that looks like a pre-alpha lobby system, you can actually choose your team and start the server. Seems MR.MIC and MulleDK13 joined in aswell! I start the server and I can keep chatting with MR.MIC and MulleDK13 while the maps loads. The loading is over and I actually start in the team I selected in the lobby…

Last words
I hope you enjoyed this programmers update and that it gave you an idea on how the game is coming along on the coding front.

Lennard Fonteijn - Project Stealth Programmer


Programmers Update #2

Well, it’s been a while ago, but I think we’ve done enough to tell something again.

We did some household within the programmers department and managed to make a list with “chores”.

At first, we can officially announce we have networked games (AKA Multiplayer games). We have both the Spy and the Mercenary in-game with some animations. We can walk around together (coop walking, yay) and chat with each other and switch teams on-the-fly (testing feature).

Second, we also managed to get the visions to work in-game, exactly as we wanted it, it’s also very FAAAAST, split-second really. Best of all, they also work in Multiplayer games.

Third, we have done some stuff on GE’s to be used in the editor (our version will be called EE, which stands for Environmental Event). We are still not completely sure if the ledge grabbing will be pre-determined (CT-like) or if it will be free-roaming (no limitations, you can grab a ledge anywhere possible).

Fourth, there is also being worked on the first basics of the Story mode.

Last but not least, the gadgets are coming along fine as well (including deployable gadgets).

As you can see, we are making quite some progress. Though, we could use a little help with animating, seriously, WE NEED ANIMATIONS!

Anyway, I hope to see you again with the next update.


Programming Update #1

As promised, here’s the first update on the programming aspects of Project Stealth. Before I start, I would like to mention that this update will be more or less an informative update on the technical side of Project Stealth.

At this very moment, I and other programmers are working on a so-called framework. What is a framework you might wonder? Well, to understand that, let me tell you something about the job of a programmer. As a programmer, we are responsible for everything that happens in-game, the way you can hold W to move forward is done by us. Unreal supports a scripting language called UnrealScript, which gives us literally direct access to the Unreal Engine to do whatever we want. As some of you with PHP/C++/Java knowledge might know, UnrealScript is an OOP-based language (OOP = Object-Orientated-Programming), which means that every piece of functionality (like HUD, movement, game-types) are divided in different files which are all linked together in some way (so, one file wouldn’t work without the other and so on).

As for an Total Conversion (that’s how you call a MOD that completely replaces the game’s original content) we have to start from scratch, which actually means “with nothing”. To still have some kind of structure in our way of programming, we are developing a framework which will make our life easier once we get to the part of implementing PS features. You could see the framework as an collection of those “different divided files” which will eventually get linked to the PS files. The idea of the framework is that it can run a game without actually having any PS functionality in it (a base).

With that explained, I guess we can give you an update on the framework itself as well. For now, we are in the process of getting the framework up-and-running for PS features. We already managed to run it with the minimum amount of code, we can start a menu with it, load any level and spawn in it and just walk around, we even managed to get it to load a custom intro. Some files are still linked to UT3 files, but we will replace that little-by-little with our own files.

Last but not least, we can report some news on the visions. MR.Mic has been working very hard on them and the programming department have been thinking of a way to get them in the game. To get the visions to work, we have to swap some textures when you are playing. Without the swapping, the thermal vision for example won’t show anything hot on your screen. Though, there are some problems making the swapping completely client-side (which means that only you, the one that activates the vision, can see the textures chancing), it will be a big problem if someone would enable his vision and you will see textures change while they shouldn’t. Anyway, the next update will probably go about this issue, since we might have found/receive an answer.

I hope this update was clear and satisfying enough! Up till the next update! For comments or feedback, please sign up and leave them. Eventually, you can also go to the forum and leave your comments there (link).


Information update

I’ve contacted one of the guys on UDN to request a tutorial on basic TC setup, a couple of hours later I received an answer. This is a part of the mail:

“Your request for TC basics is a good one; and one that we are working on putting together as priorities allow. Stay tuned!”

I will…

(excited)


“All Not So Quiet on the Western Front”

I must admit, those guys from Epic are fast!

I send a PM to Mysterial a couple of hours before posting the TC-mod post and I already received an answer.

Mysterial said to me he/she would post a sticky about creating a TC when he/she had time for it.

That’s the kind of community support we like.

Keep it up!

Note: Sorry for the title, I just came out of a History class.


How do you create a TC again?

Well, most of the members from the developers team got their hands on a copy of UT3, so did I.

Unfortunately, it seems UT3 works slightly different than RoboBlitz, more in the way of making a Total Conversion of it. I am eagerly looking for a solution.

Though, I already managed to get UT3 to run some custom content (and I do not mean a mutator) but it isn’t what I want. It seems that for now, we have to edit the main configuration files (the INI’s that can be found somewhere in My Documents) to get UT3 to run what we want. This isn’t the cleanest way to do it unfortunately.

As long as Epic won’t release some proper documentation about command-line arguments and such, I’m afraid you will have to make a second copy of UT3 on your hard-disk (a stripped down version that is). This perhaps raises an discussion: “Would you make a second copy of UT3 on your hard-disk, just so you can play both UT3 and Project Stealth?”

Edit: Perhaps there is some hope… I just found this in the one of the core INI files:
“ScriptPaths=..\%GAME%Game\Script
FRScriptPaths=..\%GAME%Game\ScriptFinalRelease
CutdownPaths=..\%GAME%Game\CutdownPackages
CutdownPaths=..\%GAME%Game\Script
ScreenShotPath=..\%GAME%Game\ScreenShots”

Do you see the %GAME% and Game? Well ut3.exe in this case, makes %GAME% UT, which makes it start up UTGame which can be found in the My Documents folder and in the Main installation folder.