用 Python 語言來寫游戲

每個程序員差不多都是從計算機愛好者開始的,尤其是那些令人心醉神迷的電腦游戲,不僅造就了整個游戲產業,推動了計算機行業軟硬件的升級,而且吸引了大量的愛好者最終加入了游戲軟件開發的行業。騰訊、網易、盛大、完美時空等公司的巨大現金流都來源于游戲產業。

我小時候玩過街機,魂斗羅、俄羅斯方塊、Quake、三角洲、Fifa、魔獸世界、魔獸爭霸等,可能會參與完美時空的游戲開發。現在的熱門游戲是王者榮耀、吃雞等等,我的興趣雖然已志不在此。

當然,我本人也非常喜歡玩游戲。我喜歡自由自在的游戲和需要腦力的游戲。比如,“GTA 系列”“老滾系列”和“三國志系列”。在玩游戲的過程中,我體會到各種各樣的樂趣,同時,作為開發者,我也會從專業的角度出發,思考這款游戲究竟是如何制作出來的。

我發現,喜歡玩游戲的人,都很有興趣自己做一款游戲。哪怕自己不懂編程,但是自己做做策劃,懂美術的話自己做做圖,能讓自己的游戲跑起來,就是一件幸福的事情。

我看過網上各式各樣的“傻瓜式”游戲開發工具,比如 RPG MAKER。任何不懂編程的人,只需要導入規定的模板,就能方便地開發出一款游戲。然而,這種方法只能開發某一類非常簡單的游戲。如果想要開發出一款真正意義上的游戲,還是要借助編程基礎和系統的開發知識。

我舉幾個簡單的例子,你就明白了。

1、在《守望先鋒》里,我們看到的子彈射擊,對方被擊傷,這些都是經過怎樣不斷地網絡優化實現的呢?還有各種網絡預判模型,你是否都了解呢?

2、我們玩的《星際爭霸》,究竟是每個線程控制一個兵種,還是一個線程刷新全部兵種畫面?

3、《魔獸世界》如此龐大,它是如何將海量邏輯寫在游戲客戶端里?將邏輯編寫成硬代碼顯然不理性,寫成配置文件又缺乏機動性,那它是怎么做到的呢?

4、另外,我發現,很多公司在開發游戲的時候,選擇引擎也是一個尷尬事。是自己研發一款引擎還是購買別家成熟的引擎呢?引擎的好壞,對開發的游戲來講有什么影響?很多人也是不知道的。

1、我將會盡量選擇簡潔的 Python 語言來編寫。我會從最上層的腳本語言 Python 的使用開始,剖析為什么游戲開發要從這里開始。在用到 C/C++ 代碼的地方,我將會盡可能地使用簡單易懂的語法來示范,所以,其實你只需要懂點兒英文就可以了(笑)。

2、我會盡量選擇簡單的開發工具,而不是動輒幾個 G 的開發工具。比如“VS 系列”,比如各種復雜的 IDE。簡單的開發工具足夠簡單明了地讓你了解開發的具體流程,快速進入狀態,而不是在設置工具上浪費大量的時間和精力。

3、我會盡量避免特別復雜的底層知識,但是也不會一帶而過。我會幫你一步步梳理開發的流程,并仔細剖析,在 C/C++ 中如何控制計算機的各種設備,操作計算機的各種硬件。或許你還會在編譯中遇到問題,我也會一步一步,由淺入深,教你如何解決編譯問題。

4、我將用制作“打飛機”游戲 demo 的過程,來完成游戲開發內容的分解步驟講解。之所以選擇“打飛機”作為游戲 demo,是因為它的開發過程幾乎涵蓋了我要講述的所有開發流程,包括操作、畫面的前后遮擋、圖像的碰撞和切換、資源包、腳本語言等等。


1、我會先帶你熟悉游戲開發的基礎概念。包括開發游戲需要涉及的基礎知識和需要準備的工具:游戲引擎、底層圖形接口和地圖編輯器。

2、然后從 0 開始搭建一個游戲窗體,往窗體里添加圖形、界面和操作。

3、我還會講解如何嵌入腳本語言。畢竟使用硬代碼編寫游戲邏輯并不是一個很好的選擇,而腳本語言的嵌入,可以讓我們很方便地完成游戲的邏輯開發。我們只需要將底層圖形圖像的顯示、函數等捆綁好,接下來交給腳本語言就好了。

4、除此之外,我還會闡述各種平臺上的游戲開發和實現,帶你學習一些最近熱點的游戲開發知識。比如 HTML5 游戲和手機移動平臺游戲。我們已經有了游戲開發的基本知識,也掌握了游戲開發的流程,再來看這些游戲的開發,就會變得很輕松了。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/451585.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/451585.shtml
英文地址,請注明出處:http://en.pswp.cn/news/451585.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

各種操作系統簡介和功能分析

Windows 開發商 Microsoft Windows98/me Windows2000/XP Windows Server2003 Windows Vista Windows98/me是基于MS-DOS的混合的16/32位操作系統正慢慢的退出PC舞臺了,2000/X P以及Server2003都是基于WindowsNT的32位操作系統,XP/Server2003已經有64位版本了。 Vista是微軟最…

Cookie與Session的區別

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 cookie機制 Cookies是服務器在本地機器上存儲的小段文本并隨每一個請求發送至同一個服務器。IETF RFC 2965 HTTP State Management Mec…

