Current time: 24.11.2024, 17:27 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Dialogue Master + The Stand Map Demo + ERM Dialogue Function
» Tools to help you write ERM and Story-Based maps
Author Message
Axonn Offline

Posts: 12
Post: #1

For all that it's worth, please try to read everything I wrote here? I know I write a lot, but indulge me ::- ).

I'm a crazy over-imaginative snow and my dream is to create the greatest open-ended adventures, with story, dialogue, multiple choices in the game. Open Ended Worlds. And since besides being a writer and game designer, I am also a programmer, I made some tools to help me. These are the tools, these are stories, this is everything ::- ).

What you have here is a DEMO MAP + A complete set of tools (including the ERM used) to help you write really cool open ended story maps, with dialogue between characters! ::- D.

Go here: http://www.echysttas.org/AxonnEchysttasH3.rar

You will have there all that I worked until now ::- ). Hell, I even included the source code, all of it, including for my ERM Dialogue Builder and the ERM Dialogue function.

What you got there is this:

1. My Heroes 3 map project - which I put here because it's a demo of the ERM Dialogue Generation function and it shows how I built dialogues and stuff. You will need to copy the map The Stand 1.h3m into the well known "maps" folder AND, VERY IMPORTANTLY, copy the "Data" folder over your Heroes 3 "Data" folder. Don't worry, I won't overwrite any files. Actually there is an "AE" folder there which needs to be in your Heroes 3 data folder because I use images from it. No other way to do it nicely in ERM.

2. The ERM Code Generator that I used to generate all the dialogue in the map. NOTE THAT I WILL BEGIN WORK AT A NEW CODE GENERATOR, not only for dialogues but for EVERYTHING. I will create a new topic with that in a few weeks, when I get more time to work at it. Until then, this is just a part of what I plan to build.

3. Source code + ReadMe file which will explain exactly how the ERM Code Generator works.

4. I also put in that RAR archive my ERM dialogue "engine". It's a WOGIFY FRIENDLY function which can generate dialogues for you. 2 years ago when I built it, I made it so it's compatible with The List of The Claimed. I don't know how that list looks now, but changes should be easy enough to do.

ATTENTION: To see an example of what the Dialogue Master can do, open with it the file "The Stand Part 1 Dialogue -01- Gard Bulur.h3dm" located near my Heroes 3 map, in your maps folder. Actually you don't need to have that file in your maps folder. I just included it so that you can open it with the Dialogue Master and see what it can do.

WARNING: You need .Net Framework 2.0 for the application to work. Execute ASDH3DM.exe.

Sooooooooooo...

WHY AM I DOING ALL THIS:

Initially, I wanted to surprise everybody with a 100% ready map and with some neat tools for you all to work with.

However, I've been dragging on with this for the better part of the last 3 years. And 2 years before that just fiddling around with ERM. I feel that I lack motivation to continue.

So, you just take a look at that map and those things and tell me what you think ::- ).

Regardless of your answer, I will finish everything, but a bit of interest in these things will probably make me move a bit faster.

Next month I will start development at the new ERM Code Generator which will be able to COMPLETELY take over 100% of the ERM development for a map. Without it, I cannot complete such a huge project I got myself into. As you will see if you play the map demo, it branches in lots of directions and it took me MONTHS to work only that much.

WARNING: the map is not even a demo. It's just 15% complete! So all you can do is go towards the village there and do some of the quests. You WILL get a GENERAL FEELING of what I'm trying to build here. DO REMEMBER that it will be less dialogue from this point on, but the map WILL still remain a story-driven adventure.

P.S.: Some thoughts about the map's future:

- You will be able to escape the island in 4 different ways, allying yourself with 4 different factions: the Rogues, the Bandits, the Lizards and one surprise faction which I will not divulge yet ::- ).
- On the map, you will be able to ally yourself with various factions.
- You will be able to talk to some vital-for-the-story Heroes before attacking them and you will be able to become allies with some.
- The final purpuse is to make this map so open-ended that you will be able to play it 10 times without getting bored of it.

So yeah, it's a huge project ::- ). But now, at least I show you that I'm commited to this ::- ).

I hope you enjoy my work!


. - = E C H Y S T T A S = - .
The Greater Mind Balance
05.09.2009 18:01
Find all posts by this user Quote this message in a reply
Corwin Offline
Administrators

Posts: 3346
Post: #2

Well, I managed to finish your post. Sm
I downloaded and checked your work. What can I say - great job you did. I don't spend enough time with it, but what I could see (Dialogue Master and map example) - impressive and looks serious. I need much more time to work with it for look into the details, and then I can talk to you more productive. But now - thank you for your work, it's great 20


