2008年8月8日 星期五

人類覺得有趣的慾望分析

在我還在遊戲產業擔任企劃Leader的時候,我就在想一個問題,為什麼搞創意一定要這麼麻煩,有沒有一種驗證的方法,可以直接就來檢驗現在的Idea有沒有發展性、有不有趣,於是我就去思考一個問題--人類,到底對擁有那些要素的事物會覺得有趣,於是著手去從娛樂產業中,去分析出一些共通要素出來,於是做成了以下的東西 :

人類覺得有趣的慾望分析

編號

慾望名稱

要素分析

001

自我成長、明顯的成長

數值;視覺;外觀變化

002

收集

道具;裝備;有限制的收集品

003

數量很多的敵人、無腦殺

打擊大量敵人;直覺式攻擊;按鈕就有反應;像揉死一堆螞蟻一樣的快感

004

思考、鬥智、策略

動腦;有思考的時間;決策;勝負

005

惡搞、諷刺、對比

好笑;諷刺的事物;幽默的點

006

劇情

幻想;與小說、漫畫、電影同等價值

007

等待時機、命中

命中的快感;抓取瞬間的時機

008

組合、調配

各種組合獲得結果;變化多樣化

009

模擬、真實互動

真實的去模擬無法親身體驗的情境

010

速度感

高速賽車;快速移動;有阻礙物

011

自由落體

害怕的刺激感;落體的恐懼感

012

可愛

外觀;動作;聲音;象徵物

013

帥氣、酷、漂亮、華麗

外觀;符合潮流;未來感;色彩鮮艷;色彩分明

014

對戰、優越感

比對手強的慾望;比玩家強的慾望

015

自動化、夢想、一步登天、懶惰

自動做事;有人服侍,不需要自己動手;突然而來的財富

016

角色伴演

去伴演自己喜歡的角色,去做自己希望他做的事

017

好奇心、恐懼感

對未知事物的恐懼,卻又想挑戰;偷窺;偷偷摸摸怕被人發現

018

犯罪、慘忍、虐待、暴力

滿足現實生活中無法達成的事物;殺人;虐待;肢解

019

女人、異性

喜歡看到美麗的女人或異性

020

擬人化

非人類做出人類才能做的事

021

發現、搜索、探險

去尋找隱藏的事物

022

溫馨、溫暖、親情、感動、愛情

有被關懷的感覺

023

期待、暗示

期望會有似乎是預期中的事情發生;利用按示的方式來誘導玩家期待

024

養成、塑造、建構

看著非自己以外的人或物逐漸成長;越來越豐富

025

躲藏、藏匿

盡力的不要被發現;躲藏起來不希望被發現,被發現後將發生可怕的事

026

九死一生、反敗為勝、好險、賭一把、賭博

到達山窮水盡的地步,卻突然大獲全勝的快感

027




想想,這還真是一件有趣的事呢,而且人類所追求有趣的因素,似乎是隨著人類的發展而越來越多,不過最骨子裡的,應該還是一樣的東西吧!!

與遊戲開發製作相關的職務名稱

由於本人在遊戲產業待了一陣子,也待過程式、企劃職務等等的經歷,在對於台灣遊戲產業的分工狀況一直不敢恭維,甚至我認為有大部份的產業人士也不是那麼的清楚劃分的臨界點在哪裡,大部份只要是分成程式、企劃、美術三大部份,那再更細節呢?就甚少人討論了,以下將我找到日本遊戲產業的相關書籍說明的職務名稱列如下:

出處

ゲームの全仕事2002

(Game的全部工作2002)

なりたいゲームクリエイター

(想要成為Game Creator)

めざせGAME

クリエイター

(目標Game Creator)

ゲームクリエイター完全養成マニュアル

(Game Creator完全養成手冊)

Game Architecture and Design

作基本Concept

監督

Game Designer

Producer

Director

Producer

Director

Game Designer

Producer

Director

Game Designer

Producer

Director

Game Designer

Chief Architect

Project Manager

基本劇本

Planer

Scenario Writer

Planer

Scenario Writer

Planer

Scenario Writer


Software Planer

畫面相關

畫面作家

Animator

Creature Designer

CG Artist

Illustrator

2DCG Designer

3DCG Designer

Graphic Designer

Character Designer

2D Illustrator

3D Illustrator


Chief Artist

Artist

音樂/音效相關

作曲家

Sound Composer

音效監督

Sound Creator

Sound Composer

Sound Creator

Sound Programmer

Sound Designer

Musician

音效技術人員

其他技術





其他的技術人員(例如Motion Capture)

Programming

Programmer

Programmer

Programmer


Chief Programmer

Programmer

品質保證Test

Debugger



Debugger

品質保證負責人員

品質保證技術人員

Play Tester

2008年8月6日 星期三

製作純資源DLL的方法

僅含資源的 DLL 是指僅包含資源而不包含其他項目的 DLL,例如,圖示、點陣圖、字串和對話方塊。使用僅含資源的 DLL 是在多個程式間共用一組相同資源的好方法,也是為應用程式提供當地語系化為多國語言的資源的好方法。

若要建立僅含資源的 DLL,請建立新 Win32 DLL ( MFC) 專案,並且將您的資源加入專案。

  • [新增專案] 對話方塊中選取 [Win32 專案],並且在 [Win32 專案精靈] 中指定 DLL 專案類型。
  • DLL 建立包含資源 (例如字串或功能表) 的新資源指令碼,並儲存該 .rc 檔案。
  • [專案] 功能表上,按一下 [加入現有項目],並且將新的 .rc 檔案插入至專案。
  • 指定 /NOENTRY 連結器選項。/NOENTRY 可以防止連結器將 _main 參考連結至 DLL;建立僅含資源的 DLL 時需要這個選項。

  • 建置 DLL

