Happy Thanksgiving 2021 from SEN!   Nov 25 2021, 11:47 pm  

Happy Thanksgiving to all our members on behalf of the staff here at SEN.
We hope you all have a safe and wonderful binge in celebration of the harvest.

Thanksgiving? At this time of year, at this time of day, at this part of the country, localized entirely within your kitchen?

Posted by: Roy

Maporino! 2021 - A Celebration of Mapmaking   Feb 26 2021, 11:27 pm  
Maporino! 2021 (the exclamation point is mandatory, or so I've been told) is a community event organised by the youtuber Jayborino, where content creators hailing from various RTS titles can participate.
Each person/team can submit one scenario and have it be showcased by Jayborino, as well as potentially various members of the community who can decide to participate in the event.

Starcraft: Broodwar - both 1.16 and Remastered - is one of the several strategy games showcased throughout the event, and therefore I thought that it could be nice to encourage some of the SEN folks to participate.
I know we have many campaign-makers, as well as people who made awesome RPG maps, and I think that they all deserve to be seen. This is an opportunity to try and grow out the widely understood mapmaking community, even if it's just by a little.

Should one decide to submit a map, it has to be a single scenario - but it can be bundled with a mod, if that's required, it can be an EUD map, and it can make use of already-existing assets; it doesn't have to be made from scratch, it can even be something you made a while ago, as long as it's otherwise eligible.
Keep in mind that this will be just a showcase; not and in-depth review, and so maps that go on for more than an hour would be unlikely to be shown in their entirety.

Entries can be submitted up until Friday April 9th, 2021 11:59 PM EST, through the Jayborino Discord/email - https://discord.gg/WxwUJYC

Watch this video for more details -

Happy Thanksgiving 2020 from SEN!   Nov 26 2020, 7:58 pm  

Happy Thanksgiving to all our members on behalf of the staff here at SEN.
We hope you all have a safe and wonderful binge in celebration of the harvest.

No one cared who I was until I put on the mask.

Posted by: Roy

Happy Thanksgiving 2019 from SEN!   Nov 28 2019, 10:19 pm  

Happy Thanksgiving to all our members on behalf of the staff here at SEN.
We hope you all have a safe and wonderful binge in celebration of the harvest.

There's nothing in the world more powerful than a good story. Nothing can stop it; no enemy can defeat it. And who has a better story than Mr. Giblets the Turkey?

Posted by: Roy

Recently, I had the wonderful opportunity to ask a few questions about Starcraft's AI to the very man responsible for creating it, Bob Fitch - a really amazing guy, and apparently the man who was resposible for writing all of the campaign scripts, so you're probably already familiar with his work :-)
The talk was very informative and even presented some new details we had no idea about in the AI modding community, and I think it's worth reading for all modders. In some parts we were writing simultaneously so it might look a little messy, but I'm hoping it won't be too much of a problem ^_^

Nekron: Did you & the AI team write campaign scripts (especially attacks) for all of the missions, or was Scenario Design mostly responsible for that?
If you did, could you tell a little bit about how that process looked like? Did you guys just wing it or was it a little more nuanced than that :P

Bob Fitch: There was no AI team. I was it. :) I coded the systems, designed the strategies, wrote the scripts, etc.
Yes, I did all the campaign work except for making the maps. Level designers would use the editor to make the maps and put units on them, and then they'd give the maps to me with some basic ideas like, "We want them to attack down this path, but sometimes go over here. Don't attack expansions. Use air units more than usual." I'd then write campaign scripts for all difficulty levels and strategies. Feel free to add follow-up questions now that you know the basic idea of how I did it.

N: Follow up question: Since I'm working on a campaign rework that encompassess all original campaigns, I do know how much work it is to go through so many missions and come up with working script ideas that are meaningfully different from each other. What is something that would actually be super interesting for me to hear is, did you try to give AIs representing a given faction (for example, Mengsk in xT5 and Mengsk in xZ10) some kind of a personality, where it'd behave in similar ways, or was it not a consideration beyond what you were told by level designers?

