Nav: (Display/Hide) - Home - About the Author / this page

Current Projects: Americana Engine (Game Engine Development)

Friday, March 15, 2013

Starcraft 2: Heart of the Swarm - Speedrun Version

An attempt at completing each mission as fast as possible on Normal Difficulty. Unlike Wings of Liberty, there isn't an achievement for doing a speedrun of the campaign. (Although there are more achievements for completing certain levels under a certain timeframe, listed under the 'Mastery' category, they won't be covered here.) Too many people were doing playthroughs on Hard / Brutal and I wanted to try a different approach.

Replays will be published somewhere between now and by the end of the month, and this page will be updated / links will be posted as they are uploaded.

Notes:

  • All of the maps are played using Master Archives game mode, since it allows me to configure units to work the best for specific maps without the need for multiple playthroughs, and some levels are difficult or impossible to speedrun otherwise before that point.
  • Demos were made on WinXP, the sound quality is reduced a bit. There's also a performance hit on some maps especially with a large amount of units onscreen, but it shouldn't matter much (I have a GTX 670 and i7 2600K, so it isn't the card...)
  • I tend to go for econ over rushing as it tends to help in the long run in most cases.
  • Evolution missions are not counted.
  • Maps with no links to videos are ones which I am attempting a faster run at.
  • I will attempt Brutal difficulty speedruns of this campaign at a later date.

Other Thoughts:

  • The new settings with the expansion has 'select neutral or enemy units' toggled OFF by default. If it's on, it will explicitly tell you that you can't control the unit when you select it (which is kinda annoying, since you probably knew this beforehand). I find it helpful to check stats of enemy units and such.
  • I don't need tips from Izsha reminding me to get anti-air, telling me I don't have three drones on a extractor, etc.
  • Some game elements were changed only for the campaign without too much explanation. None of your units except Spore colonies have detectors, but it's not like you need them since enemies don't cloak and nukes aren't fired using ghosts.
  • The infestor's neural parasite is equivalent to a DA's Mind Control only in the campaign. Combine that with Consume and it can control a lot of the enemy army quickly.
  • Some other key units like Nydus Worms are unavailable, transports can't be made to ferry units around, the only upgrades you can research in-game are weapon/armor upgrades, and the cap for larva at a Hatchery is much higher, making this a non-representative multiplayer SC experience.

Individual Level Notes:

Lab Rat

  • Fairly standard build, though a large enough force was needed to go through w/o reinforcements.

Back in the Saddle (around 17 mins)

  • The map was fairly linear here, so there's not much to optimize in this level.

Rendezvous (15:59)

  • Note that this mission has a fixed timer - you are forced to wait for reinforcements to arrive before you can attack the main base since the bridge isn't lowered before then. The best you can do is to destroy every building on your side (doing this on Hard gives you an achievement) and camp at the other end of the bridge.

Domination (3:37)

  • Kerrigan's Dash move works well in collecting those eggs at the start, and she's healed to full after collecting them. Note all the units you have control over is guaranteed to cause lag.

Fire in the Sky (7:52)

  • Although tumors were used to expand and such, having a drone to build a Hatchery near each nest that doesn't have creep and then using a Queen to put a tumor in place is much faster than spreading creep slowly towards the nests. Although it seems nice to activate all the nests at once, there's a delay between the time one battlecruiser gets destroyed and another one pops out.

Old Soldiers (8:29)

  • After several runs through the map it was concluded that Swarm Hosts work the best, since the locusts also draw fire from the base defenses. The drones that get dropped when you defeat the base with Rich Mineral Fields doesn't matter much.

Harvest of Screams (4:46)

  • If you have the Zergling speed and Raptor upgrade, it becomes possible to destroy all three spires before the first flash freeze passes, Kerrigan destroying one single handedly with Banelings (the ones that she summons do 160 damage each with the right upgrades).

Shoot the Messenger (3:24)

  • Note that Kerrigan's Leap ability will work leaping on cliff edges IF you have vision, so an overload was used for a spotter. Summoned banelings have a 90 second lifetime, the cd to summon is 30, and you need a bit more than 6 to destroy a bay, so two summons were used for each bay. The last bay was a one summon + damage from Kerrigan for the win. Note that harder difficulties places additional units near the bays and you can't use a cheese strat on one of them since they will kill most of the banelings before they can explode.

Enemy Within (11:24)

  • The level is fairly linear and you'll have to kill everything here (some areas release units on a fixed timer) so there's not much to optimize for the map, other than decreasing the time it takes to destroy some generators using some increased speed Zerglings.

Waking the Ancient (7:27)

  • The enemy only sends out units to attack the first drone that started harvesting, so you can safely harvest a few of them in the same area without worrying about drones being killed. After that (when the other locations are revealed, or the 3:40 mark, whichever comes first) the computer only specifically sends a wave of units after harvesting a specific location, and two mutas + guardian on the others. The ETA that enemies get to them is at the 40 second mark, so you could be defending other locations when harvesting starts. Destroying them allows you to safely move on; while the drone is unprotected there usually won't be more forces coming after it.

    It's similar to the SC2 Map 'Welcome to the Jungle' except the boss at the end.

The Crucible (around 26 min)

  • This level also has a fixed time limit so there's not much in terms of speedrunning this map.

Supreme (7:01)

  • The reinforcements that you pick up are automatically teleported to you when boss battles start and Kerrigan is healed to full when the boss battle starts and ends so there's no sense fighting between bosses.

Infested (7:57)

  • Infestors work well on this map. Ignore the first virophage being attacked, it's not necessary to win.

Hand of Darkness (19:09)

  • No comments yet.

Phantoms of the Void (13:12)

  • No comments yet.

With Friends Like These (10:13)

  • No comments yet. I've heard of a 8 min completion time so this is definitely not the fastest.

Conviction (7:47)

  • The first half requires that certain or all units must be destroyed in an area in order to advance, so there wasn't much in time optimizations here. Other than that I had units pick up the pace by constantly attack moving.

Planetfall

  • This is actually a scripted mission based on the timer, so a speedrun can't be done on this map.

Death From Above (7:41)

  • Dehaka can rush directly into the generator and destroy it without being killed, saving some time in the opening. Near the Psi Destroyer, if you have enough infestors you can mind control every strong unit defending it and take it down before the field powers up. (Normal mode has 1500 HP, Hard and Brutal have 2500)

The Reckoning (13:43)

  • The quickest solution to winning was to pump out Infestors as fast as possible and neural parasite (mind control) every unit in range. Problem was the energy cost (125). Consume worked to a certain extent, but left units injured. The best solution was to MC medics, consume hp from other infestors and convert them to energy and work on mc'ing other units while the medics heal them.

Thursday, March 14, 2013

Relay For Life

This was on a friend's Relay for Life donation page where the reason why to donate and Relay isn't taken very seriously. Guess she wasn't a fan of copypasta. Hand her the money to donate? Seems legit.

Things would get very interesting if it was a guy who wrote this but sadly this isn't the case - it's just a cute girl who doesn't like dresses and high heels.

I'm actually overdue on a new profile picture and I'll need one for AD anyways so I'll probably stick to Anthyvy for the donations.

Monday, March 11, 2013

Stockton Chinese New Year 2013

Stockton's Chinese New Year Parade this year occurred around a week ago and was similar to that of last year, although I noticed a few changes. They moved the grandstand over to next to the Civic Auditorium and there were considerably less people watching the parade, not sure why. This was the first time that MCHS Key Club ceased to exist in the parade - in past years, there was a group of around 40-50 people showing spirit, in red t-shirts and such with a huge banner, but it's not the case anymore - instead they were wearing blue shirts (D27 North) and they weren't holding anything.

Though the performances were great as last year, some creative booths were left out that were present last year. For one, the knitting and RC displays weren't there - they were probably a few of the better ones in my opinion.


No longer are there knitted dragons like there were last year.

Like three years ago, I once again find another person I now knew that I didn't know at the time of last year's parade. There's always a few surprises because when I'm taking pictures, I'm not looking at surroundings and such.


David making a cameo appearance on the sidelines during the 2012 Parade.

Tuesday, March 5, 2013

Tryouts: David's Sushi (California Roll)

"This lone computer science gentleman is a sushi chef by day, video game programmer by night." - description for David on Americana Dawn Kickstarter

Work continues even during Spring Break - professors are more than happy to hand out assignments during this weeklong break. This game is no exception when there's a deadline to meet. One of our teammates made a California Roll. Given that he's the sushi chef at the UC, where hundreds of students are eating his stuff*, it's got to be good, right? Exactly. No avocado here (wouldn't this be the distinguishing feature of a California Roll?), but I can check off a subgoal here.

