wc3campaigns
WC3C Homepage - www.wc3c.netUser Control Panel (Requires Log-In)Engage in discussions with other users and join contests in the WC3C forums!Read one of our many tutorials, ranging in difficulty from beginner to advanced!Show off your artistic talents in the WC3C Gallery!Download quality models, textures, spells (vJASS/JASS), systems, and scripts!Download maps that have passed through our rigorous approval process!

Go Back   Wc3C.net > Warcraft III Modding > Project Discussion > Map / Campaign Projects
User Name
Password
Register Rules Get Hosted! Chat Pastebin FAQ and Rules Members List Calendar



Reply
 
Thread Tools Search this Thread
Old 02-25-2015, 01:12 PM   #31
iNfraNe
PhD
 
iNfraNe's Avatar


Cinematics Moderator
 
Join Date: Dec 2003
Posts: 2,283

Submissions (7)

iNfraNe is just really nice (266)iNfraNe is just really nice (266)iNfraNe is just really nice (266)iNfraNe is just really nice (266)iNfraNe is just really nice (266)

Approved Map: Mortar Ball

Send a message via MSN to iNfraNe
Default

The order is the same as for function calls. The trigger goes first, then the main loop continues. The trigger, however, does not add to the op limit of the main loop.
__________________
Ever so slightly active.
Table:
Past Projects:
The Spirit of Vengeance (Cinematic, Blizzard contest winner)
Elimination Tournament
Mortar Ball
iNfraNe is offline   Reply With Quote
Sponsored Links - Login to hide this ad!
Old 02-25-2015, 01:29 PM   #32
Rao Dao Zao
www.raodaozao.net
 
Rao Dao Zao's Avatar


MDL & Resource Moderator
 
Join Date: Aug 2003
Posts: 2,511

Submissions (27)

Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)

Approved Map: When the Freedom Slips Away

Send a message via MSN to Rao Dao Zao
Default

Quote:
Originally Posted by iNfraNe
The order is the same as for function calls. The trigger goes first, then the main loop continues. The trigger, however, does not add to the op limit of the main loop.
Awesome! I will work this into the system.

Apparently I "must spread some Reputation around before giving it to iNfraNe again", so you'll have to make do with my love for now. I knew there was a reason I posted a thread here!
__________________

Last edited by Rao Dao Zao : 02-25-2015 at 01:29 PM.
Rao Dao Zao is offline   Reply With Quote
Old 02-25-2015, 01:35 PM   #33
Anitarf
Procrastination Incarnate


Development Director
 
Join Date: Feb 2004
Posts: 8,190

Submissions (19)

Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)

2008 Spell olympics - Fire - SilverApproved Map: Old School Alliance TacticsHero Contest #2 - 3rd PlaceSpell making session 2 winner

Default

You could also use ExecuteFunc, it is slower than a TriggerEvaluate but in this context that doesn't matter at all. Just make sure that if you ever end up optimizing the map you select the option to preserve function names.

Of course, the easiest optimization you can do is try increasing the loop limit until the whole thing breaks, then use the last workning value with a sufficient safety margin (I'm not sure if you already did this or just chose the limit arbitrarily).
__________________
Anitarf is offline   Reply With Quote
Old 02-25-2015, 01:50 PM   #34
Rao Dao Zao
www.raodaozao.net
 
Rao Dao Zao's Avatar


MDL & Resource Moderator
 
Join Date: Aug 2003
Posts: 2,511

Submissions (27)

Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)

Approved Map: When the Freedom Slips Away

Send a message via MSN to Rao Dao Zao
Default

Quote:
Originally Posted by Anitarf
Of course, the easiest optimization you can do is try increasing the loop limit until the whole thing breaks, then use the last workning value with a sufficient safety margin (I'm not sure if you already did this or just chose the limit arbitrarily).
Yeah, I did that already -- started off high and decreased it in chunks until it started working. But if doing 3600 individual TriggerExecutes means I can just stop caring I'd rather do that -- there's always the risk that, as I expand elements of the system, the arbitrary limits will need to keep being reset. Whereas, if one iteration is always safely contained, I can add extra bells and whistles without needing to worry.
__________________
Rao Dao Zao is offline   Reply With Quote
Old 02-25-2015, 07:03 PM   #35
iNfraNe
PhD
 
iNfraNe's Avatar


Cinematics Moderator
 
Join Date: Dec 2003
Posts: 2,283

Submissions (7)

iNfraNe is just really nice (266)iNfraNe is just really nice (266)iNfraNe is just really nice (266)iNfraNe is just really nice (266)iNfraNe is just really nice (266)

Approved Map: Mortar Ball

Send a message via MSN to iNfraNe
Default

Quote:
Originally Posted by Rao Dao Zao
Awesome! I will work this into the system.

Apparently I "must spread some Reputation around before giving it to iNfraNe again", so you'll have to make do with my love for now. I knew there was a reason I posted a thread here!
Haha, damnit! With an undead forum, rep doesn't work so well!

But your love is fine too :)