Не балуйтесь.
06.09.2009 01:09
Find all posts by this user Quote this message in a reply
Axonn Offline

Posts: 12
Post: #3

Hi Corwin. Thank you for the nice words ::- ). It's quite encouraging and I intend to continue this project, albeit in a slightly different form. The map will continue as it is now, but I have realized that it is extremely hard to work at such a huge adventure (XL map, open ended) with just that. So that's why I'm building a whole new system, an ERM code generator, sort of like an IDE. Just like C# code is compiled into IL and C++ into ASM, my stuff will be compiled into ERM. But it will not be a language, but sort of like a very advanced "wizard" which will allow you to do your scripting. Most importantly, organize it and keeping it all together!

I stopped working at the ERM Dialogue Master because it could be used just for a couple of functions (using my ERM dialogue generator and doing a bit of ERM behind the scenes).

Now I'm building something that will be able to generate ALL the ERM. Consider it like a layer of abstraction over the ERM. What you see on screen will be like this:

When Player visits The Blood Obelisk give him 2000 gold and "Player Visited Blood Obelisk" = true.

My generator will translate this into:

!?OB28/128/1;
!!UN..blabla give gold
!!IF:V28/1; [set flag to true]

Of course, in my program you will say what the Blood Obelisk is. You will have a place where you can define your map objects, give them custom name and simply map them to their map locations X/Y/Z. You will also map variables over flags. You will create a new Flag, say, Flag 28 like I said in the above example, but you will actually name it "Player Visited Blood Obelisk". And of course, all this makes the code really nice to read and work with.

And then there's a Generate ERM button and voila, you have your scripts, neatly split into 32 KB (because the Map Editor can't handle more than that and I link my scripts to the map from the Map Editor).


. - = E C H Y S T T A S = - .
The Greater Mind Balance
07.09.2009 03:47
Find all posts by this user Quote this message in a reply
Valery Offline

Posts: 2196
Post: #4

(Not going to say again it is very interesting because I already said it in HC:96Sm

Maybe you choosed the bad example but:

"!!UN..blabla give gold" still has to be hand written, no? The message I mean. In the end, the script you gave as example can be written in 20 seconds, while using dialog master will take longer and it is quite more complicated. Does the dialog master keep tracks of used variables and flags? How the true 28 flag prohibits again visiting it, as there is no written condition (false)?

And what will be the true limits of the tool? I mean at which point you can't anymore use it and you have to script by hand an action? 5 dialogs for an object? 6? 10? Unlimited?

What is the 32kb limit? Actually the same script can be bigger than that, using functions and linking to a second script.
(This post was last modified: 07.09.2009 09:52 by Valery.)
07.09.2009 09:45
Find all posts by this user Quote this message in a reply
Axonn Offline

Posts: 12
Post: #5

Hey. Salamandre, right? ::- ).

I'm going to answer you point by point. Some of my answer may become a bit too technical but as you said, this is the right place. At the same time, I'm laying out my ideas before you because it also helps me get a better understanding of what I am planning to do.

This will be long and detailed but if you read carefully you WILL understand. I am very explicit ::- ). I hope you will read all because I spent 1 hour writing this message for you, to make sure you ::- D. Well, not only for you, but anyway... I am extraordinarily busy but I am very dedicated to this project so here I am, writing a 1 hour message.

1. The ERM CodeGen (from now on abbreviated as ECG) will keep tracks of used variables and flags, yes. You will be able to give them a more human readable form. v98 will become "Player's Gold" or "Red's Gold" or whatever you want. V15 will become "has visited tower" or whatever you want. You will be able to define all these and see them nicely in a single place. You will be able to organize them in folders, as related to the logic of your map.

2. You will be able to set initial values for those flags & variables.

3. The depth of dialogues or conditions is infinite. The only limit is ERMs own limits ::- ).

4. The 32 KB limit only happened to me using the Editor. I use multiple files of 32 KB and I overcome that. Multiple scripts. The current Dialogue Master already does this splitting ::- ).

5. !!UN..blabla give gold -> No, you would not need to write that by hand. I will provide wrappers for ERM instructions. But I will also give you the possibility to create new ones if you want. There will be an instruction wrapper editor (read below). During the first weeks of public testing we will complete the ERM language database. I will provide a partially complete one, covering at least the instructions I use. Slowly but surely all the ERM instructions will have their corespondents in the ECG.