BF: The personalities of the different AIs were mainly in what units they built and used, and how aggressive they were in attacking or defending. It was very simple.

N: Regarding your comment about level designers wanting the AI to not attack expansions - I find it a really interesting remark to make, since there is exactly one mission that has an otherwise unused flag set through an opcode called target_expansion - if you remember by any chance, is that related?

BF: Yea, it's probably related. The designers wanted to severely limit the damage done to player expansions, while at the same time in melee I wanted to almost exclusively target expansions.

N: Some of these commands are really obscure, and never used - for example, implode, a command that specifically makes small isolated pockets of pathable terrain defended, or eval_harass, a command that can only be used to bypass enemy defenses (in the simplified way of looking for regions with no enemy strength) - if you remember, can you tell us what were some ideas for how you'd use stuff like this?

BF: I don't really remember the specifics. The term 'eval_harass' is familiar, but I really don't remember why anymore.
I know I did quite a few experiments and didn't always remove the code after deciding I didn't need the opcode yet.

You might find this interesting... I searched the code for 'harass' and found this enum of states I used in my attack routine.


And this is the comment in the code about the enum:

All ep areas begin MODE_INACTIVE. When a zone is acquired it is switched to
MODE_GUARD. From there it goes to MODE_DEFEND if it ever gets attacked. If
attacked and outnumbered then the zone is "lost" so it goes to MODE_LOST.

An adjacent MODE_GUARD zone would switch to MODE_STAGING with the MODE_LOST
zone as the target. MODE_STAGING waits for enough troops to take an enemy
zone and then attacks. The attacked zone goes to MODE_DEFEND and the staging
zone switches back to MODE_GUARD.

The MODE_HARASS_STAGE acts just like MODE_STAGING except that when it's ready
to attack it goes to MODE_HARASS_ATTACK. That mode is like MODE_DEFEND except
that it never retreats when outnumbered and never asks for additional troops.
If a harass attack ends in victory then the new zone goes to MODE_GUARD just
like any other zone.

N: We call those region states now! You can find them described by reverse engineering ( so probably less accurately than here ) on page 16 of the AI doc, under "Region States", it's amazing how different the intentions behind them were compared to what we guessed based on their behaviour lol

BF: I looked. Thanks for the link. Cool info. Almost correct too. ;)

N: AI modding requires a lot of tools that were only more or less finalized in the recent two or three years for the modding community! Did you have any AI-specific debug tools when you worked on the project, or did you just test it with cheats/by playing and only find issues that way?

BF: I programmed lots of cheats and visualization modes. I could look at what the units were thinking about doing, what they wanted to build, and where. I could see what they valued, what they wanted to attack, how much time they were spending on tasks, etc. I don't remember if those cheats are still in there, buried and hidden, or if the code gets compiled out in Release builds.

N: Starcraft AI is now considered the best AI base out there for modding (and I'm not talking about BWAPI), with it's huge flexibility, a plethora of specialised commands and the ease of adding new ones if needed, as well as multiple AI systems (defense, target selection) that are smart enough to feel smart and yet simple enough to not screw up constantly (which alot of modern RTS AIs tend to do, like Starcraft 2 or RA3) - what was it like to develop a toolkit for script-writing that's essentially uncontested 20 years later? Was it ever a major consideration, how many tools you've created for campaign development?

BF: I didn't know it was considered the best AI base/framework.
It feels great. :)
I was originally writing the StarCraft AI with the intention of having users create their own AIs that could be pit against other people's custom AIs. Time constraints caused me to scale back that plan, though I tried it again in StarCraft 2. (Although I was the AI programmer for only the first 50% of StarCraft 2. It was ultimately written/finished/released by a different programmer, and I did no AI in the expansions. I was the engineering director for Hearthstone when the expansions were being made.)
Honestly, I was just writing the SC and BW AIs on an "as needed" basis by the time I was deep into it. I'd try to make the AI smart, realize I needed a new opcode, add it as simply as I could, and repeat. The same was true for campaigns. I wrote special case opcodes for missions, like "junkyard dog" for example. That opcode was for a specific mission, though after I'd write a new opcode I would then try to find ways to reuse the code in other places.

