Sunday, 18 September 2011

First update

A bit about neoaxis first.

When i first started working with it if felt different, coming from the source engine especially since the documentation doesnt really exist. The engine is very capable and as with most engines the quality of the project depends on the resources imported into the engine and not the engine itself. Here is the perfect example screenshot:


Now onto the project.

First of all the project has no custom content whatsoever. Every resource which i have used was included in the engine demo. It would be nice to have content from the VB tech demo imported but i would rather work more on the programming aspect of the project. What i am after with this project is provide the tools necessary for the community to say create a fallout style game / mod / whatever and since the van buren tech demo resources and design documents are fully available i think this is an excellent opportunity.

As i've said neoaxis is very capable. One could remake any feature from say the source engine into it (custom loading per game progress menu, the entity input and output events, game rules and such. Its just a matter of recreating the code or importing it to C#).

Programming wise, all of the features in the project are done in C# and lua. Since neoaxis cannot create logic dynamically while a map is running (everything has to be "compiled") i have decided that lua is the best way to go and so far it has not proven otherwise. The actual code is on an older but stable version of neoaxis which was available when i started working on the project about an year ago - so after most of the features are working everything would need importing into the latest version.

The project currently has many features working but at the same time not enough. Some of them below.

The dialog system is based on a modified version of the conversational library for neoaxis which i found here. Ive expanded it to include alternative replies based on intelligence, visibility options (regarding mission(s) status or anything that needs to be checked for a reply to appear or not) and engine commands which are used to affect the actual game world by having a dialog with an npc (giving an item to the inventory, starting the combat, changing faction relationships, quitting the game and so on).

The combat manager ive programmed myself from scratch. It is basically an entity that decides which character has the turn and is saved along with the other entities. This makes the save / load system easier to work with and is capable of saving the combat status.

The quest system is another feature i have made from scratch. It is very flexible in my opinion and can be used to create a quest only with a few lines of code and character dialog manipulation. As with other entities, it includes lua so events of the quest can be accessed easily by mappers/scripters. It still needs work on the quest log updating and the quest interface.



As i have said my goal is to provide the community the tools necessary to make a fallout related project, not to develop a game. Therefore, I plan everything to be open source and included into a subversion in the near future.

--[[
MISSION TEMPLATE
--]]
function OnInit()
local target = CrateEntity("Girl");
target.OnDeath:Add(target_death)
end
function target_death(prejudicial)
EndMission();
end

--[[
ENTITY TEMPLATE
ENTITY EVENTS
- OnInteract (activator)
- OnDeath (prejudicial)
FUNCTIONS
- SetMissionStatus (int)
- GetMissionStatus (returns int)
--]]
logUpdate = "";
function OnInit(instance)
instance.OnInteract:Add(use)
end

function use(prejudicial)
if GetMissionStatus("mission01") == 0 then
logUpdate = "You found Anson's drugs. Looks like Marienne has some explaining to do.";
SetMissionStatus(prejudicial, "mission01", 1);
end
end

This concludes the first update. Since i prefer to show pictures rather than words, this blog will contain a lot more pictures in the future.

No comments:

Post a Comment