SetupArrayProps R: array prop '(null)' is at index zero

From Obsidian Conflict Wiki
Jump to: navigation, search

Definition

If you get this engine error after startup, you're starting Obsidian Conflict with the incorrect set of engine binaries (for the curious, Source Engine 2009 instead of Source Engine 2007. Obsidian Conflict runs on Source SDK Base 2007 since Valve has yet to release Source SDK Base 2009 for public consumption).


Resolution

To resolve this issue, open gameinfo.txt (not to be confused with gameconfig.txt) inside your client's obsidian folder (inside Steam/steamapps/sourcemods for the uninitiated). You should see the following:

"GameInfo"
{
	game	"Obsidian Conflict 1.35"
	title	"OBSIDIAN CONFLICT 1.35"
	title2	"OBSIDIAN CONFLICT 1.35"
	type multiplayer_only
	nomodels 0
	nohimodel 1
	nocrosshair 1
	hidden_maps
	{
		"test_speakers"		1
		"test_hardware"		1
	}

	developer "Obsidian Conflict Team"
	developer_url "http://obsidianconflict.net"
	manual "http://wiki.obsidianconflict.net"
	icon "resource/obsidian"

	FileSystem
	{
		SteamAppId				218		// This will mount all the GCFs we need (240=CS:S, 220=HL2).
		ToolsAppId				211		// Tools will load this (ie: source SDK caches) to get things like materials\debug, materials\editor, etc.
		
		//
		// The code that loads this file automatically does a few things here:
		//
		// 1. For each "Game" search path, it adds a "GameBin" path, in <dir>\bin
		// 2. For each "Game" search path, it adds another "Game" path in front of it with _<langage> at the end.
		//    For example: c:\hl2\cstrike on a french machine would get a c:\hl2\cstrike_french path added to it.
		// 3. For the first "Game" search path, it adds a search path called "MOD".
		// 4. For the first "Game" search path, it adds a search path called "DEFAULT_WRITE_PATH".
		//

		//
		// Search paths are relative to the base directory, which is where hl2.exe is found.
		//
		// |gameinfo_path| points at the directory where gameinfo.txt is.
		// We always want to mount that directory relative to gameinfo.txt, so
		// people can mount stuff in c:\mymod, and the main game resources are in
		// someplace like c:\program files\valve\steam\steamapps\half-life 2.
		//
		SearchPaths
		{
			Game				|gameinfo_path|.
			Game				|all_source_engine_paths|hl2
		}
	}
}

Step One

This first thing to check is the AppId mounts. This refers to the following block in the file:

	FileSystem
	{
		SteamAppId				218		// This will mount all the GCFs we need (240=CS:S, 220=HL2).
		ToolsAppId				211		// Tools will load this (ie: source SDK caches) to get things like materials\debug, materials\editor, etc.

SteamAppId should only be 218, and not anything else. If it is not, change it back to this value.

ToolsAppId should only be 211, and not anything else. If it is not, change it back to this value.

Note: AdditionalContentID, if present, is ignored by Obsidian Conflict.

Step Two

Next, check the search path configuration. This refers to the following block in the file:

		SearchPaths
		{
			Game				|gameinfo_path|.
			Game				|all_source_engine_paths|hl2
		}

This block defines how Obsidian Conflict searches for a file to load. For the sample above, the mod will first search for the file inside the obsidian folder, before falling back to the GCFs.

Only the above two lines should be listed in this block (the only exception will be the use of the Metamod: Source plugin, but that is beyond the scope of this article). If there are excess lines, remove them to return to this configuration.

Step Three

Once both the above blocks are checked and reverted to their proper values, save the file and restart Steam. The issue should now be resolved.