N: I think that even if the original idea of making it possible for people to make their own custom AIs didn't work out because of time constraints, it definitely lives on now. ASC3 (which is what we call the SCAI language nowadays, based on the first working editor) is an easy to learn language that makes campaigns and custom maps insanely customizable with little effort, and can make for some truly amazing sequences and campaign scenarios if you're willing to spend time learning it. Huge thanks for all the thought you've put into the original AI.

If you wrote the language for SCAI scripting today, how different would it be?

BF: I would probably not write a language for AI these days. I'd use lua and write a library of routines that could be called to do most of the heavy lifting, that was extremely short and simple AI "scripts" could play the game with minimal changes to handle many different strategies and campaign needs.

N: Any cool anecdotes on SCAI or the dev process you can share?

BF: I'll always remember the look on Chris Metzen's face one day. I was programming the AI all day and we were in crunch mode so this was probably at the end of a 30-hour shift or something crazy. Instead of finishing and going home to sleep like a sane person, I decided I wanted to PLAY the game before I went home. (Looking back, this is also the moment I knew the game would be a hit. I had just worked 30+ hours and instead of sleeping I wanted to play it.) I started up an AI game and got going. It was an amazing game. It was back and forth. I was almost dead and then I pulled myself from the fire and started turning the tables. It was so exciting that I was cackling. I didn't realize I had let my tongue hang out of my mouth a little too, but because of that I started drooling. Before I could pull in my tongue and close my mouth and wipe my cheek, I look up and Chris Metzen is standing in my office doorway. Staring at me. Staring. Still staring. Yep… fun times.