Btw, you've completely inspired me with this random map generation stuff. Maybe I won't even stop 'mapping' after elim coop :O
__________________
Ever so slightly active.
Table:
Past Projects:
The Spirit of Vengeance (Cinematic, Blizzard contest winner)
Elimination Tournament
Mortar Ball
iNfraNe is offline   Reply With Quote
Old 02-26-2015, 09:04 AM   #36
Rao Dao Zao
www.raodaozao.net
 
Rao Dao Zao's Avatar


MDL & Resource Moderator
 
Join Date: Aug 2003
Posts: 2,511

Submissions (27)

Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)

Approved Map: When the Freedom Slips Away

Send a message via MSN to Rao Dao Zao
Default

Quote:
Originally Posted by iNfraNe
Btw, you've completely inspired me with this random map generation stuff. Maybe I won't even stop 'mapping' after elim coop :O
Woah! Don't do anything too crazy now.

The bad news is that in the transfer to trigger-style some of my functions have started to crash WC3 with no error message. Not sure why, the line-clearing stuff (Bresenham's Line Algorithm) was working perfectly before and I didn't actually touch its internals in this rearrangement.

The good news is that the parts that are running successfully are now running in the blink of an eye. I might even be able to do larger maps at this rate, so I can comfortably fit in multiple quests...!
__________________
Rao Dao Zao is offline   Reply With Quote
Old 02-26-2015, 09:19 AM   #37
iNfraNe
PhD
 
iNfraNe's Avatar


Cinematics Moderator
 
Join Date: Dec 2003
Posts: 2,283

Submissions (7)

iNfraNe is just really nice (266)iNfraNe is just really nice (266)iNfraNe is just really nice (266)iNfraNe is just really nice (266)iNfraNe is just really nice (266)

Approved Map: Mortar Ball

Send a message via MSN to iNfraNe
Default

That's great news! Now stop making excuses and include water / hills! ;)

I'm sure you'll figure out the crashes soon enough.
__________________
Ever so slightly active.
Table:
Past Projects:
The Spirit of Vengeance (Cinematic, Blizzard contest winner)
Elimination Tournament
Mortar Ball
iNfraNe is offline   Reply With Quote
Old 02-26-2015, 12:33 PM   #38
Rao Dao Zao
www.raodaozao.net
 
Rao Dao Zao's Avatar


MDL & Resource Moderator
 
Join Date: Aug 2003
Posts: 2,511

Submissions (27)

Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)

Approved Map: When the Freedom Slips Away

Send a message via MSN to Rao Dao Zao
Default

Quote:
Originally Posted by iNfraNe
That's great news! Now stop making excuses and include water / hills! ;)
:<

Quote:
Originally Posted by iNfraNe
I'm sure you'll figure out the crashes soon enough.
Seems like it's still sort of op-limit related; if I add a few choice TriggerSleepActions back in, it gets further before falling out.

Which is fine by me; if it ends up taking 5 seconds rather than half or less, that's still miles better than 20.

So now I have two layers of speed limiting:
- One layer per generator section that causes the same trigger to be run again after a certain threshold
- One global layer that causes a TriggerSleepAction after a certain threshold (this threshold is changed per generator section, as some do more work than others)

And the result is...

1 second

I tihnk I've screwed up the detructible and wild animals printers along the way, but these should be straightforward enough to fix since I actually understand how they work.
__________________

Last edited by Rao Dao Zao : 02-26-2015 at 12:59 PM.
Rao Dao Zao is offline   Reply With Quote
Old 02-26-2015, 01:43 PM   #39
iNfraNe
PhD
 
iNfraNe's Avatar


Cinematics Moderator
 
Join Date: Dec 2003
Posts: 2,283

Submissions (7)

iNfraNe is just really nice (266)iNfraNe is just really nice (266)iNfraNe is just really nice (266)iNfraNe is just really nice (266)iNfraNe is just really nice (266)

