[WTP] Modding Academy - Training new Modders

Should we introduce the WTP Modding Academy to teach new modders?

  • No, it is a waste of time and effort. Nobody will care.

    Votes: 0 0.0%

  • Total voters
    18
Hm, so far only Schmiddie and me signed in for the first training of the WTP Academy. :undecide:

I was hoping for a little bit more interest from our community.
But maybe the topic "WTP XML Basics" (for beginners) is simply not interesting enough - because it is too simple. :think:
 
Some of us are overseas so we might not be able schedule with CET time. I think it's better to create modding tutorial videos then upload them so we can learn on our own time. Also youtube is more popular and is more comfortable for some of us than zooming in from our home. You can have a live stream/training session on youtube and have (potential) modders join in your livestream. I think youtube live streaming is free.
 
Work and several housing-board commitments makes me absent from loggging in to civfanatics some weeks.
Otherwise I would have signed up earlier.

I have signed up for the Saturday now though.
Barring there is no server outage at work or tenants that call about fire or water-leaks I will definitely be there :)
 
To all participants who have signed in to the first training of the WTP Academy today (8PM, CET):

I have sent you a Private Conversation here in the forum with a link to the Zoom meeting and the information how to particpate. :thumbsup:
I am looking forward to meet you this evening and to have interesting discussions and exchange of knowledge. :)
 
Last edited:
My point still remain though. 99%+ of the knowledge needed to mod is the same for BTS and Colonization and Colonization modders can use BTS documentation.
True, but many people do not even know that that huge XML reference of Civ4BTS exists online. :)
I would really advice any active Civ4Col modder to check it when he has questions about XML in Civ4Col.

It can answer really a lot that a modder wants to know about XML modding of Civ4Col as well.
About 80% of the XML tags we have are still from Vanilla

The other 20% is new though and very specific to RaR / WTP and thus not available in any public reference.
For those simply ask WTP modders for more details and explanations.

---

Why did I post in this thread:

We had started Zoom sessions on modding in our public WTP academy to get more people from community interested to become modders.
But we ended WTP academy since it was a failure. Only already active and experienced WTP modders showed up ...

Whenever I read modding question about things like XML I wonder if it was a bad decision to end it. :dunno:
On the other side there are really not many modding beginners out there that are interested to start modding this game.
 
Last edited:
Hi guys,

recently we had several discussions about the "Python Event System" (in WTP)
Anybody interested to get an Overview / Introduction to it?

If yes I will organize a:
  • survey to figure out a good time slot considering availability
  • plan the Zoom Session and send invitations
Of course it will be completely free. :)
(But a few new events created and shared by Community would be nice.)

Installtion of a client is not necessary.
(Browser works just fine.)

The rest I will explain once I figured if there is any interest at all. :thumbsup:

-----

Agenda:
(might be subject to change)

Beginners Session on XML (1 h):
(Probably boring for everybody who already created Events and Quests.)
  • Which XMLs are involved in the Event System? (Overview in the File system)
  • How do these XMLs work? (Explanation of Attributes, Beginner's Guide)
  • What is already possible in these XMLs without Python? (Discussing Event Examples)
  • What is the difference between an Event and a Quest? (Discussing Quest Examples)
  • How can I test my Events and Quests? (Python Event Cheat Menu.)
Advanced Session on Python and DLL (1 h):
(Probably too difficult for people that know only XML and never programmed.)
  • How does the Python part of the "Python Event System" Work? (Discussing Python Examples)
  • Major differences in ArgsList (Arguments) for different Event Types? (Plot Triggered, Unit Triggered, City Triggered)
  • Experiences and tips for analyzing and bug fixing? (Typical Bugs, Indications that help)
  • What about further functionality by XML tags / DLL enhancements? (Adding XML tags with DLL funtions)
  • Open discussion / brainstorming for modders
-----

Let me know if there is generally interest for this. :thumbsup:
 
Last edited:
Hi everybody,

here is the link to the survey to figure out the best time slots considering your availability. :thumbsup:

As user in the survey, do not enter your real name and do not enter your real eMail.
Please simply use your account name here at CivFanatics.

Once I know your availability I will set up the trainings and send invitations.
(As private conversation here at CivFanatics.)

Looking forward to the training and discussions. :wavey:
 
Also, not sure I want my face put into the record ...
You do not have to, you can simply turn off the camera and even turn off your micro / stay muted.
There is also a chat where you can type in questions as alternative.

But just listening is also perfectly fine. :thumbsup:
 
I would qualify for your beginner's session. I'm in the Mountain Time Zone so if you schedule an early class I can hear it yesterday.
I'd better look at the survey link for time slots.
 
Hi everybody,

according to the survey I have scheduled the 2 Trainings for Python Event System next weekend.
Invitations (incl. agenda, date and link) have been sent to you as private conversation here on CivFanatics.

I am looking forward to our training sessions. :thumbsup:

Problem identifying one participant:
Spoiler :
I have no idea, who this participant is:
Noaccountjet

@Nightinggale
I think you told me something about this participant from discord.
If you know, please forward the links to him / her. :thumbsup:


Saturday, 8th of May
6pm to 7pm CET
Beginners Session on XML (1 h)
Spoiler :

  • Which XMLs are involved in the Event System? (Overview in the File system)
  • How do these XMLs work? (Explanation of Attributes, Beginner's Guide)
  • What is already possible in these XMLs without Python? (Discussing Event Examples)
  • What is the difference between an Event and a Quest? (Discussing Quest Examples)
  • How can I test my Events and Quests? (Python Event Cheat Menu.)

Sunday, 9th o May
6pm to 7pm CET
Advanced Session on Python and DLL (1 h):
Spoiler :

  • How does the Python part of the "Python Event System" Work? (Discussing Python Examples)
  • Major differences in ArgsList (Arguments) for different Event Types? (Plot Triggered, Unit Triggered, City Triggered)
  • Experiences and tips for analyzing and bug fixing? (Typical Bugs, Indications that help)
  • What about further functionality by XML tags / DLL enhancements? (Adding XML tags with DLL funtions)
  • Open discussion / brainstorming for modders


To anybody who has not yet applied:

It is still possible to apply. :thumbsup:
Simply contact me by private conversation (here on Civfanatics).
However the dates of the trainings are now fixed.

Best regards
raystuttgart
 
Ok guys, the training for the Python Event System is scheduled now. :)
(And this time it was also not only WTP members that were interested)

Since we the WTP team want to get Civ4Col mod community going again, we offer the following to you:
Community can request its trainings and we will see what we can make possible :thumbsup:

Summary:
  • Tell us, what you are interested to see, understand or learn to maybe mod a bit on your own.
  • If there is enough interest, we will schedule a training and try to explain, show or teach you.
 
I have no idea, who this participant is:
Noaccountjet

@Nightinggale
I think you told me something about this participant from discord.
If you know, please forward the links to him / her. :thumbsup:
Sadly I'm as puzzled as you are. In addition to not knowing the name, everybody I'm aware of might be interested are listed meaning it would have to be somebody else. This person will have to come forward (in public or private) or we won't be able to send an invite.
 
To all participants that have signed in, that we have the first session for this today. :)
(Of course it is completely up to you and if you are not able due to other things that is no problem.)

