RogueLike in Linux C++-專案設定與GitHub

參考教學:
Complete roguelike tutorial using C++ and libtcod - part 1: setting up

本篇文章主要有三個重點:

  1. 改用 Makefile 編譯 g++。
  2. 使用 GitHub 版控。
  3. 執行第一支 main.cpp 程式 (可以移動行走)。

改用 Makefile 編譯 g++

嘗試使用 Code::Block & CodeLite 等 IDE 均不滿意,想說既然是在 Linux 環境下,還是熟習較基本的編譯環境以及使用 Vim 開發,如此爾後的可控制性也會較好 (越來越喜歡這類命令列的指令模式,初學困難但會倒吃甘蔗)。

使用最普及的 Makefile 來編寫 c++ 的編譯腳本。目前對其語法並不熟悉,就是先針對現在的專案目錄結構,可以順利編譯位於 src/ 資料夾下的 main.cpp,以及可以執行所編譯產出的執行檔即可。

SRCDIR = src
INCDIR = include
LIBDIR = lib
CPP = g++
 
# CFLAGS = -O2 -s -w -std=c++11 -I$(INCDIR)/nwbd -I$(INCDIR)/tcod
CFLAGS = -g -Wall -std=c++11 -I$(INCDIR)/tcod
 
# Determine if operating system is 32-bit or 64-bit
 ifeq ($(shell uname -m),x86_64)
 	# These are the definitions specific to 64-bit systems
	LFLAGS = -L$(LIBDIR)/x86_64 -ltcod -ltcodxx -Wl,-rpath=$(LIBDIR)/x86_64
 else
	#These are the definitions specific to 32-bit systems
 	LFLAGS = -L$(LIBDIR)/i386 -ltcod -ltcodxx -Wl,-rpath=$(LIBDIR)/i386
 endif
 
SUFFIXES: .o .hpp .cpp
 
all: clean tuto
 
