E.Y.E: Divine Cybermancy

E.Y.E: Divine Cybermancy

52 ratings
E.Y.E: Divine Cybermancy - Basic Hammer Setup Guide! (UPDATED 2024)
By Boxyt and 3 collaborators
A (relatively) simple guide on how to set up and use the Hammer editor for E.Y.E
2
2
   
Award
Favorite
Favorited
Unfavorite
Introduction...

So you've decided to start your adventure with mapping for E.Y.E: Divine Cybermancy. I get it, we all make mistakes in our lives at some point. Before we start, allow me to inform you that mapping for E.Y.E has its quirks and as it's basically a mod for Half-Life 2 gone too far- it may or may not have SOME glitches and bugs present. Our E.Y.E .fgd file also does not contain ALL custom entities used by StreumOn (especially for Battle Royale and Team Artifact, although Raeg recently uploaded an updated .fgd, see Part 7).

The Hammer Editor is a troublesome beast to tame; if you have had experience with it already you know the pain of it just refusing to work correctly, the constant unexplained crashes, and the file corrupting bugs. Well... here it is no better. It's all that with added new, potentially even jankier entities on top of what was already there.
Also, we do not work on the newest, more polished version of Source that was released in 2013, here it's back to 2007 lads. DISREGARD THAT WE HAVE IT WORKING WITH HAMMER++ NOW For more details go to the Part 0 which now invalidates the rest of the setup parts 1-2. Rest so Part 3 onwards is still relevant

I hope that all of that won't discourage you from making maps for E.Y.E though; even if there are moments when it seems like all logical possibilities have been exhausted and there's no way out, there's always an unexpected Interlopers post or a Valve Developer Community page which can provide answers and (hopefully) solutions.

If you're interested in pre-existing custom maps for E.Y.E, you can visit the E.Y.E Gamebanana[gamebanana.com] page, or look for the MEGA link to all known maps on steam forums
Part 0: The proper, new setup by ShadesBot/MrCalvin



Guide shamelessly copied from the original site: https://eye.mrcalvin.io/ with the permission from the site's creator. I'd recommend visiting it and using it as it may be far more readable that way! All images and text in this section was taken directly from that site. Big thanks to MrCalvin for figuring this stuff out! There is more info and tips on the site, so make sure to check it out there!

1. First, download a copy of Hammer++ for Source SDK 2013 Singleplayer (be sure to use this copy only, as other versions of Hammer++ will not work with EYE)
Link: https://ficool2.github.io/HammerPlusPlus-Website/download.html

Next, open Steam and install the Source SDK Base 2013 Singleplayer package.

2. Once the SDK is installed, we can proceed to setting up Hammer++. Navigate to your steamapps\common\Source SDK Base 2013 Singleplayer\bin\ directory, and copy your Hammer++ executable and hammerplusplus\ directory into it. Launch Hammer++, and when prompted to select a game configuration, choose "SourceTest." When the editor boots, navigate to Tools -> Options, select the Game Configurations tab, hit "Edit" at the top, and then choose "Add." You can name this whatever you like, for the purposes of this guide my game configuration is named "EYE". Now set the following options:

  • Game Data files: steamapps\common\EYE\modding\eye.fgd
  • Default PointEntity class: info_player_solo1
  • Default SolidEntity class: func_detail
  • Game Executable Directory (ex: c:\Half-Life): steamapps\common\Source SDK Base 2013 Singleplayer\
  • Game Directory (where GameInfo.txt is, ex: c:\Half-Life\cstrike): steamapps\common\Source SDK Base 2013 Singleplayer\sourcetest

Your Hammer VMF and Prefab directories can be set to anything you prefer.


3. Next, click the "Build Programs" tab at the top, and set the following options:

Ensure your Configuration dropdown at the top of the Build Tools tab is correctly set to the new game configuration you created previously (when switching tabs after creating a new game configuration this will typically be set to the config you chose when loading Hammer, e.g., "SourceTest")

  • Game executable: steamapps\common\EYE\EYE.exe
  • BSP executable: steamapps\common\Source SDK Base 2013 Singleplayer\bin\vbsp.exe
  • VIS exectuable: steamapps\common\Source SDK Base 2013 Singleplayer\bin\vvis.exe
  • RAD executable: steamapps\common\Source SDK Base 2013 Singleplayer\bin\vrad.exe
  • Place compiled maps in this directory before running the game: steamapps\common\EYE\EYE\maps
  • MDL executable: steamapps\common\Source SDK Base 2013 Singleplayer\bin\studiomdl.exe



4. With your Game Configuration finished, click OK, then close Hammer++. Before we reopen it, navigate to your EYE game directory, and copy your materials and models directories into steamapps\common\Source SDK Base 2013 Singleplayer\sourcetest


You can also copy your particles/ and sound/ directory from EYE to sourcetest if you want to make use of their respective browsers within Hammer++

Now, launch Hammer++, choose your new game configuration, create a simple map, compile, and test! For the most part, all major functionality for Hammer++ works, although there are a few caveats (see below). As this setup is a WIP, I expect these issues to be ironed out with further testing:

1. You must select "Don't run game after compiling" (EYE will crash when trying to load the map)

2. If you're having an issue with your 3D skybox preview appearing in Hammer++, you will need an updated FGD. You can grab this here[eye.mrcalvin.io]. This FGD is based on updated EYE FGD found here[gamebanana.com], and adds the func_instance and func_instance_params classes, which are required for 3D skybox previews to function in Hammer++. If you're unfamiliar with Hammer++ and are having issues regarding 3D skybox previews, here are a few common solutions:
  1. All of your 3D skybox items must be instanced. To do this, select all the items for your 3D skybox, and from the top-menu select Tools -> Create Instance from Selection. A new dialog box will open, asking you to name your instance (the naming scheme is your preference, but I recommend naming this file something descriptive, e.g., cm_cu_levelname_skybox). Once you
    click OK, your 3D skybox items will be saved to a new instance, and you will notice all of your
    skybox items are now a func_instance entity.
  2. If you cannot see your 3D skybox preview, ensure Show tool textures is disabled
  3. If you need to readjust or position your 3D skybox after it has been instanced, you have two options:
    • Select your 3D skybox func_instance, and from the top-menu select Instancing -> Collapse -> Selection. This will allow you to individually add / select / delete items once again, and when you're ready you can turn it back into an instance.
    • Alternatively, open the instance file you saved your 3D skybox in, move the items, and save. Having your instance and map opened side-by-side will help you see the changes live after saving your instance.

  4. All instances must be collapsed before compiling your map. For instances to be loaded at runtime, the Source Engine game / mod you are compiling for requires that the func_instance entity exists within the compiled game code. Since EYE does not have this entity, you will receive an error message in your console, "Attempted to create unknown entity type func_instance! 1", and your 3D skybox will not work.

excerpt from MrCalvin's Guide https://eye.mrcalvin.io, more info there!
Part 1: Downloads (OUTDATED GO TO PART 0)
Go to your Steam library, go to the upper left corner and select the "Games" button. When the dropdown menu will appear, select "Tools." In the tools tab install:
  • Source SDK
  • Source SDK Base 2007
Part 2: Setup (OUTDATED GO TO PART 0)


Fire up Source SDK. When its launcher appears, go to the "Engine Version" box near the bottom and select "Source Engine 2007."


Under the Utilities section, click on "Create a Mod."


Out of the four options present, select "Start a Multiplayer mod from a template (advanced users)."


On this screen, you can choose the directory for the "mod."


Leave all of the options alone on this screen, just click Next >



Go to your E.Y.E directory. The default path should look something like this:
<steam directory>/steamapps/common/EYE/EYE
From there, copy the models, materials and sounds folders to <Steam directory>/steamapps/sourcemods/<your mod name> folder that was made automatically for you.

Now it's time to fire up the Hammer editor and configure it. Go to the SDK Launcher and double click Hammer in the Applications section.