Saturday, 8th of May
6pm to 7pm CET
Beginners Session on XML (1 h)
Spoiler :

  • Which XMLs are involved in the Event System? (Overview in the File system)
  • How do these XMLs work? (Explanation of Attributes, Beginner's Guide)
  • What is already possible in these XMLs without Python? (Discussing Event Examples)
  • What is the difference between an Event and a Quest? (Discussing Quest Examples)
  • How can I test my Events and Quests? (Python Event Cheat Menu.)
 
So ok guys, the quality of the recording was really bad. :undecide:
Since I did full screen sharing I did not even notice the huge lag had between audio and video.

Thus I will not try to upload them somewhere.
(But I still have them stored if really needed.)

However, I still hope that I could explain the most important aspects of these things to you.
I also hope it will give you enough basic information to implement your first own events.

  • Which XMLs are involved in the Event System? (Overview in the File system)
  • How do these XMLs work? (Explanation of Attributes, Beginner's Guide)
  • What is already possible in these XMLs without Python? (Discussing Event Examples)
  • What is the difference between an Event and a Quest? (Discussing Quest Examples)
  • How can I test my Events and Quests? (Python Event Cheat Menu.)
 
I am answering a little bit already for next training, because I was asked.
(The next training is more about programming aspects.)

pTriggeredData = argsList[0] ---> This is the way a Python Method called from the EventTrigger (itself) can access Trigger Data.
pTriggeredData = argsList[1] ---> This is the way a Python Method called from the Event (that belongs to this Trigger) can access the Trigger Data.

From there on you can access all stuff related to the Trigger:
(From there you can contine to follow other things.)

Red stuff is most useful:
(Check the according DLL logic EventTriggeredData* CvPlayer::initTriggeredData.)
Spoiler :
pTriggerData->m_eTrigger = eEventTrigger; <--- from here you can get all data of the Trigger XML setup (if anything else fails)
pTriggerData->m_ePlayer = getID();
pTriggerData->m_iTurn = GC.getGameINLINE().getGameTurn();
pTriggerData->m_iCityId = (NULL != pCity) ? pCity->getID() : -1;
pTriggerData->m_iPlotX = (NULL != pPlot) ? pPlot->getX_INLINE() : INVALID_PLOT_COORD;
pTriggerData->m_iPlotY = (NULL != pPlot) ? pPlot->getY_INLINE() : INVALID_PLOT_COORD;
pTriggerData->m_eOtherPlayer = eOtherPlayer;
pTriggerData->m_iOtherPlayerCityId = (NULL != pOtherPlayerCity) ? pOtherPlayerCity->getID() : -1;
pTriggerData->m_iUnitId = (NULL != pUnit) ? pUnit->getID() : -1;
pTriggerData->m_eBuilding = eBuilding;


-----


Case Calling a Method from the EventTrigger:

(It really depends if you call it from EventTrigger or Event - see above)

e.g. this here in DLL:
  • pTriggerData->m_ePlayer
translates to this here in Python:
  • player = gc.getPlayer(pTriggeredData.ePlayer)
-----

More detailled information will follow tomorrow. :thumbsup:
 
Last edited:
Top Bottom