=========================================================== By Jeh & LadyICE Published August 4th, 2003 http://planethalflife.gamespy.com/Viewb375.html?view=Articles.Detail&id=20 =========================================================== This log was taken from the irc.pcgnetworks.com #halflife2news IRC chat that took place August 4th, 2003. Thanks to Ray for the editing. KEY: Gabe Newell, - Valve's founder and big cheese. Chris Bokitch, - autolycus from VERC. Yahn Bernier, - Software Development Engineer Gary McTaggart, - Software Developer, Engine Programming Ken Birdwell, - Senior Software Development Engineer David Speyrer, - Software Developer Hello everybody. Hello! HI all Hi hi! :D howdy! Hi from Ireland :) To start things off we have some existing questions. Map editing for the Source engine will be very familiar to those who did mapping for Half-Life. We've always tried to extend rather than reinvent whenever possible. The main challenge will be digesting all the new tools and capabilities to get the most out of them. Hi, TechSeekers. Hi Gaben Do any Enemy AI bots share Bonds with each other? ex (When Friend is Killed get more Agressive) Will Enemy vehicles be able to be modded and if so what type of AI will be used for the flying ones? What other things does AI affect in the Source Engine? go ahead kred Vehicles are mod'able. The rough structure of the map is still BSP-based, built from brushes, but the details are fleshed out with more props that are built in XSI, Maya, or Max. On budgets: Our budgets are time based. We've set target machine specs and target framerates, and we give the level designers framerate targets. All of the vehicle code is in the game and client .dlls and there's a seperate set of script files which modmakers can create and tweak. We allow for NPCs/AIs to drive the vehicles. AIs are aware when squad members die. Another question? yes World bounds are +/- 16384 in all directions Will the AI have its own User Interface? Mods can choose their own units for the world. Can you clarify that question on AI UI? who me?? yes Yes kreedskulls lol We have two different simulation models for vehicles. So you can tradeoff simulation accuracy for performance if you want large numbers of vehicles. what do you mean by clarify??? like will the AI have a set inviornment? only for AI and nothing else XSI Mandatory? No, but Valve uses XSI internally for almost all modeling. There is no custom AI User Interface of the type that you are referring to. Multiple people can be in vehicles. So you can make a multiplayer mod with groups riding in a single vehicle. Each player can have custom control available for things like vehicle movement and onboard weapons. "How much control do modders have over rendering?" You have access to the material system from the client dll. You can render anything that is rendered anywhere else in the game. You also will be able to write your own shaders that are accessed by the materal system. Without making new shaders, the existing shaders can be tweaked with scriping in vmt (material) files. People have asked about entity system changes... Entity I/O is the way entites are connected in the Source engine. It's essentially an interobject messaging system. When certain internal events occur, an entity can fire outputs, which can be connected to inputs of other entities. "Can I put normal maps on everything?" In dx8, you can put specular normal maps on all models, and you can put diffuse and specular normal maps on world geometry (including displacement maps). In dx9, you can additionally put diffuse normal maps on models. You also have full control over the rendering loop and could even insert your own rendering primitives ( as long as you ultimately end up rendering triangles... ) The output can potentially pass data to the receiving input, for example a wheel can pass its Position as a value from 0 - 1 to the Alpha input of a sprite, so as you turn the wheel the sprite gets brighter. You can create wheeled vehicles, or flying & hovering vehicles. Next question? Will Physics become more important for the AI programmer in the Source Engine? A given entity can have many different outputs, for example doors can fire an output when they are Opened, Closed, BlockedOpening, BlockedClosing, etc. which can be connected to any other entities in your map. This can all be hooked up by the level designer in Hammer, so you have a lot more power for building things. For artists, we currently have exporters for XSI, 3dsmax and Maya A lot of people have asked about the networking system and how flexible it is. Here's some of the new stuff: The AI has lots of interactions with physics. You can control the AI collisions and collision response, navigation around/with physics objects, and specific behaviors involving physics (exerting forces on objects, etc). First, you have total control over what entity data is transmitted for a particular entity. In other words, no more set "entity_t" where you had to wedge in fields and override fields "How would I do cel shading with Source?" You would write your own vertex/pixel shader combination for a new custom shader and then use that shader in your materials that you want to be cel shaded. Second, you can write custom data proxy code to massage data values into more network values on the fly ok...next up is Volt...from nVnews.net Hello Guys, my name is Rafal Zak (volt) and I'm representing NVnews.net in todays Round Table Discussion. We appreciate the effort and the time you guys took out of your busy schedules to chat here with us. Since we don't have a lot of time on hand I will try to make it as quick as possible. Thanks. Third, you have all of the low level prediction code exposed to you in the client .dll and you have all of the server-side lag compensation code exposed to you in the game .dll I will let the guys finish... Some of HL2's NPCs use physics as their basis of movement and interaction with the world. Fourth, there are a bunch of useful new diagnostic modes to show you when things mis-predict and help you track down inconsistencies between the client and server versions of things We'll ship all of the HL2 AI code to mod authors as a reference for creating their own AIs with physics behavior. "Are shaders based on PS1.0 or PS2.0? What about old hardware that doesn't have pixel shaders?" Shaders are ps1.1, ps1.4, or ps2.0 depending on what hardware you are running on. You can also code up fixed-function shaders for older hardware if you wish. One of the cool things we've added to the multiplayer engine is the ability to predict the creation of additional entities, such as projectiles... so you can do a predicted rocket, have it simulate on the client and even do a non-lagged rocket jump in your mod if you wanted to. First question: "On Nvidia's nZone site, they recently implied that Half Life 2 is "The Way It's Meant to be Played" game, by putting their TWIMTBP logo on the same info page that the game is on. Is Half Life 2 being developed in conjunction with Nvidia's TWIMTBP program, and if so, what technical benefits or problems for the engine have Valve developers run into as a result of this program?" As for key new features in Hammer -- please ask for clarification on any of these -- entity I/O, displacement surfaces, hierarchical visgroups, HL1 -> HL2 conversion path, per-face luxel density with preview, smoothing groups for brushes, graphical/editing helpers: radius, lightcone, line, text based, extensible VMF file (no more RMF versioning!) Also, entities that go out of the PVS on the client are no longer destroyed and recreated upon re-entry to the PVS. The entities live continously on the client. In fact, you can create additional purely client side entities and have them simulate completely locally, too. If you're familiar with the HL1 SDK code, there's now a C_BaseEntity on the client which matches the CBaseEntity on the server in almost all ways. Compile tools: we've created distributed vis and distributed vrad to greatly cut compile times. On the performance of the networking code, it's as compressible and much more flexible than the HL1 code. Second question: "It was recently stated by Gary McTaggart that Nvidia cards would be able to perform AA properly on Half Life 2 at the expense of pixel shader bandwidth by using pixel shaders to clamp texture coordinates. If you could estimate, how much of percentage hit would the end user see if this method was employed, assuming Half Life 2's engine was fully optimized for Nvidia's shaders?" Displacement editing: at a simple level it's painting tools similar to Maya's Artisan. "What's the strategy for scalability?" All models are LOD's discretely. You can make lower-end versions of the models as necessary. Displacement maps are simpler on the lowend. You can also tag entities as only showing up on specific dx-levels in the maps. On the lowend, you get less lightmap resolution. As for shaders, shaders typically fallback from complex normal-mapped, specular shaders to single pass simple shaders on the lowend. "What about FSAA?" Anti-aliased has been fixed on all cards. "Do you use HLSL or Cg for your dx9 shaders?" HLSL. You create a brush, and can tesselate any four-sided face or faces to up to 17x17 verts. Third Question: "Many engines, e.g. Q3 engine, are supposed to have the same problem with MSAA as HL2, but the artifacts in antialiasing are almost non-visible. How bad would the visual artifacts in HL2 be if MSAA would be forced on, compared to other games?" A bunch of people have emailed me the following question: How would I use Source to create a BF1942-like game? Okay, here goes: Alot of people have asked about fluid simulation in Source. We simulate objects moving through fluids with surface fluid pressue and buoyancy. We don't simulate the fluid itself, but floating works automatically based on the density & volume of the objects and the fluid (all masses & densities of objects & fluids are scriptable). Anti-aliasing has been fixed for all cards. First, BF1942 has pretty large maps, so you'd probably want to scale your units down to allow for a multiple mile x mile playing field Second, Source has pretty flexible vehicle code which allows for players to drive and ride in vehicle and to separately control guns attached to (themselves or) the vehicles Then you use a variety of tools to perturb the verts in three dimensions (it's not just a heightfield). You can build caves, domes, curves, and Hammer will automatically stitch the edges together. Third, as for infantry combat, we have a really robust systems for prediction, collision detection, weapons logic (hitscan and projectile and physics based -- all predicted) Hi All from Valve, thanks for being here, here is my first question.. Scripting vs Inteligence "What would you say is going to be the limiting factor regarding performance on a high-end (read current DirectX 9 compliant) system - Is it more likely to be CPU, GPU or PS/VS performance limited?" After watching the docks video, is that the AI for the headcrab zombie that makes in throw the object at you or is it a scripted action. eg. does the enemy AI have some intelligence like firing at explosive barrels when your near them or throwing objects at you? Fourth, we have a bunch of UI functionality to do zoomable minimap overlays, etc etc. all based on VGUI2 More entity stuff: Hierarchy is a way of attaching entities to each other so that they move together despite being of different entity types. For example, you can have a func_rotating in hierarchy with a func_tracktrain to give the train a rotating part, or you can parent a breakable window pane to the train. next? The zombie is aware of objects in the environment. His AI realizes when he can throw an object at you and applies the appropriate physics forces to make it happen. The zombies are not scripted to throw specific barrels; it's all tactical. Fifth, we have some additions to our outdoor rendering, including a realtime occlusion system for dealing with issues unique to outdoor environments. We still maintain a BSP-tree based system for dealing with more traditional indoor environments. So, you can now do extremely large outdoor environments which seemlessly transition indoors. I'm excited to see the mods go nuts on this stuff. excellent, Will there be a benchmarking routine in HL2? and Technology-wise, what is your favourite( or most proud of) new addition to the sequel? Porting HL1 art content to HL2 is almost identical to creating hl1 content. We will release all of our in-house tools for 3dsmax, XSI and maya with the SDK. Discussion takes place at 3pm PST in #halflife2news on the irc.pcgnetworks.com server. ack sorry The blades cutting zombies in half is physics and AI as well. They've been modelled so they can be cut in half, but other than that they walk into the blades and the physics causes damage and they get split in half. "Will there be a benchmarking routine in HL2?" Yes. There is a detailed benchmark released before the game ships where you can run a particular card through any of the DirectX levels where appropriate. Sound system: Sounds are all driven by a script file, and sounds are played by label, not by WAV filename, so once you add the hooks into the game code to play the sound, exactly which WAV gets played, over what channel, and with what probability is all controlled by the script. This is great because the sound guy can iterate on sounds without the help of a programmer. We also doppler-shifted bullet sounds, which is just cool! I've also gotten a bunch of questions about movie-making tools in the engine. Right now we support a demo file format which has the flexibility to be post-processed (at least for the camera control) "What online resources will be available for Half-Life 2 modding?" - this is a question I get a lot. We'll be continuing the same support as with Half-Life 1. The Valve ERC has expanded to support Half-Life 2 content, developed both by Valve and the community. The model compiling tools are backwards compatable, all your existing contant should just build. There's few minor changes, things like the "texture" keyword changed to "material", plus and a whole bunch of new commands, but it's pretty much just all backwards compatable. "Do collisions with LOD terrains cause problems in multiplayer?" No, the collision representation is consistent across client and server regardless of client-side LOD. On demos: we have a nice UI for skipping ahead, doing fast forward, slomo, pause/resume, etc during playback. This has been pretty useful for us for cutting the e3 movies, e.g. "What percentage of pixel and vertex shaders used in HL2 are DX9? How much of it is DX8 or 8.1? Put another way, what difference will I see on screen between DX8, 8.1, and 9.0 systems?" Someone asked a question about extending the behavior of triggers: Filters are a way of extending the rules for things like when triggers fire or what can damage breakable objects. For example, I can add a classname filter to a trigger_once and make it only fire when touched by npc_headcrab. I can also make a breakable object only break when damaged by a grenade. We also have a separate demo metafile editor built into the engine which works on .vdm files (Valve demo metafiles). The metafiles allow queuing up events to occur at certain frames of the demo during playback: screen fade in / out, titling, sound fading, changing playback speed, issuing arbitrary commands, etc. shall we move on? "How do 3d skyboxes work? Can I animate a skybox?" The 3d skybox is a part of the level at a different scale that the rest of the level. You can place entities in the 3d skybox (like flying objects, etc). There is a "normal" skybox on the outside of the 3d skybox as well. We also have animated cloud layers, and I could see a mod going nuts with this. That would be great! Finally, we have another built in tool called the "Demo Smoother". This tool allows for completely re-authoring the camera track of a demo as a post-process. The tool allows for placement of a spline for the camera and then computes the correct camera position and orientation based on the spline positions and quaternions. What are overlays and how do you use them? Overlays are a natural extension of decals. They aren't projected but live within the surface, You can vertex manipulate the corner verts, so they are totally orientable. Texturing is 1:1 and wrappable as opposed to projected. Next question please? "What is the scalabilty of the engine (ie min specs to play @ decent level of IQ/LoD) and what resolutions can we expect to play the game off the bat with some of today's high end systems i.e. with 9800pro/5900ultra's?" Another thing which I think will allow for believable movie performances by actors is the tools we've created for authoring facial animations. Given that AI NPCs are available in the multiplayer environment, how many AI creatures would a "standard" server be able to handle before the AI calculations become too burdensome? "How can we use Steam to deliver card-specific resources?" We can deliver special versions of content to users with particular hardware based on the hardware that they have in their machines. Using this, you could conceivably make a mod that really pushes the limit of hardware and requires specific hardware to run. With the flexibility that you'll have with rendering, I could see mod makers go nuts with this. We have a really neat tool called the "Half-Life Face Poser" which allows you to control all of the facial muscles on our humanoids' (could be faces on Alien legs in a mod though...) faces. In particular, you can store set poses as facial expressions or you can animate the face muscles in timing curves. These primitives can be placed together on a timeline to have your actors act out a scene Secondly, Gabe mentioned two different simluation models for vehicles. Could you elaborate just a little more on the tradeoffs between the two? Specifically, how many vehicles would you have before you'd want to engage "performance mode" versus "accuracy mode"? The faceposer allows for queuing up of the sounds the AIs might say and includes ways to extract the phonemes/visemes from the wav files and to tweak them until they are just right. In addition, actors in scenes have other controls which can be specified in the face poser, such as "look at this other actor", "move to this spot", etc. "How can I connect game logic to a shader?" There is new functionality in the client dll now called "Material Proxies". What this means is that you can hook entity-specific code to particular materials. For instance, if you want an entity to get more translucent based on it's velocity, this is now trivial. You can also pick different materials to put on the entity based on game state. KnyteHawwk: a simple tradeoff would be a raycasted wheeled vehicle versus a "real wheel" physically simulated vehicle. Raycasts are about 1/3 to 1/5 the cost CPU-wise of the simulated wheels. The compromises are that raycast wheels don't apply force to physics objects beneath them. So driving over a teeter-totter wouldn't make it tip in the raycast case. And lastly, how much support do modmakers have to implement certain kinds of vision features for their mods? Examples: the top-down commander view from Natural Selection, X-ray vision allowing you to see through multiple walls, thermal imaging, etc. RE: Server perf requirements, how different is it from HL1? This is a hard question to answer accurately since we aren't done optimizing. I think the Source server is comparable. We still simulate user input from clients in a similar fashion and we still have to network data to the client as we did before. We've done some spot-optimizating to detect changed, fields, etc. etc. I think most of the machines running servers today will continue to "On vision effects (KnyteHawkk)" You can use Mateiral Proxies to decide how an object is going to be rendered. If you want to make the object visible through walls, Material Proxies are the place to do this. Will mods be able to set maxplayers < 32? Our plan is to allow a mod to go above this on a per-mod basis. No promises yet on that :) Next question please. The tradeoffs between the two models are the accuracy of the simulation at the wheels. You can trade less accurate wheel collisions/response for less CPU time. You can do several vehicles with the full simulation on our target machines, but you can always use the CPU for something else if the wheel simulation isn't as important to your mod. valve|gary - follow up to that - can you specify proxies for the different vision systems then to make certain things show and not show? KnyteHawkk - Yes, you could. Thank you very much for your time :) KnyteHawkk - client and server can both filter what is sent/drawn based on mod code. Grennie? Sure, any more questions? Hi, my name is Philipp Steyer aka "Grennie" from www.city17.de / German News Network. My Question: What about the German HLČ Version ? Will there be Robots an green blood like in Half-Life 1 ? What else will be changed for the german Version ? Thanks for your time :) Back to changes to the map production process: we have found that a large part of the cost of creating a Half-Life 2 quality level is in the art production process. Building all the props and textures required for the level of visual quality people saw at E3 consumes a lot of man-hours. As for building a Half-Life 1 quality map in the Source engine, the new tools and entity I/O makes it go much faster than it did on HL1. On German version, we'll be working closely with the German censor board to make sure we can be distributed throughout Germany. Ok, thanks alot :) hi all slinger What sort of sound engine does HL2 have. Is it a 5.1 system, and what technologies does it support. EAX etc. How to do voice filters? This is something we'll probably stick in before shipping. In essence, we plan on exposing the sound buffers to the client .dll per channel so that you can modulate the way a particular sound channel is processed. This is pending final performance analysis, of course. cool ;) We have heard many times that the source engine is made easier for MOD developers. What things are made easier? "How do you author bump maps." We use normal maps in particular. We make these three different ways: 1) Build geometry in XSI, Max, or Maya roughly in a plane and render the normal map directly for world textures. We'll have instructions on how to do this in the SDK. 2) Build a hi-poly mode in XSI and use their plugins (or similar plugins for other packages) to create normal maps. 3) Paint height maps and convert them to normal maps. Can bump mapping be applied to 1st person weapon models, and what sort of materials are there that can be used other than the ones shown on the E3 demo? "re: bump maps on weapon models" You can use bump maps on weapon models. There are a number of shaders that these materials can use, including custom ones that you make yourself. . . the nubmer of those are infinite. great, :) HL2 supports 5.1, 4.1, and 2 speaker systems. HL2 supports wave files with 8/16bit, mono/stereo, optional ADPCM compression, and arbitrary sampling rates up to 44.1KHz, and MP3 files as well. We support our own DSP in software. We're working with creative on supporting EAX for that as well. "What sort of occlusion support do you have?" We have a PVS system. We also have a dynamic occlusion system that we use heavily in outdoor maps. Slinger: Steam for mod distribution, entity help integrated with Hammer, distributed compile tools, open map file format for extensibility, script-driven sound system.... lots of things make Source better for modmaking. "What's the largest possible texture." 2048x2048. If there is a need for larger textures, we can up this limit. slinger : plus functions for directionality and environmental falloff (atmospheric dB attenuation, etc.). Everything's modeling at real dB levels and all blended together. There's also a whole set of tools for adding dramatic sound scapes and multiple layers of audio - background, action, talking, etc. - that gets blended together cinematically Another mod which people seem to want to make is a GTA3 like mod. Here's what you would need to do: sounds awesome, thanx guys, BTW im from Crisis 51 MOD team if you wanna give us any money :) Thank you for your time. Entropy mod slinger : there's also very fancy stuff like Bullet sounds are modeled and spatialized as a continuous sub-sonic 120db sound sources moving through space. What role will Steam play in the MOD community? Will future MODs be downloadable through the Steam system? Re: GTA3: Again, you would use the vehicle system and AI driver model which we already have. You'd probably downscale the world units to allow for the larger city sizes. The mission structure is very doable including custom UI for setting up the missions. "Can you attach a camera to a vehicle?" Yes. Cameras support hierarchy, so they can be attached to any object. A system of object maintenance was designed, and called as the "Warehouse". Will Valve offer a free service for object uploading/ downloading, to maintain "Warehouses"?" slinger : you'll really want a multi-channel sound system, a simple two-speaker setup loses a lot of the coolness. We've been told that the Source engine does not support dynamic model mesh LOD. If this is the case, is there a particular number of static meshes with varying polycounts required or are we able to say, choose 8 levels of detail or even 1 if we didn't want any LOD to occur? Just an example "What's the most complex shader that you've written." As far as rendering complexity, probably the fully generic diffuse and specular bump mapped shader that we use on models. Some other complex ones are the refraction effects (like the Gordon stained glass in the E3 demo) and a camoflaged model shader. "What was the polycount on the driveable buggy?" Currently it's a bit heavy at around 12000 triangles. It's going to get a reduced before the game is done. How different is the console in Source? The console is now a separate VGUI window. We still support "aliasing". One of the cooler features we've added is the ability to do full command completion. We do this with the map command, e.g., where as you type, we scan the Hard Disk looking for available maps. This saves a fair bit of typing :) Prozac, if you're refering to maintaining a collection props, all of the HL2 props will be usable by the community. I will probably setup sometype of storage site for quality community created props as well. (by props, i'm referring to models) What role will Steam play in the mod community? First, it's a great development tool for running betas, rolling changes, getting instant feedback, etc. Second, it will improve the distribution problem -- your mod will be played by more people. Finally, it will introduce a more direct path to consumers for those who want to take their mod into the commercial space. We've also collapsed the notion of cvars and commands into a root console primitive, the "ConCommand". Cvars and commands are defined in a single line, so there's no more registration system as well. The whole console autocomplete logic is mod-extensible. Entro|Prozac: LOD's are defined by a set number of static mesh LOD's set in the qc based on distance. So yes if you desired 8 levels you could do so. Primarily we shoot for 3 or 4. "What's the replacement for r_speeds?" There is a new system for budgetting that shows where time is being spent in the code at a high level. We are setting framerate targets for different levels of harware capability. The display of the budgetting info is in the format of a graphics equalizer-like view of where time is being spent. This gives you a good view of where you are getting spikes, and the average perf. "Is there going to be a version of XSI distributed with the HL2 sdk?" Yes. We are working very closely with SoftImage to make the integration as tight as possible. This includes distribution of a free version of XSI. More details on that will be released over the coming weeks. "How do I convert my Half-Life mod to Half-Life 2?" Models, animations, and textures just need to be compiled with the new tools. The maps can be loaded into Hammer and saved in the new format (VMF). The code should be pretty familiar to Half-Life mod authors, but there is some porting of the code as some specific engine features are implemented differently usually - much more generally. hi What are the capabilities of VGUI2? First, vgui2 is much more robust and feature complete than the original vgui in HL1. We've added systems to allow script files to dynamically animate the positions and other variables in VGUI2 panels. Mods will also have source code to all of the default controls. i'll wait Were the I-beams and dumpster in the trap town demo scripted or physics + AI? They were all AI, we just hinted for the soldiers to stand in opportune spots so they could get smashed by the heavy physics objects. :) how will the weapon sysytem be set up regarding viewable models in1st and 3rd person view. Will the same mesh be used for both or will it use a system similar to HL1 with the _w _p system? You can also draw 3d things into vgui panels so you can put a rotating model inside your menu. Also, you can have a vgui panel in your 3d world which you can manipulate so you can have an object in the world containing your menus, etc. Weapons have two models - the in-view model and the world model (seen in 3rd person). Can you release a plugin for max/maya/softimage that has a "Half-Life 2 shader" that we can use that has the types of maps, etc that we cna use? or will we have to wait and make our own? You can set a separate FOV to render the in-view model if you'd like. Our artists find it easier to get the weapons to look the way they want with this feature. Thanks for the questions everyone. We've got to get back to HL2! Thanks! Okay, this was fun, thanks for asking all of the questions. TTYL. Thanks guys. Gotta go bye. Thanks alot for your time, guys. thanks Thanks I hope this was useful.