Approved Map: Mortar Ball

Send a message via MSN to iNfraNe
Default

I think I remember that real infinite loops (as in, trigger a executes trigger b, which in turn executes trigger a) tend to crash warcraft III, so perhaps there was/is going on something which made that happen.

Be careful using TriggerSleepAction together with TriggerExecute tho. Look at this example:
Code:
main:
   call TriggerExecute(b)
   call BJDebugMsg(message)

trigger b:
set message = error
call TriggerSleepAction(0)
set message = correct
This would print the message "error", because once trigger b reaches the wait, the main code continues! This might lead to "desyncs" in your global variables!

I'm glad to hear that we're now at 1 second tho :)
__________________
Ever so slightly active.
Table:
Past Projects:
The Spirit of Vengeance (Cinematic, Blizzard contest winner)
Elimination Tournament
Mortar Ball
iNfraNe is offline   Reply With Quote
Old 02-26-2015, 02:44 PM   #40
Rao Dao Zao
www.raodaozao.net
 
Rao Dao Zao's Avatar


MDL & Resource Moderator
 
Join Date: Aug 2003
Posts: 2,511

Submissions (27)

Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)

Approved Map: When the Freedom Slips Away

Send a message via MSN to Rao Dao Zao
Default

Quote:
Originally Posted by iNfraNe
This might lead to "desyncs" in your global variables!
Hopefully not going to run into that since it's all still in sequence -- there's only ever one generator trigger running at a time, and each one triggers either itself again or the next in the sequence. The global speed limit will pause the currently executing segment, which I should be able to guarantee is the only part of the generator executing at any time.

Though the errors I saw with the destructible printer were suggestive of skipping over a row or two, so there might be an element of this somewhere...

Whew, got it all working again. Bumped the map size up to 96x96 (92x92 grid, accounting for edge space) and it's taking 7-9 seconds to generate, which I think is quite fine -- that's one line of intro dialogue and that will be just perfect.
__________________

Last edited by Rao Dao Zao : 02-26-2015 at 08:01 PM.
Rao Dao Zao is offline   Reply With Quote
Old 03-17-2015, 01:05 PM   #41
Rao Dao Zao
www.raodaozao.net
 
Rao Dao Zao's Avatar


MDL & Resource Moderator
 
Join Date: Aug 2003
Posts: 2,511

Submissions (27)

Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)

Approved Map: When the Freedom Slips Away

Send a message via MSN to Rao Dao Zao
Default

Has it been long enough for me to do a bump?

I am still working on this! I even did another blog about advances in the scenario generator, around the concept of "hotspots" and how that helps me to create connected spaces for objectives. Long story short, a "hotspot" is a clearing that I enforce must be clear and contains an objective or other point of interest.

Was working on shop distribution for a bit there, allowing multiple shops to occupy the same "hotspot" -- eventually, I would like to expand this to spawn villagers and other random buildings around shops to form towns or at least camps. Quest givers can also occupy these "civilian" hotspots, I just need to refine how I might distribute them effectively so they don't block paths or overlap but do congregate around the focal point of the shop in a plausible way.

Otherwise, I am now working on getting multiple quests into the system. I've only got two templates at the moment, and I'm going to keep to that for now -- my objective is to extract out all the common, repeatable functions that make up a quest template so that it'll be as easy as possible to vary each template within itself and to add new templates.

Templates require several triggers to be executed at different stages of the scenario generator so I don't expect there to be more than one instance of a template in a particular level; maybe if I get clever with my variables I could change that, but on the other hand, if I make a big enough template selection to choose from this should guarantee an element of variety of objectives.

Also fiddling around with shops and things. Each shop will have a distinctive characteristic in what it sells:
  • Barman: guaranteed to sell health and mana potions and booze
  • Bizarre Bazaar: has a random selection of up to 4 consumables (single-use stackable scrolls, wands, runes etc.)
  • Lighthouse/Treehouse/Trading Outpost/etc: sells up to 2 swords and 2 shields of your current appropriate level, and maybe 1 sword and/or 1 shield of the next level up
  • Anti-Matter Refinery: only appears in the underground, guaranteed to sell dark-themed items
  • Razor-Flower: only appears in the desert, you can pick a razor flower weapon but doing this will horribly poison you for a period of time, so be careful!

There are of course more shops, and I intend to expand the shop system to also include randomise "points of interest" -- maybe Phat Lewt altars, decorative monuments, other adventurers camped out, I don't really know yet.

So many things to make! It's still a bit boring to play right now because the map area is quite big and there isn't any content beyond spawned creeps and the test quests. It's quite possible to complete a quest before you've actually acquired it, too, so that's not helping me make the quest templates more generic. (I think I will have to add some kind of magnet that ensures the player's starting hotspot is one with a quest giver in it.)

Plus, I'm harbouring the idea that I might do alternative dialogue based on which hero character you pick. This might make things a bit too ridiculous though, so it's still a bit up in the air...
Attached Images
File Type: jpg underground.jpg (470.9 KB, 27 views)
__________________

Last edited by Rao Dao Zao : 03-17-2015 at 02:29 PM.
Rao Dao Zao is offline   Reply With Quote
Old 03-20-2015, 01:17 AM   #42
Kino
User
 
Kino's Avatar
 
Join Date: Apr 2008
Posts: 570

Submissions (8)

Kino will become famous soon enough (69)Kino will become famous soon enough (69)Kino will become famous soon enough (69)

Default

Interesting stuff

Quote:
Plus, I'm harbouring the idea that I might do alternative dialogue based on which hero character you pick. This might make things a bit too ridiculous though, so it's still a bit up in the air...

How different are these alt dialogues intended to be?
__________________
Kino is offline   Reply With Quote
Old 03-20-2015, 10:30 AM   #43
Rao Dao Zao
www.raodaozao.net
 
Rao Dao Zao's Avatar


MDL & Resource Moderator
 
Join Date: Aug 2003
Posts: 2,511

Submissions (27)

Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)Rao Dao Zao has a brilliant future (822)

Approved Map: When the Freedom Slips Away

Send a message via MSN to Rao Dao Zao
Default

Quote:
Originally Posted by Kino
How different are these alt dialogues intended to be?
As different as I can make them, but obviously dialogue has never been my strong point so we'll have to see.

It depends a lot on how I can fit the responses around each other. To do it "properly" I'd want to modify the entire dialogue for a particular quest, so the quest giver says different things to different characters too, but I think that might be too much effort.

More likely, I will have the quest givers always say the same things, with the heroes replying in their own ways. That would kind of limit the level of banter, though, so it's still up in the air.

The practicalities are pretty unhealthy for this -- I reckon I'll have an array of all cinematic strings that is populated after character selection. Each cinematic won't have its dialogue hard-coded, but will draw from known indices in the array; this is why I can't have the conversations mutate too much, they must have a known sequence of speakers. (Obviously in C# land there would be some kind of conversation object that would contain all this stuff and variably feed it into the cinematic player.)
__________________
Rao Dao Zao is offline   Reply With Quote
Old 03-21-2015, 11:46 AM   #44
Anitarf
Procrastination Incarnate


Development Director
 
Join Date: Feb 2004
Posts: 8,190

Submissions (19)

Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)

2008 Spell olympics - Fire - SilverApproved Map: Old School Alliance TacticsHero Contest #2 - 3rd PlaceSpell making session 2 winner

Default

Quote:
Originally Posted by Rao Dao Zao
(Obviously in C# land there would be some kind of conversation object that would contain all this stuff and variably feed it into the cinematic player.)
Or, you know, in vJass land. :P
__________________
Anitarf is offline   Reply With Quote
Old 03-21-2015, 01:46 PM   #45
iNfraNe
PhD
 
iNfraNe's Avatar


Cinematics Moderator
 
Join Date: Dec 2003
Posts: 2,283

Submissions (7)

iNfraNe is just really nice (266)iNfraNe is just really nice (266)iNfraNe is just really nice (266)iNfraNe is just really nice (266)iNfraNe is just really nice (266)

Approved Map: Mortar Ball

Send a message via MSN to iNfraNe
Default

Back to the future!
__________________
Ever so slightly active.
Table:
Past Projects:
The Spirit of Vengeance (Cinematic, Blizzard contest winner)
Elimination Tournament
Mortar Ball
iNfraNe is offline   Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off


All times are GMT. The time now is 09:54 PM.


Affiliates
The Hubb The JASS Vault Clan WEnW Campaign Creations Clan CBS GamesModding Flixreel Videos

Powered by vBulletin (Copyright ©2000 - 2019, Jelsoft Enterprises Ltd).
Hosted by www.OICcam.com
IT Support and Services provided by Executive IT Services