如何看待CE5繼Unity之後又一個支持C#?


謝邀。

首先膜拜一下

一個語言的命運當然要靠自我奮鬥,但是也要考慮歷史的進程,我絕對不知道,作為一個專註於cs,bs開發的語言怎麼把我叫去做遊戲來了。所以unity叫我來做腳本,我說,另請高明吧,我實在不是謙虛啊,我一個高大上的語言怎麼可以做腳本這種低端活呢?但是CTO和我說「大家都研究決定了。」後來,我念了一句詩:苟利點耐生死以,豈因禍福辟驅之。

@戴路

如何評價CryEngine V? - 知乎用戶的回答

1、C#語言伸縮能力強,從unsafe,到async,可以選擇性實現。

2、C#是靜態語言,性能不差,而且編寫時候就能通過語法檢查很多錯誤,相對穩定。

3、C#是個成熟的語言,坑少,開源,腳本引擎實現已有先例。

4、C#語言自身是為各種方便的模式而設計,如前所說的async,使用很方便

5、C#是C族語言,容易入門。

6、使用C#不用擔心被告。

綜上C#是個很好的選擇。


這更加說明C#是一門優秀的編程語言啊,在國內Web開發被PHP和Java長期佔據的這樣一種現狀下,越來越多的遊戲引擎支持C#語言,其實是在給微軟技術陣營里的開發者謀求出路,Unity3D就是非常好的例子。

使用C#作為腳本語言,從某種程度上來說是Mono的作用,因為通過Emebdding Mono技術可以將Mono運行時嵌入到C/C++程序中,這樣C#可以作為腳本級別的語言和底層進行交互,這種架構非常適合遊戲開發,Python和Lua都是腳本語言,編程語言都是工具啊,做什麼很重要。

關於C#語言的優點在答案中已然給出了,所以對這個問題就不再贅述了,現在微軟正以開放的心態迎接世界,隨著.NET開源、Visual Studio 2015 社區版免費、Visual Studio Code等一系列事件,我覺得這個事情非常合理啊,有一個跨平台的工具Mono和一門優秀的編程語言C#,CE何樂而不為呢?雖然相比Unity和虛幻顯得有點晚!

2016年4月5日更新:

昨天得知Unity正式加入.NET基金會,微軟將幫助Unity完善Mono編譯器、運行時和基礎類庫,如果繼續支持IL2CPP這種黑科技就更好了,可以解決C#相對C++的效率問題,這是一個多麼激動(≧▽≦)/的消息啊,自從新任CEO上任以來,微軟越來越讓我喜歡了,像Win10這種一統江湖捨我其誰的霸氣和在Windows里引入Linux技術以及吸引Windows平台以外的開發者關注微軟的技術,這種氣概除了我巨硬(⊙o⊙)哦不我微軟還有誰呢?哈哈

再次更新:

我不是要黑Java,以有沒有使用過SSH三大框架來評價一個人的技術,這隻有Java做得出來=_=


C#強大,.Net開源,VS免費。綜合起來看,是個很不錯的選擇了。


據說Unigine也全面支持傳C#了,所以首先你需要會用CE/Unigine


謝邀。c#大法好,ce沒前途(大概)。回答完畢。


易用性易學性並不比js差,有內存管理理機制初學者更放心,而且各種工具庫支持,語法也簡潔不奇葩更靠近C++,是腳本編程遊戲的不二之選。


支持c#不算啥。以後會出現c#編寫的引擎。理由是,引擎需要開源定製才能真正提高生產力,c++的代碼風格太雜亂,抽象能力不足,成本高。

編程不是宗教,生產力才是最終決定因素。再怎麼嚷嚷遊戲引擎必須c++開發也阻擋不了c#取代c++的趨勢。

多年前也有人說windows編程離不開c++,現在基本都離開了。

當然,c#開發的遊戲引擎也不是不使用c++代碼,有些庫,還是會用上的。不過,也有可能被替代。因為象assimp .net之類的封裝c++而成的庫,風格上還是跟c#代碼風格不協調的,實際上都要自己再封裝一次,降低了性能。只是沒有功夫重寫的暫時替代品。


c#本該編譯成native來取代delphi,現在卻淪落到去做腳本了。


之前一直用lua語言,但是苦於lua語言的一些弱點,一直想找一個替代品,能:

1 維護性:靜態類型,方便大項目維護

2 生態:好的生態能持續提供高質量人才

3 開發效率:好的語法糖提升開發效率

4 工具鏈:成熟的工具鏈自動完成,調試,重構,部署。

5 通用性:最好能支持桌面開發,這樣整個pipeline就可以盡量用一種語言

6 動態性:最好能解釋執行,方便非jit平台動態更新

這個表示我剛剛才做的。明白為啥選擇c#了吧。

如果不想混合語言的話,c#明顯勝出。

另可參見

為什麼遊戲引擎大多選擇使用 C++ 而不是 C 開發? - crazybie 的回答

Lua 為什麼在遊戲編程領域被廣泛運用? - crazybie 的回答

https://www.zhihu.com/question/40642126/answer/87594081


老實說,從我擺弄XNA開始,就知道C#將來會是個開發GamePlay的好語言(遊戲編程大致上可以分為Engine和GamePlay,外行常常分不清,所以動不動就和C++比)。我說說我的考量:

GamePlay是典型的經常需要「大量」、「多變」的「小對象」快速生成和死亡的應用環境(比如一秒鐘就可能有成千上萬個各種「炮彈」、「火花」等亂七八糟的東西產生或銷毀),選擇哪種託管代碼,首要考慮的是「是否有繞過GC的機制」,C#的值類型、甚至還可以開unsafe用指針,當然是最適合不過。

所謂性能問題,大多數人常談的都是「最高性能」,其實遊戲更注重「穩定性」,有性能開銷可以接受,但這個開銷一定是要穩!你可以上到300幀但偶爾幀數會掉到很低;人家只能上270幀,但人家能穩定在270幀不會產生偶爾的幀數暴跌,二選一的話我寧願選擇後者。安全檢查、動態支持,這些開銷是比較固定的,最「不穩」的因素就是GC,也因此為什麼很多遊戲引擎選擇C#而不選擇Java(不單CE5、UE,Unity,OGRE也有.net移植版等,現在又出來個開源的Xenko我估計會火),最大原因就是Java的所謂「萬物皆對象」。

我這裡立下語言:C#會成為遊戲邏輯開發的「行業標準」,學Java人的說法:「生態」開始形成了。


坐等C#成為遊戲界行業標準


推薦閱讀:

使用unity引擎時有哪些禁忌?
如何用C#對論壇進行爬蟲?
C# 里非同步方法該如何理解?
一個簡單的C#控制台小程序如下,可是不輸出,為什麼?
如何判斷 string 是否為合法的 C# 變數名?

TAG:編程語言 | 遊戲引擎 | Unity遊戲引擎 | C# | 虛擬現實VR |