|
Writing your own promos and
creating your storylines is just about the easiest thing you can do with the
freshly released source code. However, even this is not as simple as it seems.
If you want to do it properly, you should study the following advice
carefully...
The
Skeleton
The first thing to do is to
head into the Promos.bb file and copy and paste an existing promo that
has a similar structure to what you have in mind. Remember to give it a brand
new name and number. The yellow header is for your eyes only, but it's ESSENTIAL
that you change matchPromo=?? to a unique new number. This
will become the number that the game identifies the storyline by. You will
notice that within that bracket, each stage of the conversation has its own
time on screen as dictated by promoTim. In most games prior to The
You Testament, this counts DOWN from a given number instead of UP. This is
not ideal and makes things unnecessarily complicated, but you'll have to work
within it. Once your conversation is finalized, you'll have to come back here
and ensure that each segment is displayed for a sensible amount of time (250
is recommended), with a gap of 25 between each one (including at the end)...
Writing Lines
As you'd expect, the most
important thing is the text that determines what will be said. Most games
prior to Wrestling MPire 2008 had to worry about how long these
sentences were, but later advances allowed the game to squeeze ANY given line
of text into the confines of the screen. It's still recommended that you don't
deviate too far beyond the given examples though - otherwise the text will end
up annoyingly small! If you're a perfectionist, you also need to consider
making each line a similar length. That is if you need to use 2 lines at all.
If you'd prefer to display one line, you can simply leave lineB$ with
nothing to display but "". The game will then centre the only
legitimate line of text. One-liners are not good practice in my opinion
though, so you should try to have something substantial said each time. I also
like the sentiment to be quite self-contained, so that the next segment is a
continuation of the conversation rather than the continuation of a mere
sentence!
Name References
One of the biggest headaches when writing for games is that you often need to
refer to "variables" that defy the English language! This is normally the name
of the character being spoken to. It's no good writing "Hello Steve Austin"
because that will hardly ever be appropriate. Instead you have to make
reference to the charName$(?) variable that contains the name of the
character identified within the brackets. You insert a variable into a line of
text by cutting into it with the formula "+Variable+" (or simply
Variable+"... if it forms the start of a sentence). If you have any
doubts, it's best to copy and paste the way a name has been referred
to elsewhere. Just remember to make sure the number inside the promoActor(?)
variable refers to the actor in question. I'll elaborate on this later...
Gender References
Gender is also an issue in my games. It's no good typing "He" or "His" because
this may not apply to the many female characters! Instead, you have to call on
several text-based variables that I've prepared for the game. These can be
located in Texts.bb if you are intent on adding your own. Most normal
uses are already covered though. To make reference to someone's gender in a
conversation, you first have to establish the gender with the formula g=charGender(?).
You can then insert this temporary g variable into one of my preset
gender references such as He$(g), His$(g), or Him$(g).
The right word will then be used based on the character's details, such as
"She" even though the variable is still called He$(g). Another little
thing to point out here is that this will display the word with a CAPITAL "He"
or "She" as though it were the beginning of a sentence. If this is NOT the
case, you should surround the variable with Blitz's Lower$( )
function to make it lower case...
Acting
Once you've got your sentences
in order, it's time to think about how they should be delivered. The Speak(
) function is used to make one actor speak to another - complete with
gestures and moving lips. A conversation can have up to 3 actors in it, each
with their own number from 1 to 3 (the promo's data will help you establish
exactly who these actors are later). The first use of promoActor(?) is
the one you would like to speak and say the words that follow. The second use
of promoActor(?) is optional and gives the first actor someone to aim
his words at (who will then turn to face him). If you'd like the character to
talk to no one in particular (i.e. the crowd), you can simply put the number
0 in the middle. The final number at the end is a facial expression
that conveys the tone of the conversation (1=Angry, 2=Neutral,
3=Docile). In the wrestling games, most will be angry rants so you can
leave a 1 at the end! However, if you'd like them to lighten up or be
sincere, you should use 3. Once you know which actor will START the
conversation, it's best to go back to the very top of the promo code and make
sure that camFoc refers to this actor. This will ensure that the camera
focuses on him in advance instead of switching to him at the last minute!
Consequences
Once the right people are
saying the right things in the right way at the right time, you may want to
consider making that mean something. This is especially true of the booking
version, where promos are used to turn wrestlers "Face" or "Heel" and change
relationships. This is what the PushTurn( ) function is for. It pits
the first actor (usually the one who is speaking) against a second actor (the
one he is speaking to) and changes their allegiances based on what they were
before. For instance, if a good guy berates a fellow good guy, the one who is
speaking will turn bad. Inversely, if a bad guy berates a fellow bad guy, one
of them will emerge as the good guy. If you'd like to guarantee a certain
result, you can replace the second actor with a number - such as
PushTurn(actor,-1). 0 guarantees that the first actor becomes good
whereas -1 guarantees that he turns bad. Simply copy the way it has
been used in a similar promo if you have any doubts...
Relationships
At a pivotal moment in a
conversation, you may also want to permanently change the relationship between
the characters involved. Every single character in the game has a unique
relationship with every other character, which comes into play in the "Career"
mode of any given game. We use the ChangeRelationship( ) function to
affect it in promos. The two characters involved are referenced and then the
number at the end determines what their relationship will be changed to. If
the number is positive (i.e. 1) then it denotes a friendship, whereas a
negative number (-1) denotes a rivalry. 0 means they have no
feelings one way or the other. It's best to do this at the very end
of a promo in case a premature change affects the way the conversation
unfolds...
Crowd
Reactions
You can also make the crowd
respond to a conversation to give it a bit more personality. Halfway through a
segment, you can time the game to play a certain sound effect. It's important
that you use the formula promoTim<??? instead of promoTim=???
because the promo code falls outside the timing system and may not be 100%
accurate. If you say promoTim=??? in any given promo, it will almost
certainly fail to come to pass. To prevent something happening repeatedly once
promoTim goes beyond a certain time, we simply use promoReact(?)
to record the fact that it has already happened. Simply copy the way it has
been used in an existing promo, but be sure to update the numbers within
promoReact(?). Each segment of the conversation has its own record. In any
case, the Pop( ) function is the important piece of code here that
elicits a sound from the crowd. The first variable in the bracket identifies
who the crowd are reacting to. If you want this to be an issue, you enter the
actor's ID or simply the word speaker. The crowd will then respond
positively if they like them or negatively if they don't. If you want to
guarantee a certain response, start with 0. The last number is the
volume of their response and should probably be left at 0, which
doesn't denote silence so much as a random volume based on their popularity.
This is usually for the best. If you want them to respond as loudly as
possible no matter what, replace it with 1. The all-important number in
the middle is the ID of the sound effect you want to play. They are as
follows:
2 = Cheer
3 = Boo
4 = "Yay"
5 = Groan
6 = Excitement
7 = Murmur
8 = Laughter
9 = Applause
10 = Chant
11 = "Boring" Chant
Promo
Properties
At this juncture, your new
promo is technically done and all you have to worry about is entering it into
the system so that you can access it! This can be quite complicated in itself,
however, so keep paying attention. You need to scroll back up to the very top
of Promos.bb and make a new entry in the list headed PromoData.
Copy an entry from a promo similar to your own and then change the number
after the brackets to the unique ID of your new promo (matchPromo).
Then you can set about entering a title for it and a brief explanation of what
it contains. This is largely irrelevant and is only for the benefit of others
though. The numbers underneath are much more important. You must enter the
correct length of the promo after promoLength. This should be the
highest reference to promoTim in your script - PLUS an extra 25 as a
little buffer zone. That will stop the actors speaking instantly and will give
the camera time to swoop in. So if your promo begins promoTim<1100 (as
most do) then the length should be entered as 1125. The promoRole
variables at the end are the most important of all because they determine
which characters in the match will be used as actors. 1 means that the
actor will be from the FIRST side of the match-up (usually the star player in
"Career" mode), whereas 2 means they will be from the OPPOSING side
(usually the star's opponent). By making both actors 1 or 2, you
can arrange it so that two people from the same team will speak to one
another. Setting promoRole(1)=1 and then promoRole(2)=1 will
ensure that both members of Team A will talk to one another. Meanwhile, -1
denotes that the referee of the match should become an actor. This is very
rare, however! As I said, simply copy an existing promo if there are any
doubts...
Script
Library
At this point the game has
everything it needs to use the promo, but you don't have everything you need to
access it in the menu screens. In order to make your new promo show up in the
match setup options, you'll have to scroll down to the "Promo Library" section
of Promos.bb - which should be directly below the "Promo Data" you just
added. Here you need to make a correctly numbered entry to one of the
categories. If the last entry you see is promoLib(119)=97 (as in the
above example) then the next entry should be promoLib(120)= and the
unique ID of your promo. You'll notice that the "Relationships" category is
quite overpopulated with only 5 slots left, so you should probably pile most of
your custom promos into the "Arguments" section...
Number Of
Promos
One final thing you need to do
is open up Values.bb and scroll down to the "Matches" variables that are
stored there. Here you'll find a no_promos variable that keeps track of
how many promos there are in the game. Simply update it to match however many
there are now. You may also find that your new promo is "locked" by default,
since it cannot possibly have been encountered in the "Career" mode. All you
have to do is employ the cheat that unlocks ALL promos and yours will be among
them! Simply head to the match setup screen where you select a promo for an
"Exhibition" and press ALT and P. Your promo should then be
available in the relevant category and you can set about loading it yup to check
that it works OK. The chances of it being perfect first time are pretty slim, so
you can expect to polish it up over 3 or 4 sessions...
Booking The
Angle
The most exciting thing about
creating your own promo is that you can also weave it into the fabric of the
"Career" mode! This is advanced stuff, however, so you may want to tread
carefully. You first have to load up Career.bb and then scroll down to
the AssignPromo( ) section. This is where the game looks before loading
up each match to see if it should add a storyline into the mix. Some of the
circumstances that surround this will be quite complicated, so you shouldn't
worry about it too much at this early stage. However, if your promo is quite
versatile and will make sense under any circumstances, it's perfectly easy to
give it a chance of being used. You simply enter the chunk of code highlighted
above, making sure that matchPromo=?? refers to the promo in question.
The randy stuff is the odds of it being used. I've essentially told the
game to pick a random number between 0 and 20. If that number happens to be 1 or
less then the storyline will be used. Theoretically, this means there is a 1 in
10 chance of it happening each time. You can make the storyline more or less
likely by playing around with those figures...
Post-Match
Consequences
The above example allows us to
decide on a promo BEFORE a match. If you'd like to trigger your storyline AFTER
a match then we have to come to Aftermath.bb and scroll down to the
BookAngles( ) section. This is a similar process, but instead of setting
matchPromo to your custom promo we find a date in the future and book it in
advance. If a storyline is already on the calendar in this manner then the game
won't bother using the AssignPromo( ) function we talked about earlier.
It's just as easy to add a basic one of these. You simply enter the piece of
code highlighted above, but note that the variable is now gamPromo(date)=??
instead of matchPromo=??. This is a reference to your character's
schedule in the future rather than today. If you'd like to ensure that the
storyline is also acted against the same opponent (i.e. a rematch), you should
add the equation gamOpponent(date)=gamOpponent(gamDate) or
pChar(matchLoser). Notice that gamDate refers to the opponent you
were given TODAY, whereas date refers to next time. These post-match
angles tend to be highly circumstantial and can get very complicated. See how
some of the others were programmed if there are any doubts...
Copyright © MDickie 2000 - 2010
|