使用僅含資源的 DLL 的應用程式時應該要呼叫 LoadLibrary 明確連結 DLL。若要存取資源,請呼叫可以使用在任何類型的資源的 FindResource LoadResource 泛用函式,或者是呼叫下列資源特定函式的其中之一:

  • FormatMessage
  • LoadAccelerators
  • LoadBitmap
  • LoadCursor
  • LoadIcon
  • LoadMenu
  • LoadString

應用程式應該在完成資源使用時呼叫 FreeLibrary

範例程式

#include "..\Mod1res\resourceppc.h"

#include "WelComeModule.h"

WelComeModule::WelComeModule()

{

m_pWelcomeBitmap = 0x0;

}

WelComeModule::~WelComeModule()

{

SetActive(false);

}

void

WelComeModule::SetActive(bool bActive)

{

if (m_bIsActive==bActive)

return;

m_bIsActive = bActive;

if (m_bIsActive)

{

if (!m_pWelcomeBitmap)

m_pWelcomeBitmap = new CBitmap;

//載入資源DLL

if (!m_hResourceDLL)

m_hResourceDLL = (HINSTANCE)LoadLibrary(_T("Mod1res.dll"));

if(m_hResourceDLL)

{

m_hOldResource = AfxGetResourceHandle();

AfxSetResourceHandle(m_hResourceDLL);

HBITMAP hBitmap =

::LoadBitmap(AfxGetResourceHandle(), MAKEINTRESOURCE(IDB_WELCOME));

_bLoad = m_pWelcomeBitmap->Attach(hBitmap);

AfxSetResourceHandle(m_hOldResource);

m_hOldResource = 0x0;

}

else

m_bIsActive = false;

}

else

{

if (m_pWelcomeBitmap)

{

BOOL check = DeleteObject(m_pWelcomeBitmap->Detach());

delete m_pWelcomeBitmap;

m_pWelcomeBitmap = 0x0;

}

//卸載資源DLL

if (m_hResourceDLL)

{

if (FreeLibrary(m_hResourceDLL)==true)

m_hResourceDLL = 0x0;

}

}

}

void

WelComeModule::Render(CDC* pDC)

{

if (!m_bIsActive)

return;

if (!m_pWelcomeBitmap)

return;

//初始化Memory DC

CDC MemoryDC;

MemoryDC.CreateCompatibleDC(pDC);

//取得圖片尺寸

BITMAP bm;

m_pWelcomeBitmap->GetObject(sizeof(bm), &bm);

MemoryDC.SelectObject(m_pWelcomeBitmap);

//將圖貼到要秀的DC

pDC->BitBlt(View_Offset, View_Offset, bm.bmWidth, bm.bmHeight,

&MemoryDC, 0, 0, SRCCOPY);

}

三分之一的人生哲學

如果人生可以重來,我想告訴重來的自己,你的人生應該是這樣規劃才好 :
假如你可以活到75歲的話,你應該花25年的時間來充實自己的知識與能力,用25年的時間努力工作追求事業的巔峰,最後用25年的時間來陪你心愛的家人與到處遊歷。
你也該告訴不到25歲那個貪玩的小子,你在30歲就會後悔你沒有領悟到這個三分之一的哲學。

2008年5月9日 星期五

[轉貼]error LNK2001: 無法解析的外部符號

好多初學者在用DX SDK寫自己的應用時,都莫名其妙的發現如下幾個類似的編譯(更準確地說是鏈接)錯誤:

FDraw.obj : error LNK2001: 無法解析的外部符號 _IID_IDirectDraw7
FDraw.obj : error LNK2019: 無法解析的外部符號 _DirectDrawCreate@12 ,該符號在函數 "int __cdecl DDInitialize(void)" (?DDInitialize@@YAHXZ) 中被引用
FInput.obj : error LNK2001: 無法解析的外部符號 _GUID_SysKeyboard
FInput.obj : error LNK2001: 無法解析的外部符號 _IID_IDirectInput8A
LIBCD.lib(wincrt0.obj) : error LNK2019: 無法解析的外部符號 _WinMain@16 ,該符號在函數 _WinMainCRTStartup 中被引用
dinput8.lib(dilib1.obj) : error LNK2001: 無法解析的外部符號 _GUID_ZAxis
dinput8.lib(dilib1.obj) : error LNK2001: 無法解析的外部符號 _GUID_YAxis
dinput8.lib(dilib1.obj) : error LNK2001: 無法解析的外部符號 _GUID_XAxis
dinput8.lib(dilib2.obj) : error LNK2001: 無法解析的外部符號 _GUID_Key
Debug/sword.exe : fatal error LNK1120: 9 個無法解析的外部命令

而且這種問題是很奇怪的;不過其實並不很複雜。

首先,你大概知道,在使用DX SDK之前,應該在選項裡面,把lib和include設置好,不過這並不代表你的代碼在編譯的時候會自動應用*.lib(比如說ddraw.lib),你需要在你的DX封裝的cpp對應的header裡加上類似的如下幾句:

#pragma once
#pragma message("FDraw.h --> Linking with ddraw.lib")
#pragma comment(lib,"ddraw.lib")

這幾行文字就相當於告訴編譯器編譯的時候把 ddraw.lib 中有用的部分(?)也編進去。

試試看,加上相應的幾句,是不是沒有什麼 error LNK2001 了?