tuto:
	@$(CPP) $(SRCDIR)/*.cpp -o tuto $(CFLAGS) $(LFLAGS)
 
clean:
	@rm -f tuto

閱讀全文 »

絕對是 RPG RogueLike 的神作-TOME 4 (馬基埃亞爾的傳說)

這兩天星期假日,沈迷於玩 TOME4 (中文翻譯為 馬基埃亞爾的傳說) RogueLike PC 電玩。

其實幾個月前就已安裝試玩過,不過當時我還以為是那種印地安尋寶探險之類的 Roguelike 遊戲 (開頭畫面讓我一直這麼以為);而且那個時候我下載了一堆 Roguelike 開源遊戲一一試玩,想比較下哪個遊戲可以持續地玩 (最好能玩好幾年)又不會膩。當時還以為「DWARF FORTRESS」應該會適合我,但其實那款遊戲深度相當深,又要閱讀極大量的英文對我仍是相當吃力;況且我還是比較喜歡以前五專時期最愛的 ULTIMA RPG 類型,所以關於 Roguelike 我還是偏好 RPG-Style 的遊戲。

反正輾轉玩了幾款經典的 Roguelike,包括 DCSS (Dungeon Crawl Stone Soup ),嗯,那種無盡的地下城打怪還是不太適合我。但上個星期重新接觸了 TOME 4,卻發現到它綜合了許多 RPG 要素-進城鎮與村民交談、接任務、進隨機地下城打怪、練裝備、升等﹍,喔,這還要符合 Roguelike 「一次都不能死 (TOME4 比較仁慈,冒險模式提供四條生命)」,實在超刺激有趣!
Tome4-01

大陸對岸的 3DM (俗稱三大媽) 論壇,有提供了 TOME4 的討論版,還提供有幾乎與官方網站最新釋出版本的漢化版Addon,這使得剛初窺這類型遊戲的初玩者不致被大量的英文給卻步,而誤失了遊戲豐富的內涵。
Tome4-03

閱讀全文 »

RogueLike in Linux C++-安裝所需函式庫

參考教學:
Complete roguelike tutorial using C++ and libtcod - part 1: setting up

原文教學系列係以 libtcod 函式庫 為 RougeLike 核心開心的引擎。原文即說明了 libtcod 的主要功能:
libtcod is a free, fast, portable and uncomplicated API for roguelike developpers providing an advanced true color console, input, and lots of other utilities frequently used in roguelikes.

有個開源的即時戰略遊戲:ASCIIWar,竟然就是以 libtcod 所開發的 ASCII 字符純文字遊戲,但卻又能展現出即時戰略的效果。

首要安裝套件 (pre-requisite):

Ubuntu 14.04 需安裝 libsdl1.2debian 套件;Raspbian 則已預先安裝。

$ sudo apt-get install libsdl1.2debian

** 另外兩者尚須安裝 libsdl1.2-dev 套件 (如此編譯 libtcod 才不會有問題):

$ sudo apt-get install libsdl1.2-dev

SDL (Simple DirectMedia Layer) is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D.

閱讀全文 »

RogueLike in Linux C++-寫在前頭

我想再利用閒暇時間瞭解下 Linux 的程式開發,以俾得以對 Linux 系統底層有更進一步的應用與控制。因為未來開放式硬體的架構 (ex. Raspberry Pi, BeagleBoard, Cubieboard ...etc),必然是以 Linux 為開源系統,並以此為基準點,建立各類硬體裝置控制的應用。

我偏好採用 C++ 作為 Linux 開發的程式語言,畢竟 Linux 系統底層/服務 大都以 C/C++ (其實還是要當為兩種不同的語言,只是 C++ 可以很容易引用 C 的函式庫。)來開發的。再則:

  • 高移植性:重點在於函式庫的跨平台 (Windows/Linux ...)、跨硬體架構 (Intel/ARM-based CPU)!且太多開源各類的函式庫可資引用,方便太多。
  • High-Performance。
  • 物件化的始祖:畢竟我還是習慣採物件化的思維來設計與開發,具 OOP 的機制還是會比較直覺。

我希望初期先透過一個主題來持續學習與實踐 C++ 的開發 (先不需牽扯到系統底層處)。因為畢竟與工作無關,且是當成休閒嗜好的輕鬆態度學習的;所以我想乾脆就把 RogueLike 遊戲 的程式開發作為學習的標的。

因為我現在也正在玩 DCSS (Dungeon Crawl Stone Soup),而 RogueLike Game 不需著重在畫面音效等,僅需利用 ASCII 字符的格狀畫面來呈現即可,所以就不用考量到畫面效果的處理技術。另外一點很重要的是,大部分的 RogueLike 遊戲係以 Open-Source 連原始程式碼都免費釋出,還有許多教學資源可供充分的研究與學習。

我就打算以這一系列-Complete roguelike tutorial using C++ and libtcod,作為我學習以 Linux C++ 開發 RogueLike 遊戲的教案,然後逐步的把心得筆記下來。

總之,我是打算抱著很輕鬆的態度來學習 Linux C++ 的,應該是會視之為 long-term 的學習歷程。

閱讀全文 »

聊聊 RogueLike 類型的電玩遊戲

從去年玩 Diablo3、TESV (上古卷軸5),又因為熊貓圓仔的關係,回去 WOW (魔獸世界)練了一隻熊貓人至90級。這些都是畫面聲光俱優的大型電玩,但總感覺有些許的失落感,找不回以前學生時代玩 Ultima (創世紀)系列的熱情與無時的回憶。

嗯,所以打算回頭找找 Ultima-Like 的 RPG,著重故事結構,而畫面仍是那種點陣像素圖,人物一格格的透過鍵盤方向鍵移動。

這樣找下來,才發現原來早有一類算是被歸於 RPG (Role Playing Game)次類型遊戲,稱之為 RogueLike

RogueLike 的遊戲主要特色為-無限產生的隨機關卡;區塊式貼圖(tile-based);最後最重要的一點就是玩家的角色死亡,就代表整個遊戲結束了 (GG, Game Over),無法透過 L&S (Load and Save)大法回復。

再探查 RogueLike 的遊戲發展歷史,才知道早於 1970 年代,它是作為在 Unix 主機上一種「測試 (Test)」的應用程式,並廣泛流傳於系統管理者與資訊科系的學生族群。再經過10餘年間的發展,RogueLike 已儼然成為遊戲的主流之一。更重要的是,它著重於遊戲的本質內涵,而普遍以所謂的「Ascii」字符簡單畫面呈現,並大多以 Freeware,甚或源碼開放 (open-source)的免費授權散佈。

早期最有名的 RogueLike 遊戲應以 NetHack 為代表。它也可以被定位於典型的 RPG 遊戲-除了沒有特定的劇情故事與掛一次就 GG 外,都是組隊、探索地下城、練功、打寶,一直循環...直到你總有一天會 GG。

這樣到底有啥好玩?請看看這篇的介紹-如果妳一生祇打算做一件事的話,玩 NetHack 。 內文用了四個字就足以形容 NetHack-深度卓越!從遊戲的過程中,透過文字的描述而蘊藏著豐富的故事典故與互動的表達,那才是讓玩家有著無限的想像自己神遊於所探索的奇幻世界。

目前該遊戲係以開源專案托管於 SourceForge,玩家給予的評價為 4.5顆星 (這很有趣,幾乎都評價為 5顆星,但極少數人則評為1顆星,相當兩極化。)。而目前所釋出的 3.43 版本多大容量呢? 5MB !!,沒錯,拿最舊的 USB 行動碟安裝攜帶著到任一平台的電腦都可以玩的。

一般這類 RougeLike 的所謂 ASCII 字符畫面就是長如下圖這般:

集中式版控系統模型

圖1、NetHack 文字圖形介面 (ref. Wiki)

閱讀全文 »

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal