Happy Thanksgiving 2022 from SEN!   Nov 24 2022, 1:15 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.

We do a little gobbling.

Announcing the new Thanksgiving Battle Pass! Log in to Overweight Watch 2 and earn free rewards just by eating!

As part of our Black Friday special, existing SEN members can get 10% off the Battle Pass through November 28th, 2022. That's right, you can upgrade your OWW2 Battle Pass to premium for only 900 Vespene Gas, which includes many additional rewards!

Some of these exclusive rewards include:

  • Foot Turkey™ skin
  • Queen Elizabeth II memorial coin
  • Twitturkey player icon (a 44,000,000,000 Vespene Gas value!)
  • Bonus minerals
  • ...and more!

A special congratulations to community member l)ark_ssj9kevin for winning the Thanksgiving art competition! As we are not legally allowed to put it in the premium pass a token of our appreciation, the winning skin will be available on the free tier of the Battle Pass.

Stay hungry, StarEdit Network!
Posted by: Roy

Maporino! 2022   Feb 3 2022, 1:02 am  

Calling all single-player mappers of SEN: The annual celebration of mapping is back!

It's the 6th Annual Maporino!, the yearly single-player map showcasing event!
Last year, Jayborino showcased a whopping 57 maps (15 of them Starcraft maps)!
Use Maporino! as an opportunity to make a map and submit it to be showcased!

Check out the video description for more info about rules and how participation works!
Maporino! is organized through the Jayborino Discord. Please refer to the server rules when joining.

Best of luck to all participants!

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! ^_^

[03:25 am]
RIVE -- SEN sin taxes be BS
[09:59 pm]
Ultraviolet -- No matter what anyone says, you're still a winner! :P
[09:58 pm]
Ultraviolet -- Oof.
[2023-3-27. : 3:53 am]
jjf28 -- memes
[2023-3-26. : 5:11 pm]
KroznadeSC -- Didn't see the color selection on the left XD
[2023-3-26. : 5:10 pm]
KroznadeSC -- hehe, I managed to on broodwarmaps.net XD
[2023-3-26. : 3:21 pm]
Vrael -- <div class="TakeOverAsAdmin" class="threeturtlesinastraightjacket" class="Boppin"> Hi Guys! Nothing inconspicuous here!</element>
[2023-3-26. : 6:54 am]
NudeRaider -- KroznadeSC
KroznadeSC shouted: oh my god sorry having problems typing
you mean having problems cheating your way into a shoutbox color :P
[2023-3-26. : 4:56 am]
Dem0n -- meme
[2023-3-26. : 3:34 am]
KroznadeSC -- :wob:
Please log in to shout.

Members Online: Roy, C(a)HeK, Revenant