FGOW1.2.2

前幾天Forge跟進到了MC1.9,新的ForgeGradle的2.1快照版沒有太大變化,只是多了一個version_manifest.json文件的下載,由於這個文件在某些地方下載起來並不容易,因此新版FGOW加上了它的下載地址修改功能.方法和修改MCP與Forge的版本json一樣,在apply plugin的之前加入:

百度網盤:http://pan.baidu.com/s/1bnPZt9P
SkyDrive:https://onedrive.live.com/redir?resid=856A4664427BE4F2!11485&authkey=!ANW9B0bWwk0BEsY&ithint=file%2cjar 閱讀全文 [...]

從1到100 - 模塊化的跨平台程序

前幾天完成了被當做作業的小程序,名字相當掩人耳目:Finite Digit Summator,一定程度上是向Digital Differential Analyzer致敬,項目被我扔到了Github上,本身並沒有太大應用價值,除了那兩幅從東方AA摘下來的字符畫,以及一黑黑了兩個遊戲的梗.

從設計上,它的項目結構很大程度上參考了我以前的項目,以一個核心模塊囊括主要功能,然後以多個針對不同平台的子模塊負責將功能封裝並展現給用戶,事實上,除了網頁版有一個功能是通過JS重新實現了一遍以外,幾乎所有的使用了兩遍以上的功能都被集成在了核心模塊中,因此可以說下一階段的目標"實現模塊化"我已經完成一半了(笑),剩下的看上去無非是將之前沒來得及上線的安卓端做完,修修Bug,刷刷單元測試之類的.

聽上去通過模塊化來實現跨平台就像當年老一輩眼中實現共產主義一樣簡單,然而一個實際的跨平台項目想要通過模塊化來實現在設計上卻是困難重重,最主要的問題在於硬件的局限性和需求的不同.還記得剛才說的"以前的項目"不? 2個月前的寒假時我開了一個新坑,用Java復刻(或者叫抄襲?取決於你怎麼看待"yet another alternative implementation"這種東西...)一個Era的開源跨平台版,什麼是Era?我放個截圖你大概就能知道是什麼東西了...

era 閱讀全文 [...]

在Gradle中集成Javacc

有時我們會希望在項目中使用一些腳本語言、DSL或特殊格式的配置文件什麼的,雖然已經有一些現成的方案,比如使用Java內置的JS引擎,或者使用LuaJ、Groovy之類的外部庫,但這些不是局限性略大,就是需要附帶龐大的庫,比如FML就附帶了一個Scala運行時庫(以及一個編譯器!),而實際上MC現在又有多少個用Scala寫的Mod呢?看Kotlin最近勢頭這麼火,估計過幾天他們就得附帶一個Kotlin庫了吧...言歸正題,這個時候我們就需要一個自行設計的腳本語言或者配置文件格式了,然而手寫一個Parser確實有一定難度,不過好在市面上有一類神奇的東西:"編譯器編譯器" 閱讀全文 [...]

嗯?軟件工程?

由於奇怪的課程要求,在接下來的小半年中每周我都會開一趟車-唔...是發一篇關於軟件工程的小短文.靠,我寫MCMod教程都沒這麼勤快過,這就是軟院對計院的復仇嗎?

大多數高等院校的信息類學科都被分為計算機科學和軟件工程兩個部分,關於科學與工程的區別,一個常見的解讀是"科學是在解決一個舊問題的同時提出兩個新問題,而工程是在不引發新問題的前提下解決掉舊問題".顯然客戶總是希望產品能夠準時準點地交付,而非一次又一次地次元突破Deadline.軟件工程就是為軟件的編寫提出一個章法,給世界上最桀驁不馴的一群人套上韁繩,讓他們製造出一個可靠的工程,而不是一個充滿了各種奇思妙想和奇技淫巧的垃圾堆.

The_Tower_of_Babel
老彼得·勃魯蓋爾的《通天塔》,在《黑客與畫家》一書中被用作封面.傳說中通天塔的建造由於人類的語言不通而最終以失敗收場,軟件開發中由於人員矛盾導致的殘局也是數不勝數. 閱讀全文 [...]

MCMod教程開始恢復更新

MC1.9馬上就要發布了,按照"總是差一個版本"的慣例(這是哪的慣例啊),教程準備從1.7更新到1.8了 ? 剛才看了眼第一篇教程,文中介紹的Eclipse居然還是4.3...現在第一篇教程已經更新了,最近那麼多人抱怨沒法配置開發環境,現在看來一點也不奇怪(捂臉,那篇實在太陳舊了).

想看看當初給MC1.2寫ModLoader教程時的原始手稿,結果發現找不到了...這種東西還真能丟啊. 閱讀全文 [...]

FGOW1.2.1和FMMv4

Forge在更新到1.8.8之後FGOW1.2.0就不能用了,於是自然而然地就有了FGOW1.2.1,新版本在功能上沒有變化,只是支持了使用ForgeGradle2.1的Forge1.8.8和1.8.9.

下載地址:
SkyDrive:http://1drv.ms/21gcxy5
Dropbox:https://www.dropbox.com/s/ekig3gjx32uz3qp/fgow-1.2.1.jar?dl=0
百度網盤:http://pan.baidu.com/s/1geoIkin


此外,ForgeMavenMirror,也就是我們喜聞樂見的ForgeMaven倉庫鏡像,也更新到v4版本了.
更新內容包括:

  • 緩存了2.0、2.5和2.7的gradle文件,下載地址為"http://forgemavenmirror.sinaapp.com/gradle/gradle-[版本號]-bin.zip",啟用它們的方式是修改Forge(其實現在應該叫MDK了)目錄下的gradle/wrapper/gradle-wrapper.properties文件,將"distributionUrl="後面的下載地址改為鏡像的地址.我之前沒有弄這個是因為我不贊同這樣做,Gradle的文件策略相當有問題,它是根據下載地址的Hash來識別版本的,這意味着不同下載地址的同一版本Gradle(甚至是同一個地址的https和http下載鏈接)會被識別為不同文件,你知道我的機器上已經有4個版本的Gradle-2.7-bin了嗎?也許他們認為多版本並存很有意義,但我覺得僅憑下載地址來區分的多版本除了虐待硬盤以外毫無意義.不過現在考慮到Gradle已經成了GFW的重點關照對象之一,https鏈接幾乎已經連不通了,這裡還是提供了Gradle的緩存.
  • 增加了大量緩存,現在FMM已經可以代替所有的倉庫了!對,你可以刪掉除FMM以外的所有倉庫,經過實測1.8.9可以在只有FMM倉庫和本地Forge緩存目錄的情況下配置.
  • 智能重定向,過去FMM在失敗時只會重定向到Forge的倉庫(files.minecraft.net),現在FMM會重定向到"最有可能"的倉庫,此外,由於Oschina的Maven鏡像復活了,對於Maven中央倉庫的資源會重定向到Oschina的鏡像.
  • 可選的快速失敗,如果你不想要重定向功能的話,可以使用"http://forgemavenmirror.sinaapp.com/mavenff"這個倉庫,它會在沒找到緩存的情況下直接返回404,而不是重定向,這對於想要繼續混合使用其他倉庫的人來說很有用.
  • maven-metadata.xml緩存會在每天(北京時間凌晨1點)更新一次.因此,現在快照版本(Snapshot)又會被緩存了(之前由於maven-metadata.xml不會自動更新的問題,一度取消了快照版本的緩存).
  • 一些細微的優化.
閱讀全文 [...]

寫在《如何編寫Shadersmod光影包》截稿之後

20160217032142

時間是早上6點30分.第一縷陽光透過天際線,將天空重新染回了深藍色,宣告着一天生活的開始,而在此之前,這個城市第一批工作的人早已忙碌起來,樓下傳來電動車輕微的嗡嗡聲,如果那位送奶工稍有留意的話,一定會注意到在這個尚未醒來的社區中,總有一棟樓的一扇窗是通宵長明的,當一個人在沉睡的世界中醒來時,難免會對周圍為數不多的同樣清醒的人產生好奇,那間房間的住戶在他眼中會是什麼樣的人?一個沉迷於電子遊戲通宵達旦的少年?一個在半睡半醒中着衣準備扎入地下,沿着一條隧道前往城市的另一頭上班的青年?還是一個見證了共和國的誕生與成長,在結束了自己幾十年如一日的工作後,正在安享另一個十年如一日的生活的老(zhang)者(?)?又或是僅僅不經意地瞥一眼後便調整車頭一甩而過,畢竟這個城市太大,而值得留意的人又太少.
對於房間的主人來說也是一樣的道理,在被車聲分心了眨眼的工夫後,便又重新將注意力集中在眼前的屏幕上,灰色背景的網頁中,密密麻麻的象形文字平鋪在純白的框體中,對一個英語國家的人來說,這種文字幾乎是不可思議的,難以想象這些遠古的黑暗時代的塗鴉能伴隨着文明一路成長延續至今,並深深地滲透入它的文化當中,而對信息學家而言,這種表述方式並無任何值得驚訝的地方,在卐字旗已經從國會大廈前降下而鐵幕與高牆尚未築起的時代,香農已經指出了信息的本質,世間萬物,但凡實際存在可被度量者,皆可被表示為比特,原本無意義的塗抹被有機地組合後構成了文字,而數以萬計意義不明的文字在被精心地排列後,構成了眼前的這一篇文章,在另一處看不見的地方,數以千萬計的比特正以電或磁的形式存儲在介質中,當它們以合適的形式顯示出來時,在屏幕上就是一張張美輪美奐的截圖或簡潔而巧妙的圖示.這些內容加起來不及一億比特,倘若只是單純地產生它們,在計算機中只需微秒計的時間,但要將他們排列成有意義的形態,卻需要數以月記的時間.在安慰性地掃視了幾眼後,鼠標指針停在發布按鈕上,已經沒有什麼可等待的了. 閱讀全文 [...]