7/01/2014

Pros & Cons of Xamarin

Pros

- Cross-platform: the same code runs on both iOS and Android

- As a cross-platform solution, it's based on native UI compoentns so the performance is not as awful as PhoneGap etc.

- As an app oriented solution, an experienced Xamarin developer will be able to deliver an app faster than game based solutions like Cocos2d-js

- Best for a mockup apps since they don't require a lot of UI customisation, i.e. doing the most basic things

 

Cons

- As a cross-platform solution it doesn't support platforms as many as Cocos2d-js does

- Unlike Cocos2d-js which is free, Xamarin costs $999 a year for business plan

- Lastest support for each platform (iOS / Android) is always slow since Xamarin doesn't have a better channel to work with Apple & Google than any other native developers

- To become a good Xamarin developer, one needs to master C#, .NET, Xamarin SDK, Xamarin IDE / VS, so:

- An experienced Xamarin developer is hard to find and the eco system based on Xamarin is not as strong as native iOS / Android community, e.g. in stackoverflow tags

- android: 603,241

- objective-c: 211,677

- xamarin: 13703

- swift: 37441 (and it's only released less than half a year while xamarin is there for years)

- Smaller ecosystem means it's harder to find answers and will lead to longer time of problem solving

- Harder to integrate with open source iOS / Android libraries

- Harder to make an app with a well-designed UI

 

Diablo 3 PTR 2.1.2 Greater Rift Season 2 Leaderboard Trends Top 1

v2

12/13/2014 (after DH's nerf & reset)

ClassTop 10Top 1
DH4648
Barb4347
Monk4749
Sader4246
WD3844
Wiz3843

12/9/2014

ClassTop 10Top 1
DH4350
Barb3137
Monk3547
Sader139
WD137
Wiz1037

v1

12/3/2014

ClassTop 10Top 1
Barb5863
DH5455
Monk4851
Sader4753
WD4045
Wiz3843

11/26/2014

ClassTop 10Top 1
DH5054
Barb4658
Monk4348
Sader4149
WD3644
Wiz3638

11/25/2014

ClassTop 10Top 1
DH4952
Barb4356
Monk4248
Sader4047
WD3543
Wiz3538

11/24/2014

ClassTop 10Top 1
DH4750
Barb4154
Monk4046
Sader3745
WD3439
Wiz3338

 

剧本二·过火车的房子

很久之前做过一个有标题的梦“过火车的房子”,大概是我和另外几个人被困在一个房子里,无法出去,而且永远是白天。房子是跃层的,有一个窗户旁边是火车道,只能根据过火车的间隔大概推测时间。桌子上有一本不能移动但是可以翻阅的记事本。从第二天开始会死一个人,记事本的内容每天不断添加,活着的人努力找出真相。但是很可惜,推理过程完全记不清了。最后的真相是房子本身是虚构的,然后大家都死了,就跟lost差不多。不过做梦的时候我还不知道lost的结局,不过反正都是俗套而已。

配乐是弦乐。曲调刚醒的时候还能哼两段,现在实在记不起来了。

剧本一·极地迷踪(好土的名字)

(中国青年Leo身为天才飞行器设计师,却向来玩世不恭,终日和好友Dan、Mike四处作乐。有一天,他在一个国际性空军联谊活动上,结识了一位神秘的金发女郎Louise。得知他的身份后,Louise邀请他登上一艘豪华游轮,但在到达目的地之前,两人却一直呆在室内。Leo天性粗旷,既然佳丽常伴身边,也便不以为意,但日久也难免生疑。有一日,他设计溜出船舱,却发现气氛甚是怪异,不单难见人影,而且保安似疏实密,密布各种监控设施。Leo突破重重陷阱,到达甲板,却发现竟然身处一片冰天雪地之间。)

听到身后传来的脚步声,Leo转过身子,果然,飞奔而来的正是身着冬装的Louise。

"Heh. You really think I'm not able to get out and find the truth by myself? "Leo冷笑道,但心里却在飞速思考:“在这种天气下,大概十几秒之后,我的手指就会开始不灵便了吧……不出一分钟,四肢恐怕也会无法自由行动。必须尽快分出胜负……”

"Listen to me Leo, I swear I didn't..." Louise一边说着,Leo的脑中一边浮现出这样的场面:他猛地冲上前去,Louise抬手迎击,Leo虚晃一招,突然身形一矮,下潜抱膝,将Louise摔倒在地。然后,自己就势向前一滚,假装要使用十字固取其手臂,但却再向右一晃,用三角固完成锁颈。容情不下手,下手不容情;一定要在30秒之内让Louise失去意识,并把她带回船舱!(小唐福尔摩斯风格)

"... I swear I didn't mean to..." Louise话音未落,Leo猛地冲上前去。Louise抬手迎击,Leo虚晃一招,突然身形一矮,下潜抱膝。不料Louise右肘下沉,迎面正中Leo面门,同时右膝向前一顶,Leo痛苦地捂住胯下,在地上滚来滚去。Louise摇了摇头,扛起Leo,向船舱走去。

(追赶而来的Louise强行把Leo拖回船舱。面对Leo的质问,Louise告知他自己乃是英国皇家空军王牌飞行员,此行目的地为南极,其他一切只能等到达目的地再说。)

"Be patient sweetheart, I'll tell you all the rest things you want to know when we arrive."
"Damn it, how am I supposed to wait any longer? When the fuck will we arrive?! "
"Actually, now."

(长镜头。再次走出甲板的Leo惊奇地发现,一个隧道由南极大陆伸展开来,连接到已经下锚的游轮上。一众人等从游轮缓缓走向大陆,一头雾水的Leo只好跟着人流,默默向前走去。)

“要不要大闹一场……”看着Leo跃跃欲试的表情,Louise默默地摇了摇头,做了个绞杀的手势。
"OK... Maybe not. " Leo喃喃道。

(Leo跟着Louise来到一个大厅,两人在一角的沙发默默坐下。另一批人从相反的方向走来,由大陆走向游轮。)

Leo百无聊赖地看着他们。突然,他眼睛发直,死死地盯住一个人。

“怎……怎么可能!”

“?”不懂中文的Louise奇怪地看着他。同时,Leo盯着的那个人也转过头来。只见他身材魁梧,一身浅蓝色的中山装;但惊人的是,他身边竟然撒发出阵阵蓝色火焰,而且……他那特殊的秃顶!难道!(注:这个镜头里,Leo是面向摄像机,而此人是背对摄像机的。)

“小鬼,你是…… I mean who's this brat? "

“毛·泽·东!”

对方微微一笑。"I was wondering how's one of my Chinese fellows is here. So you must be that Leo, right? "

(原来,在毛泽东时期,中国一直在秘密研发一种可以将人类的意识移植道某种特殊的超导材料之中的技术。令人惊讶的是,该技术完全基于模拟技术,和现代的数字技术属于完全不同的分支。在毛去世之前,这项技术终于完成,但要维持超导,制造低温环境是必不可少的。因此,装载着毛的意识的超导线圈就被运到了南极进行保存。)

“难道你保留遗体就是这个目的?”Leo谨慎地用中文问道。

毛微微一笑。“正好相反,”他含蓄地说。

“而且南极这零下几十度对于维持超导来说,根本是杯水车薪……难度其实……?”

“没错。”毛点点头,压低了声音,“估计你也猜到了,这只是个借口。保存遗体完全是政敌出于自己的目的,当时我本人是反对的。跟我估计的一样,他们最终还是这么做了,所以将超导线圈在政治风暴爆发之前转移到南极,也算是一个明智之举。而且你看,”他指了指自己仔细看有点半透明的身体,“只要意识存在,实体的身体真的有必要吗?”

Leo点点头。“而且你的全息技术也完成了。那么这蓝色火焰效果有什么玄机呢?”

毛笑道:“Don't you think it's pretty cool? ”

(全息技术并不是重点,不过这也彰显了毛派在数字技术方面的建树。在这40年间,毛的南极基地完成了另外两项最关键的技术:常温超导,以及意识线圈扩散。后者指的是利用数字技术将意识线圈内的部分内容扩散并形成一个意识场。)

"You mean mind control or that sort of things? " Leo问道。

"Of course not. I don't even think it's technically possible since human mind is still beyond comprehension. "毛泽东解释说,"The so-called mind field is used to 'plant' some most basic 'facts' into human mind. In my case, it would be 'Mao is, and will always be the leader of China'. All I want is going to be like this..."

"Yea... and this simple. But since when you've started speaking English anyway?"

"None of your business, brat. And what makes you think you're that special? "毛哈哈大笑。

(随后,毛解释了要将Leo带到南极基地的原因。返回大陆的计划即将紧锣密鼓地展开,但传闻中国正在秘密开发一种可用于长距离飞行的机器,其目的很可能是南极基地。而该项目的负责人正是Leo。)

“但是……这项计划已经……完成了。”Leo汗流浃背。

“……在你们的旅途中,我们已经知道了。所以我才会耐心地把来龙去脉告诉你,因为我觉得让你白来一趟,有点不好意思。不然你以为我为什么会这么好心?跟年轻小伙子谈谈说说是蛮有意思的,但我可没那么大功夫。所以,”毛挥了挥手,"Louise let's go. And you Leo, sorry there's no spot for you this time. Don't worry we'll arrange another flight for you shortly. Auf Weidersein. "

"Seriously? Was Adolf involved in this project as well? "

"Of course not. But there IS another one: Elizabeth II. "

(原来,Louise在此的原因,正是因为伊丽莎白对此计划也甚感兴趣,因此英国皇家空军也介入其中。然后我就醒了。当然我知道女王跟皇家空军没啥关系……结尾如何我没梦见,其中有段毛论民主的对话太无聊了,而且毛是用英文说的,所以就不写了。我也不知道梦里毛为什么用英文。里面所有镜头我都以第三人称视角梦到过,所以拍出来不成问题。)

6/25/2014

Automate iOS Version Number

UPDATE 20141013: added build hash so it looks like "1.0.2 (E3B8)"; added swift version

IMPORTANT: I'm still trying to figure out the best practice of this topic, thus the approach I described in this article may not be final.

Long story short:

1. Add a Run Script in Build Phases (Editor -> Add Build Phase), and put it before "Copy Bundle Resources" so that we can increase version number in info.plist, and then copy plist into app bundle.

2. Add script as below. The magic here is "git rev-list HEAD | wc -l | tr -d ' '" which gives you the subversion-style revision number, which means if you're not in master branch this doesn't make any sense (that's why I said I'm still figuring it out). Basically I don't mind change version number in debug mode but you may want to uncomment the 2nd line if you stay in develop branch most of the time.

#Update build number with number of git commits if in release mode
# if [ ${CONFIGURATION} == "Release" ]; then
versionNumber=$(/usr/libexec/plistbuddy -c Print:CFBundleShortVersionString: "${PROJECT_DIR}/${INFOPLIST_FILE}")
buildNumber=$(git rev-list HEAD | wc -l | tr -d ' ')
buildHash=$(git rev-parse HEAD | cut -c1-4)

 

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $versionNumber.$buildNumber ($buildHash)""${PROJECT_DIR}/${INFOPLIST_FILE}"
# fi;
 
3. Display version number somewhere in your UI.
 
label_version.text = [NSString stringWithFormat:@"%@ %@", 
[[[NSBundle mainBundle] infoDictionary] valueForKey:@"CFBundleName"],
[[[NSBundle mainBundle] infoDictionary] valueForKey:@"CFBundleVersion"]];

-- swift version --

label_version.text = NSBundle.mainBundle().infoDictionary?["CFBundleVersion"] as? String

 
The thing I'm not sure is that although 1.0.82 seems to be nice to non-tech person, it is not as good as git hash if you want to debug something. So maybe something like 1.0.82 (5cb5ec) would be better; anyway it's very easy to modify the script in step 2 to make whatever version string you want.

6/15/2014

无题

前几天做了一个梦,今天有空,整理一下。

(中国青年Leo身为天才飞行器设计师,却向来玩世不恭,终日和好友Dan、Mike四处作乐。有一天,他在一个国际性空军联谊活动上,结识了一位神秘的金发女郎Louise。得知他的身份后,Louise邀请他登上一艘豪华游轮,但在到达目的地之前,两人却一直呆在室内。Leo天性粗旷,既然佳丽常伴身边,也便不以为意,但日久也难免生疑。有一日,他设计溜出船舱,却发现气氛甚是怪异,不单难见人影,而且保安似疏实密,密布各种监控设施。Leo突破重重陷阱,到达甲板,却发现竟然身处一片冰天雪地之间。)

听到身后传来的脚步声,Leo转过身子,果然,飞奔而来的正是身着冬装的Louise。

"Heh. You really think I'm not able to get out and find the truth by myself? "Leo冷笑道,但心里却在飞速思考:“在这种天气下,大概十几秒之后,我的手指就会开始不灵便了吧……不出一分钟,四肢恐怕也会无法自由行动。必须尽快分出胜负……”

"Listen to me Leo, I swear I didn't..." Louise一边说着,Leo的脑中一遍浮现出这样的场面:他猛地冲上前去,Louise抬手迎击,Leo虚晃一招,突然身形一矮,下潜抱膝,将Louise摔倒在地。然后,自己就势向前一滚,假装要使用十字固取其手臂,但却再向右一晃,用三角固完成锁颈。容情不下手,下手不容情;一定要在30秒之内让Louise失去意识,并把她带回船舱!

"... I swear I didn't mean to..." Louise话音未落,Leo猛地冲上前去。Louise抬手迎击,Leo虚晃一招,突然身形一矮,下潜抱膝。不料Louise右肘下沉,迎面正中Leo面门,同时右膝向前一顶,Leo痛苦地捂住胯下,在地上滚来滚去。Louise摇了摇头,扛起Leo,向船舱走去。

(追赶而来的Louise强行把Leo拖回船舱。面对Leo的质问,Louise告知他自己乃是英国皇家空军王牌飞行员,此行目的地为南极,其他一切只能等到达目的地再说。)

"Be patient sweetheart, I'll tell you all the rest things you want to know when we arrive."
"Damn it, how am I supposed to wait any longer? When the fuck will we arrive?! "
"Actually, now."

(再次走出甲板的Leo惊奇地发现,一个隧道由南极大陆伸展开来,连接到已经下锚的游轮上。一众人等从游轮缓缓走向大陆,一头雾水的Leo只好跟着人流,默默向前走去。)

“要不要大闹一场……”看着Leo跃跃欲试的表情,Louise默默地摇了摇头,做了个绞杀的手势。
"OK... Maybe not. " Leo喃喃道。

(Leo跟着Louise来到一个大厅,两人在一角的沙发默默坐下。另一批人从相反的方向走来,由大陆走向游轮。)

Leo百无聊赖地看着他们。突然,他眼睛发直,死死地盯住一个人。

“怎……怎么可能!”

“?”不懂中文的Louise奇怪地看着他。同时,Leo盯着的那个人也转过头来。只见他身材魁梧,一身浅蓝色的中山装;但惊人的是,他身边竟然撒发出阵阵蓝色火焰,而且……他那特殊的秃顶!难道!(注:这个镜头里,Leo是面向摄像机,而此人是背对摄像机的。)

“小鬼,你是…… I mean who's this brat? "

“毛·泽·东!”

对方微微一笑。"I was wondering how's one of my Chinese fellows is here. So you must be that Leo, right? "

(原来,在毛泽东时期,中国一直在秘密研发一种可以将人类的意识移植道某种特殊的超导材料之中的技术。令人惊讶的是,该技术完全基于模拟技术,和现代的数字技术属于完全不同的分支。在毛去世之前,这项技术终于完成,但要维持超导,制造低温环境是必不可少的。因此,装载着毛的意识的超导线圈就被运到了南极进行保存。)

“难道你保留遗体就是这个目的?”Leo谨慎地用中文问道。

毛微微一笑。“正好相反,”他含蓄地说。

“而且南极这零下几十度对于维持超导来说,根本是杯水车薪……难度其实……?”

“没错。”毛点点头,压低了声音,“估计你也猜到了,这只是个借口。保存遗体完全是政敌出于自己的目的,当时我本人是反对的。跟我估计的一样,他们最终还是这么做了,所以将超导线圈在政治风暴爆发之前转移到南极,也算是一个明智之举。而且你看,”他指了指自己仔细看有点半透明的身体,“只要意识存在,实体的身体真的有必要吗?”

Leo点点头。“而且你的全息技术也完成了。那么这蓝色火焰效果有什么玄机呢?”

毛笑道:“Don't you think it's pretty cool? ”

(全息技术并不是重点,不过这也彰显了毛派在数字技术方面的建树。在这40年间,毛的南极基地完成了另外两项最关键的技术:常温超导,以及意识线圈扩散。后者指的是利用数字技术将意识线圈内的部分内容扩散并形成一个意识场。)

"You mean mind control or that sort of things? " Leo问道。

"Of course not. I don't even think it's technically possible since human mind is still beyond comprehension. "毛泽东解释说,"The so-called mind field is used to 'plant' some most basic 'facts' into human mind. In my case, it would be 'Mao is, and will always be the leader of China'. All I want is going to be like this..."

"Yea... and this simple. But since when you've started speaking English anyway?"

"None of your business, brat. And what makes you think you're that special? "毛哈哈大笑。

(随后,毛解释了要将Leo带到南极基地的原因。返回大陆的计划即将紧锣密鼓地展开,但传闻中国正在秘密开发一种可用于长距离飞行的机器,其目的很可能是南极基地。而该项目的负责人正是Leo。)

“但是……这项计划已经……完成了。”Leo汗流浃背。

“……在你们的旅途中,我们已经知道了。所以我才会耐心地把来龙去脉告诉你,因为我觉得让你白来一趟,有点不好意思。不然你以为我为什么会这么好心?跟年轻小伙子谈谈说说是蛮有意思的,但我可没那么大功夫。所以,”毛挥了挥手,"Louise let's go. And you Leo, sorry there's no spot for you this time. Don't worry we'll arrange another flight for you shortly. Auf Weidersein. "

"Seriously? Was Adolf involved in this project as well? "

"Of course not. But there IS another one: Elizabeth II. "

(原来,Louise在此的原因,正是因为伊丽莎白对此计划也甚感兴趣,因此英国皇家空军也介入其中。然后我就醒了。当然我知道女王跟皇家空军没啥关系……结尾如何我没梦见,其中有段毛论民主的对话太无聊了,而且毛是用英文说的,所以就不写了。我也不知道梦里毛为什么用英文。)

6/06/2014

UIView with Mask

Can be used for rounded button or circle image, etc. It looks like:
https://www.dropbox.com/s/jj82zassj964vqq/Screenshot%202014-06-06%2014.57.06.png

Sample code:

[button_view_mask1 enable_mask_circle];
[button_view_mask2 enable_mask_circle];
[button_view_mask3 enable_mask_circle_width:1 color:[UIColor redColor]];
[label_view_mask enable_border_width:1 color:[UIColor blueColor] radius:5];

Part of LCategory: https://github.com/superarts/LCategory

String Related Category

There are string related functions that may be extended in future. I'll update pod really quick: https://github.com/superarts/LCategory

s = [s stringByAppendingFormat:@"[NSString string_from_int:42] - '%@'\n", [NSString string_from_int:42]];
s = [s stringByAppendingFormat:@"['1' is:'1'] - %i\n", [@"1" is:@"1"]];
s = [s stringByAppendingFormat:@"['1' is:'2'] - %i\n", [@"1" is:@"2"]];
s = [s stringByAppendingFormat:@"['12' contains:'1'] - %i\n", [@"12" contains:@"1"]];
s = [s stringByAppendingFormat:@"['12' contains:'3'] - %i\n", [@"12" contains:@"3"]];
s = [s stringByAppendingFormat:@"['    te st  ' string_without_leading_space] - '%@'\n", [@"    te st  " string_without_leading_space]];
s = [s stringByAppendingFormat:@"['test' string_without_leading_space] - '%@'\n", [@"test" string_without_leading_space]];
s = [s stringByAppendingFormat:@"['12345678 l23455678' string_without:'3' to:'67'] - '%@'\n", [@"12345678 l23455678" string_without:@"3" to:@"67"]];
s = [s stringByAppendingFormat:@"['12345678 l23455678' string_without:'3' to:'67' except:['45']] - '%@'\n", [@"12345678 l23455678" string_without:@"3" to:@"67" except:@[@"34567"]]];
s = [s stringByAppendingFormat:@"['12345678 l23455678' string_between:'3' and:'67'] - '%@'\n", [@"12345678 l23455678" string_between:@"3" and:@"67"]];
s = [s stringByAppendingFormat:@"['12345678 l23455678' string_between:'3' and:'67' from:9] - '%@'\n", [@"12345678 l23455678" string_between:@"3" and:@"67" from:9]];
s = [s stringByAppendingFormat:@"['12345678 l23455678' array_between:'3' and:'67'] - '%@'\n", [@"12345678 l23455678" array_between:@"3" and:@"67"]];
s = [s stringByAppendingFormat:@"['#hash' is_hashtag] - '%i'\n", [@"#hashtag" is_hashtag]];
s = [s stringByAppendingFormat:@"['c#' is_hashtag] - '%i'\n", [@"c#" is_hashtag]];
s = [s stringByAppendingFormat:@"['test #t1 t2 #t3 t4' array_hashtag] - '%@'\n", [@"test #t1 t2 #t3 t4" array_hashtag]];
s = [s stringByAppendingFormat:@"['line1' append_line:'line2] - '%@'\n", [@"line1" append_line:@"line2"]];
s = [s stringByAppendingFormat:@"['line1' append_line2:'line2] - '%@'\n", [@"line1" append_line2:@"line2"]];
s = [s stringByAppendingFormat:@"['word1' append:'word2' divider:'|'] - '%@'\n", [@"line1" append:@"line2" divider:@"|"]];

Results:

[NSString string_from_int:42] - '42'
['1' is:'1'] - 1
['1' is:'2'] - 0
['12' contains:'1'] - 1
['12' contains:'3'] - 0
['    te st  ' string_without_leading_space] - 'te st  '
['test' string_without_leading_space] - 'test'
['12345678 l23455678' string_without:'3' to:'67'] - '128 l28'
['12345678 l23455678' string_without:'3' to:'67' except:['45']] - '12345678 l28'
['12345678 l23455678' string_between:'3' and:'67'] - '45'
['12345678 l23455678' string_between:'3' and:'67' from:9] - '455'
['12345678 l23455678' array_between:'3' and:'67'] - '(
    45,
    455
)'
['#hash' is_hashtag] - '1'
['c#' is_hashtag] - '0'
['test #t1 t2 #t3 t4' array_hashtag] - '(
    t1,
    t3
)'
['line1' append_line:'line2] - 'line1
line2'
['line1' append_line2:'line2] - 'line1

line2'
['word1' append:'word2' divider:'|'] - 'line1|line2'

5/29/2014

How to Manage VIM Plugins for Objective C

It doesn't seems that a lot of iOS developers are using VIM, so there aren't many resource there. I've been using cocoa.vim for ages and it hasn't been updated for 4 years, while a lot of new features are introduced like ARC, block, etc. In this way you can make things well organized:

~/.vim$ ls autoload/
pathogen.vim
~/.vim$ ls bundle/
cocoa.vim vim-objc

Search keywords for the repos on github. Also don't forget to add this to your .vimrc:

execute pathogen#infect()

PS: cocoa.vim - https://github.com/msanders/cocoa.vim

1/29/2012

附录 英文名对照

怒焰裂谷
Ragefire Chasm
奥格弗林特 Oggleflint
饥饿者塔拉加曼 Taragaman the Hunger
愤怒者塞雷玛尔 Zelemar the Wrathful
祈求者耶戈什 Jergosh the Invoker
巴扎兰 Bazzalan

哀号洞穴
Wailing Caverns
克雷什 Kresh
考布莱恩 Lord Cobrahn
安娜科德拉 Lady Anacondra
皮萨斯 Lord Pythas
瑟芬迪斯 Lord Serpentis
永生者沃尔丹 Verdan the Everliving
斯卡姆 Skum
变异精灵龙 Deviate Faerie Dragon
吞噬者穆坦努斯 Mutanus the Devourer

死亡矿井
The Deadmines
拉克佐 Rhahk'Zor
矿工约翰森 Miner Johnson
斯尼德 Sneed
基尔尼格 Gilnid
重拳先生 Mr. Smite
曲奇 Cookie
绿皮队长 Captain Greenskin
艾德温·范克利夫 Edwin VanCleef

影牙城堡
Shadowfang Keep
屠夫拉佐克劳 Razorclaw the Butcher
席瓦莱恩男爵 Baron Silverlaine
指挥官斯普林瓦尔 Commander Springvale
死亡之誓 Deathsworn Captain
雷希戈尔 Rethilgore
塞瓦 Sever
盲眼守卫奥杜 Odo the Blindwatcher
吞噬者芬鲁斯 Fenrus the Devourer
狼王南杜斯 Wolf Master Nandos
大法师阿鲁高 Archmage Arugal

暴风城监狱
Stormwind Stockades
可怕的塔格尔 Targorr the Dread
布鲁格?艾伦诺克 Bruegal Ironknuckle
卡姆·深怒 Kam Deepfury
哈姆霍克 Hamhock
迪克斯特?瓦德 Dextren Ward
巴基尔·斯瑞德 Bazil Thredd

黑暗深渊
Blackphantom Deeps
加摩拉 Ghamoo-ra
萨利维丝 Lady Sarevess
格里哈斯特 Gelihast
洛古斯·杰特 Lorgus Jett
阿奎尼斯男爵 Baron Aquanis
瑟拉吉斯 Old Serra'kis
梦游者克尔里斯 Twilight Lord Kelris
阿库麦尔 Aku'mai

剃刀沼泽
Razorfen Kraul
鲁古格 Roogug
阿格姆 Aggem Thorncurse
亡语者贾格巴 Death Speaker Jargba
主宰拉姆塔斯 Overlord Ramtusk
唤地者哈穆加 Earthcaller Halmgar
暴怒的阿迦赛罗斯 Agathelos the Raging
盲眼猎手 Blind Hunter
卡尔加·刺肋 Charlga Razorflank

诺莫瑞根
Gnomeregan
格鲁比斯 Grubbis
咀嚼者 Chomper
粘性辐射尘 Viscous Fallout
电刑器6000型 Electrocutioner 6000
群体打击者9-60 Crowd Pummeler 9-60
黑铁大师 Dark Iron Ambassador
麦克尼尔·瑟玛普拉格 Mekgineer Thermaplugg

血色修道院
Scarlet Monastery

墓地
Graveyard
审讯员韦沙斯 Interrogator Vishas
铁脊死灵 Ironspine
永醒的艾希尔 Azshir the Sleepless
死灵勇士 Fallen Champion
斯科恩 Scorn
无头骑士 Headless Horseman
血法师萨尔诺斯 Bloodmage Thalnos

图书馆
Library
驯犬者洛克希 Houndmaster Loksey
奥法师杜安 Arcanist Doan

军械库
Armory
赫洛德 Herod

教堂
Cathedral
大检察官法尔班克斯 High Inquisitor Fairbanks
血色十字军指挥官莫格莱尼 Scarlet Commander Mograine
大检察官怀特迈恩 High Inquisitor Whitemane

剃刀高地
Razorfen Downs
图特卡什 Tuten'kash
火眼莫德雷斯 Mordresh Fire Eye
暴食者 Glutton
腐烂的普雷莫尔 Plaguemaw the Rotting
拉戈斯诺特 Ragglesnout
寒冰之王亚门纳尔 Amnennar the Coldbringer

奥达曼
Uldaman
巴尔洛戈 Baelog
艾瑞克 Eric "The Swift"
奥拉夫 Olaf
马格雷甘·深影 Magregan Deepshadow
挖掘专家舒尔弗拉格 Digmaster Shovelphlange
鲁维罗什 Revelosh
艾隆纳亚 Ironaya
黑曜石哨兵 Obsidian Sentinel
古代的石头看守者 Ancient Stone Keeper
加加恩·火锤 Galgann Firehammer
格瑞姆洛克 Grimlok
阿扎达斯 Archaedas

祖尔法拉克
Zul'Farrak
安图苏尔 Antu'sul
殉教者塞卡 Theka the Martyr
巫医祖穆拉恩 Witch Doctor Zum'rah
耐克鲁姆 Nekrum Gutchewer
暗影祭司塞瑟斯 Shadowpriest Sezz'ziz
泽雷利斯 Zerillis
杉达尔·沙掠者 Sandarr Dunereaver
灰尘怨灵 Dustwraith
沙怒刽子手 Sandfury Executioner
布莱中士 Sergeant Bly
穆尔塔 Murta Grimgut
拉文 Raven
欧罗·血眼 Oro Eyegouge
卢兹鲁 Ruuzlu
乌克兹·沙顶 Chief Ukorz Sandscalp
水占师维蕾萨 Hydromancer Velratha
加兹瑞拉 Gahz'rilla

玛拉顿
Maraudon
诺克赛恩 Noxxion
锐刺鞭笞者 Razorlash
维利塔恩 Lord Vyletongue
收割者麦什洛克 Meshlok the Harvester
被诅咒的塞雷布拉斯 Celebras the Cursed
兰斯利德 Landslide
工匠吉兹洛克 Tinkerer Gizlock
洛特格里普 Rotgrip
瑟莱德丝公主 Princess Theradras

阿塔哈卡神庙
The Temple of Atal'Hakkar
哈卡的后代 Spawn of Hakkar
阿塔拉利恩 Atal'alarion
胡库 Hukku
加什尔 Gasher
洛若尔 Loro
米杉 Mijan
祖罗 Zolo
祖洛尔 Zul'Lor
可悲的奥戈姆 Ogom the Wretched
预言者迦玛兰 Jammal'an the Prophet
哈卡的化身 Avatar of Hakkar
德姆赛卡尔 Dreamscythe
德拉维沃尔 Weaver
摩弗拉斯 Morphaz
哈扎斯 Hazzas
伊兰尼库斯的阴影 Shade of Eranikus

黑石深渊
Blackfathom Depths
洛考尔 Lord Roccor
审讯官格斯塔恩 High Interrogator Gerstahn
破坏者奥科索尔 Ok'thor the Breaker
阿努希尔 Anub'shiah
剜眼者 Eviscerator
修行者高罗什 Gorosh the Dervish
格里兹尔 Grizzle
爬行者赫杜姆 Hedrum the Creeper
塞尔德林 Theldren
驯犬者格雷布玛尔 Houndmaster Grebmar
控火师罗格雷恩 Pyromancer Loregrain
典狱官斯迪尔基斯 Warder Stilgiss
维雷克 Verek
卫兵杜格瑞普 Watchman Doomgrip
弗诺斯·达克维尔 Fineous Darkvire
伊森迪奥斯 Lord Incendius
贝尔加 Bael'Gar
安格弗将军 General Angerforge
傀儡统帅阿格曼奇 Golem Lord Argelmach
霍尔雷·黑须 Hurley Blackbreath
普拉格 Plugger Spazzring
雷布里·斯库比格特 Ribbly Screwspigot
法拉克斯 Phalanx
弗莱拉斯大使 Ambassador Flamelash
无敌的潘佐尔 Panzor the Invincible
安格雷尔 Anger'rel
杜姆雷尔 Doom'rel
多普雷尔 Dope'rel
格鲁雷尔 Gloom'rel
瓦勒雷尔 Vile'rel
西斯雷尔 Seeth'rel
黑特雷尔 Hate'rel
玛格姆斯 Magmus
索瑞森高阶女祭司 High Priestess of Thaurissan
铁炉堡公主茉艾拉?铜须 Princess Moira Bronzebeard
达格兰·索瑞森大帝 Emperor Dagran Thaurissan

通灵学院
Scholomance
传令官基尔图诺斯 Kirtonos the Herald
布莱克伍德公爵 Lord Blackwood
詹迪斯?巴罗夫 Jandice Barov
血骨傀儡 Rattlegore
死亡骑士达克雷尔 Death Knight Darkreaver
马杜克?布莱克波尔 Marduk Blackpool
维克图斯 Vectus
莱斯?霜语 Ras Frostwhisper
库尔莫克 Kormok
伊露希亚?巴罗夫 Lady Illucia Barov
阿雷克斯?巴罗夫 Lord Alexei Barov
拉文尼亚 The Ravenian
博学者普克尔特 Lorekeeper Polkelt
瑟尔林?卡斯迪诺夫教授 Doctor Theolen Krastinov
讲师玛丽希亚 Instructor Malicia
黑暗院长加丁 Darkmaster Gandling

斯坦索姆
Stratholme
悲惨的提米 Timmy the Cruel
狂热的玛洛尔 Malor the Zealous
炮手威利 Cannon Master Willey
档案管理员加尔福特 Archivist Galford
大十字军战士达索汉(巴纳扎尔) Grand Crusader Dathrohan (Balnazzar)
索托斯 Sothos
亚雷恩 Jarien
巴尔萨冯 Balzaphon
埃提耶什 Atiesh
斯库尔 Skul
弗雷斯特恩 Hearthsinger Forresten
石脊 Stonespine
不可原谅者 The Unforgiven
弗拉斯?希亚比 Fras Siabi
斯坦索姆信使 Stratholme Courier
邮差马龙 Postmaster Malown
安娜丝塔丽男爵夫人 Baroness Anastari
奈鲁布恩坎 Nerub'enkan
苍白的玛勒基 Maleki the Pallid
巴瑟拉斯镇长 Magistrate Barthilas
吞咽者拉姆斯登 Ramstein the Gorger
瑞文戴尔男爵 Baron Rivendare

厄运之槌
Dire Maul

东区
East
普希林 Pusillin
瑟雷姆?刺蹄 Zevrim Thornhoof
海多斯博恩 Hydrospawn
蕾瑟塔蒂丝 Lethtendris
匹姆吉布 Pimgib
伊萨莉恩 Isalien
奥兹恩 Alzzin the Wildshaper

西区
West
特迪斯?扭木 Tendris Warpwood
伊琳娜?暗木 Illyanna Ravenoak
费拉 Ferra
卡雷迪斯镇长 Magister Kalendris
苏斯 Tsu'zee
伊莫塔尔 Immol'thar
雷瓦克安 Revanchion
赫尔努拉斯 Lord Hel'nurath
托塞德林王子 Prince Tortheldrin

北区
North
践踏者克雷格 Stomper Kreeg
卫兵摩尔达 Guard Mol'dar
卫兵芬古斯 Guard Fengus
卫兵斯里基克 Guard Slip'kik
克罗卡斯 Captain Kromcrush
观察者克鲁什 Cho'Rush the Observer
戈多克大王 King Gordok

黑石塔
Blackrock Spire

下层
Lower
欧莫克大王 Highlord Omokk
尖石屠夫 Spirestone Butcher
尖石统帅 Spirestone Battle Lord
尖石首席法师 Spirestone Lord Magus
暗影猎手沃什加斯 Shadow Hunter Vosh'gajin
指挥官沃恩 War Master Voone
莫尔?灰蹄 Mor Grayhoof
班诺克?巨斧 Bannok Grimaxe
霍克?巴什古德 Ghok Bashguud
烟网蛛后 Mother Smolderweb
水晶之牙 Crystal Fang
乌洛克 Urok Doomhowl
军需官兹格雷斯 Quartermaster Zigris
哈雷肯 Halycon
奴役者基兹鲁尔 Gizrul the Slavener
燃烧地狱卫士 Burning Felguard
维姆萨拉克 Overlord Wyrmthalak

上层
Upper
烈焰卫士艾博希尔 Pyroguard Emberseer
索拉卡?火冠 Solakar Flamewreath
杰德 Jed Runewatcher
古拉鲁克 Goraluk Anvilcrack
大酋长雷德?黑手 Dal’Rend Blackhand
盖斯 Gyth
比斯巨兽 The Beast
瓦塔拉克公爵 Lord Valthalak
达基萨斯将军 General Drakkisath

地狱火堡垒
Hellfire Ramparts

地狱火城墙
Hellfire Citadel
巡视者加戈玛 Watchkeeper Gargolmar
无疤者奥摩尔 Omor the Unscarred
纳杉 Nazan
瓦兹德 Vazruden

鲜血熔炉
The Blood Furnace
制造者 The Maker
布洛戈克 Broggok
击碎者克里丹 Keli'dan the Breaker

破碎大厅
The Shattered Halls
高阶术士奈瑟库斯 Grand Warlock Nethekurse
血卫士伯鲁恩 Blood Guard Porung
战争使者沃姆罗格 Warbringer O'mrogg
酋长卡加斯?刃拳 Warchief Kargath Bladefist

玛瑟里顿的巢穴
Magtheridon's Lair
玛瑟里顿 Magtheridon

盘牙水库
Coilfang Reservoir

奴隶围栏
The Slave Pens
背叛者门努 Mennu the Betrayer
巨钳鲁克玛尔 Rokmar the Crackler
夸格米拉 Quagmirran

幽暗沼泽
The Underbog
霍加尔芬 Hungarfen
加兹安 Ghaz'an
沼地领主穆雷塞克 Swamplord Musel'ek
黑色阔步者 The Black Stalker

蒸汽地窟
The Steamvault
水术师瑟丝比娅 Hydromancer Thespia
机械师斯蒂里格 Mekgineer Steamrigger
督军卡利瑟里斯 Warlord Kalithresh

毒蛇神殿
Serpentshrine Cavern
不稳定的海度斯 Hydross the Unstable
盲眼者莱欧瑟拉斯 Leotheras the Blind
深水领主卡拉瑟拉斯 Fathom-Lord Karathress
莫洛格里?踏潮者 Morogrim Tidewalker
鱼斯拉 The Lurker Below
法斯琪女士 Lady Vashj

奥金顿
Auchindoun

法力坟墓
Mana-Tombs
潘德莫努斯 Pandemonius
塔瓦洛克 Tavarok
约尔 Yor
节点亲王沙法尔 Nexus-Prince Shaffar

奥金尼地穴
Auchenai Crypts
死亡观察者希尔拉克 Shirrak the Dead Watcher
大主教玛拉达尔 Exarch Maladaar

塞泰克大厅
Sethekk Halls
黑暗编织者塞斯 Darkweaver Syth
安苏 Anzu
利爪之王艾吉斯 Talon King Ikiss

暗影迷宫
Shadow Labyrinth
赫尔默大使 Ambassador Hellmaw
煽动者布莱卡特 Blackheart the Inciter
沃匹尔大师 Grandmaster Vorpil
摩摩尔 Murmur

风暴要塞
Tempest Keep

生态船
The Botanica
指挥官萨瑞尼斯 Commander Sarannis
大植物学家费瑞卫恩 High Botanist Freywinn
看管者索恩古林 Thorngrin the Tender
拉伊 Laj
迁跃扭木 Warp Splinter

能源舰
The Mechanaar
看守者盖罗基尔 Gatewatcher Gyro-Kill
看守者埃隆汉 Gatewatcher Iron-Hand
机械王卡帕希特斯 Mechano-Lord Capacitus
虚空术师赛派斯瑞 Nethermancer Sepethrea
计算者帕萨雷恩 Pathaleon the Calculator

禁魔监狱
The Arcatraz
自由的瑟雷凯斯 Zereketh the Unbound
末日预言者达尔莉安 Dalliah the Doomsayer
天怒预言者苏克拉底 Wrath-Scryer Soccothrates
预言者斯克瑞斯 Harbinger Skyriss

风暴之眼
Eye of the Storm
奥 Al'ar
空灵机甲 Void Reaver
大星术师索兰莉安 High Astromancer Solarian
扭曲预言者萨拉瑞德 Thaladred the Darkener
桑古纳尔 Lord Sanguinar
大星术师卡普尼恩 Grand Astromancer Capernian
首席技师泰隆尼卡斯 Master Engineer Telonicus
凯尔萨斯?逐日者 Kael'thas Sunstrider

卡拉赞
Karazhan
猎手阿图门 Attumen the Huntsman
莫罗斯 Moroes
大灰狼 Big Bad Wolf
罗密欧 Romulo
朱丽叶 Julianne
桃乐丝 Dorothee
托托 Tito
稻草人 Strawman
铁皮人 Tinhead
胆小的狮子 Roar
巫婆 The Crone
贞节圣女 Maiden of Virtue
馆长 The Curator
特雷斯坦?邪蹄 Terestian Illhoof
埃兰之影 Shade of Aran
虚空幽龙 Netherspite
潜伏者希亚奇斯 Hyakiss the Lurker
蹂躏者洛卡德 Rokad the Ravager
滑翔者沙德基斯 Shadikith the Glider
夜之魇 Nightbane
玛尔扎克王子 Prince Malchezaar

格鲁尔的巢穴
Gruul's Lair
疯癫者奇克勒 Kiggler the Crazed
先知盲眼 Blindeye the Seer
召唤者欧莫 Olm the Summoner
克罗斯?火手 Krosh Firehand
莫加尔大王 High King Maulgar
屠龙者格鲁尔 Gruul the Dragonkiller

黑暗神殿
Black Temple
高阶督军纳因图斯 High Warlord Naj'entus
苏普雷姆斯 Supremus
阿卡玛之影 Shade of Akama
古尔图格?血沸 Gurtogg Bloodboil
泰隆?血窟 Teron Gorefiend
痛苦精华 Essence of Suffering
愤怒精华 Essence of Anger
欲望精华 Essence of Desire
莎赫拉丝主母 Mother Shahraz
击碎者加西奥斯 Gathios the Shatterer
高阶灵术师赛勒沃尔 High Nethermancer Zerevor
女公爵玛兰德 Lady Malande
维尔莱斯?深影 Veras Darkshadow
伊利丹?怒风 Illidan Stormrage

时光之穴
Caverns of Time

旧希尔斯布莱德丘陵
Old Hillsbrad Foothills
德拉克中尉 Lieutenant Drake
斯卡洛克上尉 Captain Skarloc
时空猎手 Epoch Hunter

黑色沼泽
Black Morass
时空领主德亚 Chrono Lord Deja
坦普卢斯 Temporus
埃欧努斯 Aeonus

海加尔山
Hyjal Summit
雷吉?冬寒 Rage Winterchill
安纳塞隆 Anetheron
卡兹洛加 Kaz'rogal
阿兹加洛 Azgalor
阿克蒙德 Archimonde

祖阿曼
Zul'Aman
纳罗拉克 Nalorakk
简阿莱 Jan’Alai
亚齐尔索 Akil’Zon
哈拉兹 Halazzi
战争领主金扎克 Warlord Jin’Zakk
祖尔金 Zul’Jin

野外团队级领袖
Outdoor Raid Encounters
艾索雷葛斯 Azuregos
伊森德雷 Ysondre
艾莫莉丝 Emeriss
泰拉尔 Taerar
莱索恩 Lethon
伊兰尼库斯 Eranikus
年兽 Omen
桑德兰王子 Prince Thunderaan
暮光腐蚀者 Twilight Corrupter
巨齿鲨 Maws
亚什巨甲虫 Colossus of Ashi
雷戈巨甲虫 Colossus of Regal
佐拉巨甲虫 Colossus of Zora
诺克霍尔中将 Lieutenant General Nokhor
洛曼卡恩大使 Emissary Roman’khan
大元帅维拉希斯 High Marshal Whirlaxis
斯卡德诺克斯王子 Prince Skaldrenox
斯古恩男爵 Lord Skwol
卡苏姆男爵 Baron Kazum
吞噬者特雷姆斯 Teremus the Devourer
魔王库鲁尔 Highlord Kruul
沙图尔 Shartuul
末日行者 Doomwalker
末日领主卡扎克 Doom Load Kazzak