No longer would I have to go for Ngannu Rolls (UCD CKI specialties, named in a picture caption in the Ramble Apartments - which I know a friend makes) in order to reliably complete the goal - I know there's lots of sushi places around, but finding a friend that makes them that is close enough to sample is an extreme rarity. Prior to David, I only knew three others who did this (and the other two are in SF).

Day 1001 Project Goal #30b: Eat one of a friend's sushi dishes, if one is available. (Completed: 3/5/13 - David Ngo's California Roll)

Saturday, March 2, 2013

Americana Dawn: Mapping it on the Big Screen


Part of the New York map in Americana Dawn rendered at 1280x720, without any upscaling.

Knowing the scale of the game itself, the thought arose about 'what would it look like when seen in high def?' I presented it and the team was distracted for a while scrolling around at its epicness, and that's just on one section. With the game music playing.

While playing it on a huge screen might be nice, it might pose some difficulty for screens with fixed backgrounds, such as battle screens and whatnot. So we have two options here:

  • Upscale graphics - they will look lower res and not be widescreen, but it won't cost additional to get the backgrounds and stuff redrawn to fit larger screens. Or
  • Resize everything and design it for high definition screens - for the more 'epic' feel. Higher quality assets = more costs.

Either way, it's going to cost a lot more to get the game going, especially with more people joining the team (currently at 11, compared to 9 or so when the project was first started). The $4.7k that was raised last year will simply not be enough to cover everything (the original creator was already a few macbooks in debt, and might owe a few more due to giving us programmers actual macbooks in order to port the game over to the Mac OSX and mobile devices in the future.) Time to add some stretch goals?