python實現簡易工資管理系統(Salary Manage)源碼

一、需求: 1.導入文件讀取員工的信息和工資信息,最后將增加、刪除或修改的員工工資信息寫入原來的文件中 2.能夠實現員工工資信息的增刪改查 3.當增加和修改員工信息時用戶用空格分隔員工姓名和薪資 4.實現退出功能 二、思路 1.首先需要將包含有員工薪資…

python 的作用

print正常是要輸出到屏幕上,如果你希望輸出到其他地方比如文件,就需要使用>>來把輸出導向到文件。空格的目的是要區分關鍵詞,如果你輸入的是print>>,電腦會把它當成一個單詞,而無法知道是print函數。

操作系統內存管理

參考文獻: 20 張圖揭開內存管理的迷霧 感謝三太子敖丙分享!

hexo github搭建博客常用的命令

這些命令你都用過嗎? npm install hexo -g #安裝 npm update hexo -g #升級 hexo init #初始化 hexo new "postName" #新建文章 hexo new page "pageName" #新建頁面 hexo generate #生成靜態頁面至public目錄 hexo server #開啟預覽訪問端口&a…

寫博客的好處,專家告訴你

把自己平時在做項目時和自己學習時的一些經驗和心得記錄下來。那樣,首先可以增強自己對知識點的理解;其次,以后再用到的話,可以很方便的查詢;最后,才是分享給大家,可以在用到這方面的知識的時候…

解決報錯:java.util.UnknownFormatConversionException: Conversion = ‘p‘

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1. ssm框架下 報錯如題 2. 錯誤原因:我的情況是,代碼中實體屬性映射書寫和數據庫字段名字不一致。 選中位置數據…

JVM和JMM的區別

參考文獻: java中JVM和JMM之間的區別 感謝作者分享!

[Java][網絡編程]服務端向客戶端發送信息

/*前置知識(服務端)1.首先要常見一個ServerSocket對象 服務端套接字,并且在服務端套接字里面確定需要使用的端口2.然后要創建一個Socket對象來接收ServerSocket的返回值。通常一個Socket對象對應一個客戶端/涉及到多個客戶端需要通過線程來解…

【Python】如何判斷一個字符串為空

#方法一 if oneString: print "not empty" else: print "empty" #方法二 if oneString "": print "empty" else: print "not empty"

LRU 實現緩存

LRU:Least Recently used 最近最少使用 1.使用LinkedHashMap實現 inheritance實現方式 繼承map類 可以使用Collections.synchronizedMap方式實現線程安全的操作 public class LruCache<K,V> extends LinkedHashMap<K,V> {private final int MAX_CACHE_SIZE;public …

使用vsftp作為集群的yum倉庫

地址規劃&#xff1a;vsftp服務器的地址為172.16.1.61使用的環境&#xff1a;[rootnfs01 scripts]# uname -a Linux nfs01 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux首先在yum服務器上掛載本地光盤mkdir /media/cdrom ;mount…

純做技術是自娛自樂 拋開技術做技術才是出路

短短一生不過數十載&#xff0c;對于很多人而言&#xff0c;作IT、作技術只是生命中的某一段&#xff0c;并非所有。而無論是換工作還是換行業&#xff0c;只是一種形式而已&#xff0c;最終我們追求的是成功、是榮譽、是收獲。于是在年輕的這幾年里&#xff0c;作為技術人員理…

TOAD連接Oracle數據庫失敗:OCI_INVALID_HANDLE解決

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. toad 連接Oracle數據庫連接失敗如圖&#xff1a; 2. 導致這個情況的前因&#xff1a;toad運行情況下&#xff0c;突然斷電。 3. 解決…

多線程三大特性:原子性、有序性、可見性

參考文獻&#xff1a;三大性質總結&#xff1a;原子性&#xff0c;有序性&#xff0c;可見性 感謝作者分享&#xff01;

git checkout 和 git reset

git checkout 主要有三個作用&#xff1a; 第一個就是切換分支。例如你從遠程倉庫clone下來所有的源代碼&#xff0c;你git branch一下會看到你通常是在master&#xff0c;如果你想切換到某一個分支上呢&#xff1f;git checkout <branchname>第二個就是放棄對某個文件的…

python-訪問者模式

源碼地址:https://github.com/weilanhanf/PythonDesignPatterns 說明&#xff1a; 訪問者模式的基本想法是&#xff0c;軟件系統中擁有一個由許多對象構成的、比較穩定的對象結構&#xff0c;這些對象的類都擁有一個 accept 方法用來接受訪問者對象的訪問。訪問者是一個接口&am…

面試題:Fibonacci數列

題目描述&#xff1a;大家都知道斐波那契數列&#xff0c;現在要求輸入一個整數n&#xff0c;請你輸出斐波那契數列的第n項&#xff08;從0開始&#xff0c;第0項為0&#xff09;。 方法1&#xff1a;遞歸 public class Solution {public int Fibonacci(int n) {if (n 0){retu…

“行到水窮處,坐看云起時.“

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 自由自在&#xff0c;隨意而行&#xff0c; 只沿著流水向上&#xff0c;不知不覺的就走到了泉眼盡頭&#xff0c; 無路可走的時候 &…