I'm not sure what you call it, but I had an object called the "Captain" that was responsible for attacking.
Captains had fields like: current EP area (trivia: that's for Equal Potential and was coined by the pathing programmer), target EP area, owning player, mode, priority, action, delay, flags, stage, desired force strength for ground and air, current ground and air strength, total ground and air strength (counts troops that are on the way but have not arrived yet), visible enemy ground and air strength, a list of priority targets to kill on ground and in air, the group's "leader" pointer (usually a slow ground unit, choses again if killed), and the current detector unit being used to find cloaked things.

I looked up eval_harass and it's a boolean function that returns true if ready to attack, while also calculating a desired target. It returns true if the estimated AI attack power is greater than the target's estimated power at the target EP area. It only needs more vs air OR more vs ground power to return true.

N: Looking at it all I think you're just referring to what we'd call AI regions, but they're used for more than just attacking, they're also responsible for everything defense-related and many other AI functions.

The most talented programmer that works on this [Neiv] told me about some debug strings like SAI_Captain, but my understanding of attacking is that a region is picked, units congregate around the central point in the region, there is a attack list composed of units from attack_add/prep_down/etc, and after the attack is filled successfully (with some caveats, such as units that are in combat already don't count) or after 120(melee)/180(campaign) game seconds (1920/2880 frames) have passed(or less with quick_attack...), the attack launches and picks a random target that depends on script class.

Some more details come in campaigns and melee but they're usually not super well described.

BF: Above... the melee AI does try to attack close targets. The campaign AI randomly chooses a target EP area after doing a calculation of "what are all the ways I can get to there from here" thus causing the attacks to come in from different directions instead of how melee is always hitting the same frontal assault spots. Trivia: The routine that calculates the different possible attack paths I called "The cholesterol algorithm" Long story...

N: Last question (I promise) [Neiv] wanted to ask - did you ever develop the difficulty idea more, was it planned out beyond just making a couple stray commands, or did it never take off? (There are 2 or so commands that do different things based on an unused difficulty variable, easy_attack and if_dif)

BF: Difficulty levels were planned from the beginning, but mostly we accomplished difficulty levels by reducing attack force sizes and attack frequencies. There are a few extra tactical changes too, like normal AI tries to focus fire down injured units. The easy AI does not.

easy_attack is actually a "do this attack IF the difficulty setting is EASY" or more accurately i think it's "use this unit in the attack if set to easy" which let me change the units being used on easy (probably in melee, maybe not in campaigns, can't really remember)

if_dif is a boolean test, "if the difficulty is ____ then jump" and the parameters determine how it's handled, three params: comparison type (byte), diff level (byte), jump location (word)
type 0 is if diff < param then jump
else if diff > param then jump

After this Bob had to go, and we ended the interview. Thanks for your time, Bob! ^_^

Click to view video

English subtitles for the video taken as-is for those who prefer to read or otherwise can't watch the video (highlighted sections related to mapmaking/UMS):
Hey everyone, it's Grant from the StarCraft Remastered Team with a quick update.

We are excited to announce that a Public Test Realm is on the way. PTR will allow us to work with you to test out new features and server updates before they go live. For example, StarCraft currently ignores keyboard input if the mouse is held down we've talked a lot about this on the forum with you. We know that feedback from the community is asking us to change this, so one of the first updates we're going to try on PTR is our proposed answer to this problem. And we're excited for you, our community, to help us test this out.

We'll also be testing changes to our matchmaking algorithm. We are hoping this will allow players with a good connection to Korea, to be able to match more often with Korean players.

Last year we created a thread on the forum listing many of the issues we intend to prioritize and address in 2019. Your feedback on this thread has been invaluable and has helped us to prioritize our goals for the year. We've already released several items from this list, and many more are currently in the works.

I'm also happy to announce that "64-BIT" is ahead of schedule, and we're moving ever closer to being able to release an “OPT-IN” version. Later this year, 64-bit will be the only option for Mac users as I talked about at BlizzCon and at some point, in the future, that will be true for Windows as well.

We will soon be transitioning our community forums to the same forums that other Blizzard games are already using. We're excited about this change, because it offers more features and better tools to help us track and understand your feedback.

Lastly, we are all looking to an amazing year of back to back pro StarCraft competition, and we are already off to such a great start with LAST becoming the first ever KSL and ASL champion.

To wrap this up, let me say we have some very exciting things in the pipeline for the year. Some of you already know about like group matchmaking and some we're not quite ready to announce yet. But stay tuned! That's all for now. We love hearing from you, so please keep talking with us on the forums. From the whole team, thanks for watching. We're all very excited for a great year ahead for StarCraft Remastered!

Helpful links and references:
Posted by: Roy

Happy Thanksgiving 2018 from SEN!   Nov 22 2018, 8:15 pm  
Click to view video

Happy Thanksgiving to all our members on behalf of the staff here at SEN.
We hope you all have a safe and wonderful binge in celebration of the harvest.

You have my respect, bird. When I'm done, half of all turkeys will still be alive. I hope they remember you.

Posted by: Roy

[03:37 pm]
Slyence -- Wasn't there a saying "All your minerals are belong to me."?
[12:16 pm]
Slyence -- If my phone wasn't maxed out on storage from call of duty I'd download the app.
[08:03 am]
O)FaRTy1billion[MM] -- pinning is smart tho
[08:03 am]
O)FaRTy1billion[MM] -- the topic was already in that forum tho lmao
[07:42 am]
NudeRaider -- *should
[07:42 am]
NudeRaider -- http://www.staredit.net/topic/18388/ There. Hopefully that'll help in the future. It really shout have its own menu item or at least be under site. But since that's not happening I think this is the next best thing.
[07:30 am]
NudeRaider -- Ultraviolet
Ultraviolet shouted: lil-Inferno w
[06:29 am]
Ultraviolet -- lil-Inferno
lil-Inferno shouted: "That's so dumb" "u"
[02:55 am]
zsnakezz -- omicron purse fool
Please log in to shout.

Members Online: Roy, O)FaRTy1billion[MM]