Now, how does this help you might ask? Let's take the following, hopefully better and more concrete example:

!!OW:R0/6/v98;

To write this in ECG you would do this:

i. Select from the instruction tree the "Modify player resources" ECG instruction.
(note) the instruction tree is the place where you will see all ERM instruction, nicely organized according to their purpose, example: "messages", "resource manipulation".
ii. ECG will load its internal mapping of that instruction which looks like this; !!OW:R$player$/$resource$/$integer_value$;
iii. What you will see on screen after selecting that instruction from the dropdown is this:
iv. Two other dropdown lists, a checkbox and a textbox.
v. The first dropdown list will contain all 8 possible players. The second will contain all 8 resources. The checkbox is called "hard code".
vi. Hard code is checked? Show textbox which allows you to specify an integer-only number, with the resources to add/subtract/set.
vii. Hard code is not checked? Show dropdown list which (and here comes the really cool part) will show all the variables YOU have defined in your map, nicely, by their very friendly and human-readable names. This way you will be able to set the resources to a certain variable.

Now, this may look like a long operation, but it's because I explained it in such detail. In practice, it will take you hardly more than doing it by hand. But the advantage is that:

A. No bugs => ERM is easy to mis-spell and mistake, hard to remember EVERYTHING.
B. Easy to read => ERM is great for what it does but it's extremely hard to read and understand. Using the ECG you will actually be able to READ OUT your map, therefore understanding it better and being able to focus on the really important stuff. I *CANNOT* stress enough how IMPORTANT it is for a programmer to be able to properly read out his code FAST, even after 2 months since you last worked at it!!! I look at my 6-months old ERM scripts now and I want to shoot myself *laugh*. Consider that I actually write lots of comments, AND EVEN SO it's hard to understand again ::- )
C. Easy to organize => you will be able to separate your ERM not into messy files with thousands of line of code, but into LOGICAL ENTITIES. You will be able to create a folder where you store all variables and instructions pertaining to some quest. Then in the parent folder all the global-map variables. Then make a special folder for variables you want to cary over to the next map. All with nice names, easy to understand and read. The entire system will be based on a folder structure where you can move your stuff and keep everything organized the way YOU find it logical for YOURSELF.

6. I mentioned the ERM instruction database. Now that you read the example above, you understood a bit of how I intend to make the ECG work. All ERM instructions need to have their parameters mapped to ECG data types. Let's examine how one would map a new ERM instruction into ECG. NOTE that this has to be done ONLY ONCE. Once you saved it you will have it for all time, for all projects and you can share the database with the common repository I will make available on my server at axonnsd.org.

Instruction to be mapped: !!IF:M^^;

i. Select Language Provider -> Add New Instruction.
ii. A textbox allows you to write the ECG instruction token string.
iii. You will need to write !!IF:M
iv. ECG allows you to add a dynamic parameter within that instruction. You can press a button to do it or you can specify it by hand.
v. With the dynamic parameter added, the ECG instruction token string becomes !!IF:M$the_message$
vi. As soon as you do this, a dropdown list will apear allowing you to specify the DATA TYPE of the parameter.
vii. You select "String" (text).
viii. You are prompted to give a "friendly name" to the parameter. You say "Message to show".
ix. Save. Name? "Show simple message".
x. Done.

When you go now and add a new instruction in your code, you will select "Show simple message" from the instruction tree and then what you will see is an already checked checkbox and a textbox named "Message to show" where you type in your message. Or you can uncheck the "hardcode" checkbox and select one of your map variables to automatically insert in your message. The ECG will take care of adding the ^^.

7. The ECG, just like the current Dialogue Master, WILL allow you to code ERM by hand if you so wish. There will be a "Raw" instruction where you can put whatever code you want, by-passing the ECG's auto-complete via dropdown lists & textboxes and pretty naming. HOWEVER, if I have time, I might consider writing an auto-complete editor for ERM integrated in the ECG, but this is NOT my priority right now. Right now I just want an ERM IDE where I can do all my scripting because my scripts and maps are very complex and with tons of variables and dialogues and story. I can't do it with ERM Scripter. It's suicide. It's way too damn complex. Especially since ERM does not know the idea of "if". In ERM if you want 10 instructions to only execute if a variable is TRUE, then you have to put &V18 for 10 times, once per each instruction. This is extremely frustrating and error prone. You could do functions, of course, but FU18183 hardly makes the code more readable.

The ECG will abstract the IF instruction, allowing you to create the IF in a tree-like structure. You create a CONDITION where you say that some variable has to be true and then you write 10 instructions within that condition. YOU WILL NOT HAVE TO REPEAT that condition for all instructions. the ECG will do it for you behind the scenes, generating all the code automatically.

Finally, let's look at how an ERM script looks against an ECG instruction set.

ERM:

!?LE41/116/0;
!!IF:N6/431/4/3/5/8/8/7; [Showing the loot to the player ::- D.]
!!IF:N^Scouring this corner of the forest reveals
a hidden cache behind some thick
vegetation. In an leather bag you
find the Centaur's Axe, some gold
and some precious stones.^;
!!HE-1:A4/7; [Giving Elyssa the "Centaur's Axe" artifact.]
!!OW:R0/6/?v98; [Storing in the v98 temporary variable the Player's gold.]
!!VRv98:+431; [Adding to the Player's gold, the amount found in the cache.]
!!OW:R0/6/v98; [Setting the Player's gold resource.]
!!OW:R0/4/?v98; [Adding "3" to the Player's crystal and gems.]
!!VRv98:+3;
!!OW:R0/4/v98;
!!OW:R0/5/?v98;

ECG:

(this will be in a tree just like you saw in my Dialogue Master)

- Current Player visits The Temple Of Doom
    - Show message with 2 pictures. Picture 1: Centaur's Axe. Picture 2: Gold resource.
    - Show simple message: message text: Scouring this corner of the forest reveals... etc.
    - Give artifact to hero. Artifact: Centaur's Axe.
    - Add to Player 1 gold: 431.
    - Add to Player 1 crystals: 3.
    - Add to Player 1 gems: 3.

Personally, I find this 1000 times more friendly than ERM and I think it will launch ERM into a new age, bringing its true power to everybody. And trust me that I am not a beginner in ERM. I've been using it since 2003. I am not lazy. I am not afraid of writing ERM by hand. The problem is that I need to be more efficient. My ERM is so complex now that I can hardly debug it when something breaks. So I need to make sure there are NO BUGS.

One last thought: this project I'm building, as you can see, is no small thing. It's actually one of the most complex projects I've ever embarked in my life. But I already delivered something nice & free & pretty complex to people all around the world: http://www.axonnsd.org/ASDClock . I know that I'm more than capable of doing this. Also, this project will NOT be just for ERM. In the future I want to include other language abstractions in it. So that any game developer, even not programmer, can build scripts and organize stuff in it. Even programmers may find it useful, as it allows specification of the GAME STORY completely separated froom the game. I may make this a commercial project, with a licensing fee. So you can bet that I'm going to finish this stuff. I already begun planning stages. I got UML diagrams drawn up and the project is already started. I promised to finish the Heroes 3 map and this is yet ANOTHER reason I absolutely NEED to finish this ECG. However, rest assured. The ECG will NEVER, EVER, cost anything for people in the H3 community. Also, I may even make it Open Source Software ::- ). This depends very much how my financial future will shape up in the coming months. I got a Flash game release coming this October and I'm curious how much money I'm going to pull out of the AS3 game I built.

Ok, that's enough ::- ).


. - = E C H Y S T T A S = - .
The Greater Mind Balance
08.09.2009 03:17
Find all posts by this user Quote this message in a reply
Valery Offline

Posts: 2196
Post: #6

Thanks for answer, even if I will skip the part "I spent an hour to explain you this" because almost everyone in this forum actually dedicated endless hours for WoG, so it is not the purpose.

I am very interested about how it will all this look at the end. You make a lot of statements I am not sure of, as ERM being buggy or hard to read its own codes or hard to understand, but there are people here who certainly will understand them better and apply your research for a better experience.

A lot of codes in your examples are pointless (setting the resource variable each time before modifying it), but I guess you need them to create a working ECG, so I will not comment them without looking in the finished tool.

I have a personal opinion about WoG which may not be shared by others: only choosen people will overcome its difficulties. What that means?

From HC ERM help thread I noticed that no matter how much you help people with codes/understanding the language, if they are not motivated and having OWN ideas, they will not improve. The one who HAS ideas and IS addicted fan will do everything and eventually become an ERM moder. There are few chances that a person who made so many efforts will rely on an automated tool for custom actions. Mostly because NOW he enjoys scripting and does not fear the long process.

But: if your tool really does what you mean then it will be an inestimable addition to the bunch of tools we have here, and all are for a better WoG. Keep the good work 177
08.09.2009 06:30
Find all posts by this user Quote this message in a reply
Axonn Offline

Posts: 12
Post: #7

Oh you're right that many people dedicate hundreds if not thousands of hours for WoG. I am sure Slava and the initial creators of ERM spent enormous amounts of time. Why do you think I do this anyway? Its not only because I love programming and love Heroes 3, but also because I love the community. Each of you people is great to me, because after 10 years you're still interested in the fantastic achievement which is Heroes 3 and ESPECIALLY WOG, which is, by far, the most customizable game I have ever seen. It's a passion we share and love. I was just mentioning how much to write so that you don't skip through my text just like 90% of people do. *laugh* that happens because I usually write a lot.

In about a month I intend to post a 0.1 version of the ECG here. And we'll take it from there, step by step, with suggestions and so on. I'm eager to finish my Heroes 3 map ::- D.


. - = E C H Y S T T A S = - .
The Greater Mind Balance
08.09.2009 06:59
Find all posts by this user Quote this message in a reply
Valery Offline

Posts: 2196
Post: #8

Great news, waiting for it Sm

And all credits for keeping WoG alive should go to the russian team here. Without them it would be long time dead.
(This post was last modified: 08.09.2009 07:08 by Valery.)
08.09.2009 07:06
Find all posts by this user Quote this message in a reply
Axonn Offline

Posts: 12
Post: #9

Yeah, who do you think I dedicated my map to? ::- ). I know the team actually changed a bit, so I'll update the credits ::- D.

Hm, by the way, is there place in the WoG menu for a new campaign? I'd try to fill that up ::- D.

Shit... all this talk with you made me so hungry for working at the ECG, I just dropped what I was doing and went on working at it *laugh*.


. - = E C H Y S T T A S = - .
The Greater Mind Balance
08.09.2009 07:14
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #10

Could someone upload the program?


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
06.11.2009 20:32
Find all posts by this user Quote this message in a reply
Axonn Offline

Posts: 12
Post: #11

Hello ::- ). I just checked in to tell everybody that the first version of the new ERM IDE is in work ::- ). I'll have something functional probably by the end of this month. It's not going to be a full fledged ERM compiler, but it will support quite a bit of the current instruction set I hope 120. For anybody that wasn't paying attention so far: this is going to be an ERM compiler as in -> you use a user-friendly IDE with nicely name variables & everything a proper IDE has and you hit a "Compile" button and it spits out ERM files ::- >. I am hoping this will become the main way of writing ERM from now on ::- D. At least for big projects. My Heroes 3 map is extremely complex (Open World Adventure) and it became practically IMPOSSIBLE to maintain it EVEN with the previous Dialogue Master I built. So this is what moved me in the direction of an ERM IDE.

And yeah, I know I'm late. I said I was going to post last month something, but I got into trouble with some other projects and I had to clean up the mess ::- D.

As for the old program, sorry, I deleted it from the website since I thought nobody uses it anyway. I uploaded it again here:

http://www.echysttas.org/CV/20080829H3DM/H3DM.RAR

The archive above contains two !!!ReadMe.txt files. MAKE SURE YOU READ THEM. It also contains my Heroes 3 map, at least what I worked at it so far, as example for the use of the program. If you have any questions feel free to reply in this topic, as I am tracking it as of right now ::- D.

And remember:

This application's sole purpose is to allow you to add dialogue to any of your maps. If your map has no dialogue, no storyline, then this program is probably useless to you.


. - = E C H Y S T T A S = - .
The Greater Mind Balance
(This post was last modified: 15.11.2009 23:15 by Axonn.)
15.11.2009 06:35
Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #12

you don't have Release version of you program. that's why only people, who install visual studio, can run it.


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
(This post was last modified: 15.11.2009 11:39 by gamecreator.)
15.11.2009 11:39
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #13

Axonn, thanx, good luck in work.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
15.11.2009 15:32
Find all posts by this user Quote this message in a reply
Axonn Offline

Posts: 12
Post: #14

gamecreator: wrong, you just need .Net Framework 2.0 ::- ). It's free to download from Microsoft.com. Here is a link for you

Download .Net Framework 2.0

Berserker: thank you ::- ).


. - = E C H Y S T T A S = - .
The Greater Mind Balance
15.11.2009 17:55
Find all posts by this user Quote this message in a reply
gamecreator Offline

Posts: 7107
Post: #15

(15.11.2009 17:55)Axonn Wrote:  you just need .Net Framework 2.0 ::- ).
aa!! this is the most terrible thing! i hate it


When all gods have burnt to ashes in eternity of sorrow,
Demons gonna tear your soul because there is no tomorrow.
15.11.2009 18:18
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group