Monday, February 25, 2013

End of CKI Days


The new E-Board for UOP CKI, Lawrence Tran not shown.

Like all of my other friends who were in my graduating class, retirement from college and CKI is inevitable. I believed I have reached that point, given that a large volume of projects is headed my way in my classes, which are the only things left towards that master's degree. Although I was supposed to be done last year, people wanted me back so I continued on for another semester, but knowing I couldn't make new lasting friendships at the rate I did a year or two ago, I decided to stop here.

So this is where the story ends. (Cue up When Can I See You Again?)

Sometimes I wonder if some of the people who I have thanked in the past, had concern over, or even like, have ever seen me in the same way, or even seen my posts (besides that one time which I showed certain people the blog). Or if I can see them again, for that matter. By leaving, there were many loose ends I had to resolve somehow; since I'm out of the transportation option provided by UOP CKI, I have to find other means of reaching them (via online might not be enough).

Looking back a year ago, I had the option of running for a district committee position... even though I didn't have any support, I should've taken it - it could have changed the outcome of this year with a high position and I might've still remained in CKI for a bit longer.

Wednesday, February 20, 2013

Moving non-friends into Facebook friend lists


Custom coded Zuma Blitz friendlist that limits the share list to only friends and followers who are playing Zuma Blitz, preventing unnecessary spam to friends. (In reality, only 32 of those people in the list are my FB friends.)

On Facebook, although friend lists are designed to organize your friends, they can go past their intended purposes. The API can read lists and add / remove members to lists with the proper permissions, but nowhere in the documentation does it say that it's limited to adding friends.

Steps:

The following applies to version 1 of the Graph API only.

  • Go to Graph API Explorer
  • Click on Get Access Token, on Extended Permissions check read_friendlist and modify_friendlist and click 'Get Access Token'.
  • Enter me/friendlists to get your friend lists, copy the id for the friend list you want to add people in replacing {friendlist_id} and {user} with the appropriate values, and press submit:
    {friend_id}/members?members={user}
  • It returns true of succeeded, and some error message otherwise.
  • Check your list back on FB and it will have that person added.

This allows you to share stuff in a way similar to Google+ Circles (speaking of that, there is an unofficial Facebook Circles app that allows you to do this, but only for friends) by selecting a list of friends and non-friends (they won't be informed you are sharing stuff to them). If you allowed following on your profile they can like or comment on your stuff and will show up on their newsfeed if they are following you if you share a post using that list (the friends of friends privacy preset doesn't allow this). Note you won't see any posts from non-friends even though they're on that list, since you're technically not following their posts (this is on another request - the follow options are only presented to you when you send them a friend request or follow, and revoked if they reject), but this can be worked around somehow without sending them a request.

Practical Applications:

  • Given that I have a bunch of pending add requests from Zuma Blitz players (I have followers on), I can simply put them on a custom list to share related posts without having to confirm the request or show up on their leaderboard - I won't be able to share gifts to them but I don't do it anyways.
  • Facebook Games can use this as an additional filter when sending gifts or requests, since in my apps only half (the game friends) are actively playing and the rest (the real friends) aren't and I don't want to spam them. Currently I haven't seen this done anywhere.
  • A separate list called 'Untrusted' can be made, by placing people on that list and setting privacy settings to exclude that list, I can essentially prevent groups of people from seeing Friend of Friend posts (or posts for Friends but one of their friends are tagged) - whether they're friends or not.

Notes and Anomalies:

  • Directly posting to that list with that privacy setting is disabled. This does not stop you from posting on the newsfeed with the default share being that custom list.
  • Non-friends have a lower profile picture resolution when the list is browsed, and no profile pic showing at all when searching the list.
  • The order of friends on that list are no longer alphabetical.
  • People's public posts can appear on that feed during realtime updates, and are counted when it tells you how many of your friends were using an app (if their activity for that app was set to Public).

Limitations:

  • You can't add non-friends in the Restricted list in order to prevent them from seeing anything other than Public posts, which means anyone with at least a mutual friend can see a good deal of your stuff. (Or any list you didn't create yourself, for that matter.) This is probably a bad security practice at the very least and I would have to resort to blocking people.

Updates: (added 6/8/2014)

API v2.0 (and above) prevents any type of friend list management, such as viewing the friends of a friendlist (which returns a empty list, no errors), or adding / deleting friends from a list (it requires the manage_friendlist permission, which you cannot give to Graph Explorer). This can cause some apps (like the circles app mentioned above) to fail altogether. FB games that use that method as a means of creating custom send lists will need to be recreated via a separate database.

Although accessing a friendlist will not display any of your friends, the API will still display both user ids and names of people who were added using the above method.

Additional data might be needed in order to conclude whether a nonfriend on that list who declines the user_friendlist permission will affect this as well.