When Hammer opens, go to Tools ► Options...
In Game Data files delete all .fgd files. Click Add and go to EYE\modding\eye.fgd
Change Game Executable Directory to $SteamUserDir\eye
Change Game Directory to $SteamDir\steamapps\SourceMods\<your mod name>



Go to the Build Programs tab. Change the Game executable to $SteamUserDir\EYE\EYE.exe
Change Place compiled maps in this directory(...) to $SteamUserDir\EYE\EYE\maps



Close the Hammer Editor and fire it up again, it should be configured and ready to go.
Go to File ► New. Hammer should have a grid in at least 3 windows and a 3D view like this:


If you can't see the grid, it can mean few things: either you've made some error during the setup (most likely related to changing paths in Hammer's settings) or you've encountered one of those magical, trademarked Hammer Moments. These can be a result of things like:

  • Installing hammer on C:\
  • Using Windows 10 (works on my machine)
  • Using Windows 7 x64 (doesn't work on VODKA's machine, does work on Raeg's)
  • Hammer may just hate you.

Known fixes include switching the drive which Hammer is installed on, switching to Windows 7, or using SourceMultiTools (which can provide its own set of problems).
Part 3: Getting Started

Now that you have Hammer up and running, it's time to learn the basics.
As writing something that has been written hundreds of times over would be quite counterproductive, here are some links to useful starter tutorials which can get you started with making basic maps.

Here is a great video by the one and only 3kliksphilip explaining the very basics of using Hammer.

The whole playlist with his Hammer videos is a great starting point for complete newbies in the Hammer world.





Another great source for the Hammer related videos/tutorials is TopHATTwaffle's channel.

His tutorials are much longer and a little less digestible, but they contain far more information about the presented topics.






One of the most useful links I can provide is the Valve Developer Community/Wiki which contains descriptions of pretty much every hammer entity available, alongside examples of their usage and known bugs and errors which will can occur while using them. EXTREMELY useful.


Note: Remember that E.Y.E doesn't have the default textures of Half-Life 2, so when browsing textures in Hammer, type eyemat in the Keywords field.

Note 2: Also, some of the entities discussed in TopHATTwaffle's videos are absent in E.Y.E's .fgd file as it uses an older version of Source. This includes things like working mirrors or basic vehicle entities (excluding tank_track etc.).

Note 3: It is quite important to remember that when you press F9 and bring up the "Run Map" window, DESELECT $game_exe in the "Compile/run commands" section. Your map will run if it's selected, but for some reason E.Y.E doesn't like that, and the map may run incorrectly (alternatively, your save/character may be screwed when the map loads).
Part 4: E.Y.E-Specific Entities
E.Y.E possesses a list of unique entities made by StreumOn. Most of them can be found in FGD_guidelines.pdf in your EYE/modding folder, alongside basic instructions on how to set up Hammer.

The most important ones that you should pay attention to are:

  • info_objective - Main entity used to display objectives both as markers on the screen, as well as text in the objective tab.

  • prop_vgui_equipment - This entity works as an armoury. You can set up any model as one, it doesn't have to be the armoury model typically used in EYE (or the box that is used as an armoury in some looter-heavy maps).

  • EYE_relationship - Controls and modifies the general interactions between factions on the map. That can be also partially done on per-npc base through their entity options.

  • EYE_shopping - You can control what is being sold and more importantly the prices wink wink. Afaik has to be attached to a "shop owner" NPC. You can set up any NPC as one.

  • EYE_mortar_field - brush entity used to bomb an area with mortar explosions (similar to the ones on mars and marsarena BR map). Can be set up as random or triggered. Only explosions that can damage the player in any meaningful way as "normal" env_explosion does almost no damage for some reason.

  • game_weapon_manager - Controls the number of ammo pickups which can be present at once in the map. This is extremely important if your level has working spawners with humanoid enemies, as the game can start lagging and eventually crash if there are too many physics objects (namely ammo boxes) present.

  • EYE_point_hack - An entity which appears in the hacking menu and can be hacked to trigger an output. Criminally underused, I am guilty of it too.

  • dial_npc - An entity that is linked to an NPC which can start a dialogue with player. Contrary to what the guidelines pdf says, you CAN write dialogue text into the dial_npc entity itself. It has to be short though, if not it will display an error in the console and will not work properly.
    It is also important to add material to each dialogue message, as missing material can and will cause the whole entity to not work at all. Also remember to make the NPC in question friendly/neutral towards the player. If not, you won't be able to start the dialogue.
    You should not add symbols like " and - to the messages as they can cause whole .vtf file to corrupt due to some random ♥♥♥♥♥♥♥♥ an unexpected " symbol in line 285837 -type of error. The same goes for entity names in general.
    Also, if you select the type of dialogue/message to be "Fire entity," you MUST add the same interaction in the I/O, that is, add it in the dial_npc's output tab!

    BUG: The dial_npc entity can crash Hammer upon being created. The easiest fix is to open up example maps in your EYE/modding/samples folder, and copy a dial_npc from there.

  • npc_randomise_maker - The main entity responsible for spawning "waves" of enemies in game. Take note that it requires a pre-defined path_track for the spawned NPCs to work properly.
    Also worth noting, after adding this entity, setting up path_tracks and info_node's it is really important to type "ai_norebuildgraph 0" into the console so the game will rebuild movement graphs for the AI so they include the newly added entities, tracks and nodes.

    NOTE: Some older maps like Farming Alpha 23 and Sermomancies use different methods of spawning NPCs. Farming Alpha 23 uses npc_maker, which is technically not a supported entity but it still works. Sermomancy uses npc_template_maker.

  • info_player_solo1 - Not REALLY an exclusive to E.Y.E, but it is mainly used as a spawn point for players in coop missions. You don't have to use info_player_solo2, info_player_solo3... etc. for the rest of the spawns. You can use multiple info_player_solo1's so players won't spawn on or inside each other when they load into the game.
Part 5: Hammer Sins, or what NOT to do...

The Hammer Editor is quite a unique application, in a sense that it possesses tools that can ensure its self destruction. In this section I'd like to address some of these well-known traps.

------------------------------------------------------------------------------------------
Carve tool

One of the beginner's traps and more controversial tools available to the mapper. At its most basic functionality it is a really useful tool that can speed up certain actions. However, it can prove itself to be really problematic in the long run, as its carving can lead to really unoptimized levels which take a very long time to compile.




Great example of how it can go boom
A whole article on Valve Dev Wiki dedicated to better ways of reshaping solids- in short, use anything but carving

------------------------------------------------------------------------------------------
Making objects from level geometry / Sculpting with the level geometry

A cardinal sin, you're going to the naughty corner for that one. Hammer's visibility compiler vvis.exe can get very busy with really complex shapes that it counts as level geometry. Additionally, such complex shapes can have an immense impact on the game's performance. If you HAVE to carve objects like this, use Propper to turn them into props, which will be far more digestible for the engine.

[VODKA]: And if you gonna do this sculpting with brushes, make them later as 1 brush entity (like func_detail or func_brush), they will not break optimisation so hard. And if you will make to tiny brushes, hammer will not like that, be ready to encounter some troubles.
------------------------------------------------------------------------------------------
Somehow making shapes with faces smaller than 1 hammer unit (hu)

Hammer really doesn't like it when you go and carve such small details. Generally never do this if possible.

------------------------------------------------------------------------------------------
Leaving entities in the "void"

Even if those entities work correctly initially, they are a ticking bomb. Hammer doesn't like if anything but level geometry touches the outside of the level. Props, logic entities and LIGHTS need to be placed inside of the level. Especially lights. Remember that those won't spew out compile errors if you're not doing compiling with vrad.exe (a.k.a. going fullbright). Most of the time, if you have a problem with your map, it's due to an unexpected AND SOMETIMES NOT REPORTED BY THE COMPILER?? HOW?? leak on the map.

[VODKA]: To find leak, use pointfile (somewhere in top bar), if this file not exist, its means what map not have leaks, if do, follow the red line and fix problem with world geometry here . If you use NODRAW textures outside of map you can see holes in map easier.
------------------------------------------------------------------------------------------
Leaving "corrupt faces" in the level

They can cause a variety of issues in the level, even causing some major lighting glitches in unexpected areas. What causes them? Good question. I don't think Hammer's developers know.
A good way of finding and eliminating them is using Cordon Tool.

------------------------------------------------------------------------------------------
Refusing to use NODRAW textures on the sides facing the void

NODRAW is the ultimate way of optimizing the level, and it's also the easiest one. It's good practice to set it as a default texture or to make brushes with this texture by default. Without it, levels start chugging down resources far earlier than they should.

[VODKA]: Use NODRAW everywhere, where player cant see face of brush.
------------------------------------------------------------------------------------------
Embedding music tracks into the map as .wav files

This is a good way to needlessly bloat the filesize of the map. Not that it matters in terms of the download speed/capacity of the individual users, it's more about being able to download the map directly from the server without E.Y.E crapping itself. Make it an .mp3 file instead. Use ambient_generic and add # before the sound name so that it is recognized as music and can be controlled with the in-game music volume slider.
------------------------------------------------------------------------------------------
Usage of the Hammer++ software with E.Y.E

Technically speaking Hammer++ does not support SDK 2007, but you CAN use it for few things like physics simulation of the derbies and such, compile it as solids and port it to the "normal" hammer.

Hammer++ link if you're feeling brave: https://ficool2.github.io/HammerPlusPlus-Website/
------------------------------------------------------------------------------------------
func_viscluster

While technically it doesn't show up in the Hammer, you can still use this entity for optimization.
Make a brush, select it and press Ctrl+T and type in func_viscluster to the entity type window and press enter. Use trigger texture for the walls of the brush.

Entity description: https://developer.valvesoftware.com/wiki/Func_viscluster
Part 6: Most Common Bugs, Glitches, and Mistakes
We all make little mistakes or encounter common bugs while mapping for the first time. Here are some tips on how to resolve them.



Help! My map looks super-bright!

That's most likely due to a leak being present in your map. To find a leak after identifying it, go to the Map -> Load Pointfile... It should show you a red line going from the nearest entity and to the void, outside of the map through a gap in your brushes. If the red line goes straight through the wall then check if the wall is not a brush that does not seal the map like a func_detail or a displacement. If the red line continues to go straight through the brush, then delete it and make it again.
If it still goes through after that, you might have more leaks on the map.

Alternatively, there's a chance that you just need to type mat_fullbright 0 into the console to fix the fullbright issue.

[VODKA]: It's also can be problem with cubemaps. Some textures "reflect" area near them. It could happen if you use different type of skybox texture, no built cubemaps (place some of these entities and when you on your map type "buildcubemap" or like that in console)



Props I put into my map disappear!

Each prop has a different "type" you have to set it as. Animated ones are usually "prop_dynamic", props that are breakable are "prop_physics". Rest can be most likely used with "prop_static". When in doubt check the info tab of the prop in the model viewer.

[VODKA]: If you want make some static props physical, use prop_physics_override. Also for optimisation of usual physics props you can use prop_physics_multiplayer, but some of props will works uncorrectly (not affects by player's +use, disappear if shoot in prop), in that case use normal prop_physics.



Lighting in my map seems a little off... not the same quality as official maps and it lacks HDR.

As stated in the FGD Guidelines pdf file, you need to add -hdr to the parameters line of the vrad compiler (it's the line starting with the $light_exe) in the compile window (F9) (thanks Saravanth!). What the guideline does not state, is that -hdr has to appear in front of the whole thing, not at the end.

Compiling in HDR will add thus really nice glow to the lights and will make everything look more on par with the official maps. Mind you, that it will also make every single light source brighter, so if you were compiling in LDR for the whole time, you may need to re-adjust the brightness levels of the lights.

Comparison: LDR(left) vs HDR(right)



Parameters of VRAD should look something like this for it to work:
-hdr -game $gamedir $path\$file
Part 7: Advanced Mapping Cybermancy


The almighty technomancer Raeg has graced the E.Y.E mapping community (a few bums in the back alley of New Eden doing cyber crack including himself) with the much needed update to the E.Y.E's .fgd file.

The updated .fgd contains re-added entities and various fixes.
▶️▶️▶️Link to the Gamebanana page[gamebanana.com]◀️◀️◀️
In the words of the absolute legend himself (yes, I copied it from the Gamebanana page):

MAXIMIZE YOUR CYBERMANCY TODAY

Adds multiple missing/obsolete entities back into the .fgd, and fixes a few other things.

Entities (re)added:

  • info_player_battle: the Battle Royale player spawn. Place 16+ of these in your maps to be safe.
  • info_player_culter and info_player_jian are spawns for their respective teams in Team Artifact. Shoot for 8+ per team in your maps.
  • info_artefact is the spawn for Team Artifact's namesake, the cyberfootball you chase around.
  • trigger_artefacteater is the brush entity for Team Artifact's goals.
  • item_cyber is the research briefcase spawn.
  • env_ar2explosion is copied directly from Half Life 2's .fgd. Makes a big explosion.
  • Point_EYESaintDoor, only fires its unique output (OutSaintDoor) when you have all three gate spells from the campaign. Doesn't work on maps not prefixed with cc, and you need to have either been in the warp map or zxdivine_cybermancy to set a Master of Fate, otherwise it won't work, thus limiting its functionality in custom maps.
  • Point_Suppabonus gives achievements based on the value of its unique input, AttribBonus.
  • reward_giver gives Xp and Brouzouf in amounts that do not correspond to the values you enter, and might be influenced by your character's level. Can be used to subtract Brouzouf instead of awarding it with negative values.


Miscellaneous fixes:

Added a point entity for Betty Boom (weapon_betty_boom) which was previously missing.
Corrects the model for the Arrancadora (weapon_arrancadora) so it isn't a big red ERROR in Hammer any more.
A few misspellings of "light" were also corrected.
Added the amounts of Xp and Brouzouf given by point_EYEStealthMissionReward in its help section, but I'll put that here too for good measure:
1: 480 XP, 300 Brouzouf
2: 1,440 XP, 900 Brouzouf
3: 2,400 XP, 1,500 Brouzouf
4: 3,456 XP, 2,160 Brouzouf
5: 4,416 XP, 2,760 Brouzouf
6: 5,472 XP, 3,420 Brouzouf
7: 6,000 XP, 4,020 Brouzouf
8: 6,000 XP, 4,680 Brouzouf
9: 6,000 XP, 5,280 Brouzouf
10+: 6,000 XP, 5,940 Brouzouf; values greater than 10 give the same amount as 10.


Happy mapping!
Ways of Coping with Hammer Editor Crashing
<Data missing>

[VODKA]: If hammer says what exactly cause crash (bad line, coordinate etc), you can try fix it with any notepad programm, and try find thing what cause this problem (funny *e****** numbers).
If it's just crash and without any error, hope you prayed for Secreta and have autosave/backup.



Just keep on mapping Culter-Dei!
Credits
Raeg - making fixed .fgd, fact checking
VODKA E.Y.E - additional notes and commentary
the Nizz - spellchecking
ShadesBot/MrCalvin - Hammer++ EYE implementation and Hammer++ Guide
Boxyt - writing and graphics
7 Comments
Dutch van der Linde Dec 22, 2022 @ 6:22pm 
Thank you for this guide, I shall use it
Stryker505 Sep 1, 2022 @ 7:23am 
Excellent guide.
Boxyt  [author] Jul 22, 2022 @ 10:43am 
Updated the guide with the func_viscluster information
Boxyt  [author] May 21, 2022 @ 12:14pm 
Screenshots are here!
Boxyt  [author] Apr 30, 2022 @ 3:23am 
Updated with the note about HDR compiling, screenshot for the comparison soon(tm)
earo16 Jan 11, 2022 @ 8:16pm 
this is now on my to-do list
bobby !!! Jan 9, 2022 @ 5:59am 
Instructions unclear, got stuck in my cycles of guilt