What's your ideal Scripting Situation?

Anything that doesn't require commercial (ie paid for) third party libraries/environments to debug the base game code

Spoiler :

For CivV Lua coders who've not played with CivBE this is what I'm talking about

Code:
local DEBUG_CACHE_SCREEN_NAME	[COLOR="red"][B]:string[/B][/COLOR] = "ArtifactsPopup";
local DEBUG_SHOW_INFO			:boolean= false;
local DROP_OVERLAP_REQUIRED		:number = 0.4;
local CATEGORY_ICONS_ATLAS		:string = "ARTIFACT_CATEGORY_ATLAS"
local HEADER_WIDTH_NO_SCROLLBAR :number = 472;
local HEADER_WIDTH_SCROLLBAR	:number = HEADER_WIDTH_NO_SCROLLBAR - 16;

local SelectedType				:table = {};
local WasShown					:boolean = false;

Code:
[COLOR="red"][B]hstructure [/B][/COLOR]ArtifactDataStruct
	Category		: string
	CategoryInfo	: string
	ExplanationInfo	: string
	Description		: string
	IconAtlas		: string
	PortraitIndex	: number
	Type			: string
	UniqueID		: number	-- while named "index" in engine is actually unique ID
	Condition		: number
	UIPriority		: number
end

Code:
	-- Obtain data.
	local artifacts : table = m_player:GetArtifactData();
	for _,artifactPlayer:table in ipairs(artifacts) do
		local artifact		: table = GameInfo.Artifacts[artifactPlayer.Type];
		local artifactData	: ArtifactDataStruct = [COLOR="Red"][B]hmake [/B][/COLOR]ArtifactDataStruct {
			Category		= artifact.Category,
			CategoryInfo	= GameInfo.ArtifactCategories[artifact.Category].Description,
			Condition		= m_player:GetArtifactValueAtIndex(artifactPlayer.Index),
			ExplanationInfo	= artifact.Explanation,
			Description		= artifact.Description,
			IconAtlas		= artifact.IconAtlas,
			PortraitIndex	= artifact.PortraitIndex,
			Type			= artifact.Type,
			UniqueID		= artifactPlayer.Index,			
			UIPriority		= GameInfo.ArtifactCategories[artifact.Category].UIPriority
		};
		table.insert( data, artifactData);
	end
 
Python. Because it's Python.

I totally understand how tracking whitespace is pretty crazy and intimidating, especially when the game yells at you for missing a space somewhere. But when you get used to it, it's more elegant and extremely powerful.

I feel that I could script mods in half the time if I used Python vs. Lua.

Agreed, i'm also all for python
 
Well, I never got into Civ5 modding as much as I did Civ4, but I've used Lua in other projects and honestly, I'd be happy with either one. Lua with Civ4's hot-swapping and robust API would be my ideal, plus C++ access on day one, of course.

What still bugs me in both Civ4 and 5, though, is XML. There's so much boilerplate that gets in the way of what should be simple data, and it makes combining files a pain. Using SQL as an intermediary helps a bit, but I think the devs should consider using JSON or YAML instead.

JSON would be so much easier to work with. Less brackets, more readability.
 
Give us official documentation - that's #1, which was severely lacking, IMO, expecially for Civ:BE, and somewhat lacking even for Civ 5. Looking at the XML for civs/factions was a little helpful, and some of those property/column names are not exactly obvious to what they actually do. But my biggest pet peeve is the incomplete API, especially game events for us to handle. I'd like to know what they are, what parameters are passed to those events, and when in the game lifecycle they're invoked. From attempting to mod Civ:BE, I have salvaged (after a lot of sweat and blood) only a few working events. I know that there is some guesswork to do in developing anything, but requiring us to guess object, function, and property names is unacceptable.

And yes, make us be able to Mod in C# with Visual Studio, so provide a library with all the objects, properties, and function, so that we'll get Intellisense!

Agree 100% with these points. Ideal scenario for me would be C#, XML and SQL combination. I've used these on large scale database applications since 2002 and have recently started using C# in Unity to create mobile games, so I would feel very comfortable coding with these tools.
 
Give us official documentation - that's #1, which was severely lacking, IMO, expecially for Civ:BE, and somewhat lacking even for Civ 5. Looking at the XML for civs/factions was a little helpful, and some of those property/column names are not exactly obvious to what they actually do. But my biggest pet peeve is the incomplete API, especially game events for us to handle. I'd like to know what they are, what parameters are passed to those events, and when in the game lifecycle they're invoked. From attempting to mod Civ:BE, I have salvaged (after a lot of sweat and blood) only a few working events. I know that there is some guesswork to do in developing anything, but requiring us to guess object, function, and property names is unacceptable.

And yes, make us be able to Mod in C# with Visual Studio, so provide a library with all the objects, properties, and function, so that we'll get Intellisense!

So much this! Modding CivBE gave me the impression that the API consists of what they needed while they were building the game. It felt like the API was not really something that was designed, but just something that came to be. A by-product of building the game. The lack of documentation was also very frustrating for amateurs like me. Perhaps the real programmers had no problem reading between the lines and automatically get a grasp of the whole platform, but I had quite a bit of trouble.

So a properly designed and documented API is really the one thing I'd ask for.
 
This is precisely what I'm talking about with Civ4 vs. Civ5, 5 seconds vs. 3 minutes. I've timed it now, and Civ5 requires 3 user interactions to get to a saved test game:
[…]
Moreover, in most cases it is possible to edit the Python files while Civ4 is running. They will be reloaded on the fly which made the testing faster. :) (Unfortunately, it doesn't work under Wine…)

I'm wondering why we still had to speculate about the script language?! The game will be released in 9 days and for Civ4 the information was given many weeks or month before.
 
I'm wondering why we still had to speculate about the script language?!

Same here. I understand releasing the API is going to interfere with the pre-release information exposure plan, but even something small like "it's going to use so-and-so language, and the full API documentation plus the SDK environment is going online at release as well" would have got so many modders hypped about it as well.
 
Disappointment in this regard as well...
 
Back
Top Bottom