2008/9/14

魔獸爭霸的流行地圖

魔獸中有許多玩家自製的地圖

有一種地圖類型是dota

例如:信長、三國、OS 和其他一堆

這些地圖的作者會一直修改地圖,加入新的元素或是保持遊戲的平衡

有時候地圖也會換作者

這樣產生了許多的版本

而每個版本有自己的支持者(就是玩該版本的玩家)

最近三國多了兩個版本的地圖

原本是三國4.9

新出的地圖分別叫做三國5.0跟新三國4.9

但是新出的地圖在小熊伺服器上卻沒什麼人玩(無人支持)

根據梅特卡夫定律(Metcalf’s Law). 網路的價值與網路使用者數目的平方成正比

意思是遊戲地圖的價值與地圖支持者數目的平方成正比

如果一張地圖玩的人很少,該地圖玩家會因為遊戲人數太少,而無法順利進行遊戲,最後甚至改玩其他地圖

所以地圖支持者多的地圖,會得到更多的玩家,最後也將吸收其他版本地圖的玩家

就好像政治

想要當總統就要有很多的支持者

而在政治上,宣傳的手法很多

但在地圖上,宣傳的手法實在很少

如果我是地圖製造者,我會希望我的地圖有許多玩家

那麼我就會找一群忠實擁護者來宣傳推廣這張地圖

例如到小熊建立遊戲之類的

而不是地圖作好提供載點而已。

2008/8/19

windows API

關於c++使用unicode:

 標頭檔:
  #include

 必要程式:
  setlocale(LC_ALL,"");

 寬字串變數宣告範例:
  WCHAR *str = L"測試";

 寬字串變數印出範例:
  wprintf(L"%s\n", L"測試");

 char * 轉 WCHAR範例:
  char *a = "test";
  WCHAR b[1000];
  swprintf(b , L"%S" , a);

重點筆記:
"%s" 和 "%S" 有極大的差距。

2008/8/10

依希歐之夢

這遊戲實在是太妙了

竟然可以在遊戲裡面遇到Di Gi Charat 的 Dejiko



他說他害羞了


他還開了一間店






接下來是海盜泰迪熊的小故事

他們的海盜船炮火十分猛烈,接近就要爆炸


不要靠近


海盜船的秘密




海盜泰迪的基地守衛


進入前要發誓效忠海盜


不想發誓



不發誓就不給過...好吧
發誓一下好了



泰迪真任性

2008/7/29

新行業聯想

先講講格子趣

大家應該都知道他是租格子給別人寄賣東西的店
我第一次看到這種店的時候
我聯想到的是網路遊戲中拍賣所的實體化
再來想到的是拍賣網站的實體化

這告訴我們什麼?
虛擬世界的實體化,可以成為新行業

今天的重點是跑腿幫
我之前看到這個幫人排隊的工作時,沒有聯想到什麼東西

但是今天有聯想了

我聯想到的是網路遊戲中玩家向NPC接任務
任務需要跑很多地點
跟各種不同NPC講話
最後完成任務取得任務獎賞

再來想到的是許多奇幻小說中都會提到的傭兵團和冒險者工會
雇主可以在冒險者工會發包任務,提供任務獎賞
傭兵可以在冒險者工會接受任務,完成任務後取得任務獎賞

事實上,跑腿幫就是一個傭兵團...
目前社會還缺少一個冒險者工會

誰要來創一下新行業?

2008/7/27

c++ header 建立

現在有兩個class 互相使用對方的指標

我把全部的code 放在同一個檔案是可以編譯的

== 程式碼 ==

class B;

class A
{ 
 B* b;
 A方法的宣告
};

class B
{
 A* a; 
 B方法的宣告
};

A方法的實作
B方法的實作


== 換成.h 後 ==

A.h:
 #pragma once
 #include "B.h"
 class A
 {
  B* b;
  A方法的宣告
 };

B.h:
 #pragma once
 class A;
 class B
 {
  A* b;
  B方法的宣告
 };

A.cpp:
 #include "A.h"
 A方法的實作

B.cpp: 
 #include "B.h"
 B方法的實作

====

標頭檔編譯不能的錯誤訊息是:使用未定義的型別 A

請問該如何修改才能使標頭檔順利編譯?

PS:A方法會呼叫B方法或屬性
  B方法會呼叫A方法或屬性

====

解決方法1 by LPH66:
 在.cpp中兩個.h都#include進來

解決方法2 by adrianshum (Alien):
 a.h:
 #pragma once
 class B; //forward declaration
 #include "b.h"
 class A {
  private:
  B* b;
 };
 
 b.h:
 #pragma once
 class A; //forward declaration
 #include "a.h"
 class B {
  private:
  A* a;
 };