䞍完党な技術

こんにちは。 Opensource Game Studioチヌムのプログラマヌ、Mikhail Kapelkoです。 麻雀゜リティアの最新リリヌスであるOGS Mahjong 1.0のリリヌスに近づいたずきに孊んだこずをお䌝えしたいず思いたすただし、麻雀シリヌズの最埌ではありたせん。 この蚘事は前の蚘事の続きです 麻雀0.7ぞの長い道のり



1幎前の2011幎5月に、OGS Mahjong 0.7をリリヌスしたした。これは非垞に困難なものでした。 今幎2012幎9月にOGS Mahjong 1.0をリリヌスしたした。 開発1.0では、すべおのLinuxディストリビュヌションずMac OS Xでゲヌムを配垃したかったのですが、残念ながら、成功したせんでした。なぜなら、 OGS MahjongはOGREずOISを䜿甚したす。





OGRE



OGS Mahjongの2010幎の倏に、リ゜ヌスをリロヌドせずにゲヌムりィンドりを再䜜成するこずに気付いたずき、OGRE 1.8の䞍安定な圓時のブランチを䜿甚し始めたした。 これを実装するための私の倉曎は、同じ倏にブランチ1.8に反映されたした。

そのずき、OGRE 1.8の安定版リリヌスは1幎以内であり、この時点でOGS Mahjong 1.0はすでにOGREの安定版に䟝存しおいるず思いたした。 OGRE 1.8は2012幎5月28日にリリヌスされたした。

しかし、この頃には

1OIS 1.3圓時は埌者を詊したしたが、私たちには合いたせんでした詳现は以䞋。

2別のOGREファむルストヌリヌOverlay :: setMaterialNameに倉曎を加えたしたが、OGRE開発者には枡したせんでした。 この小さな倉曎が1幎でせいぜいリリヌスされるこずをすでに知っおいたした。



の



OGREはメむン画像コヌデックずしおFreeImageを䜿甚したす。 FreeImageの䞻な問題は、開発者がzlib、pngなどのシステムラむブラリの䜿甚に抵抗するため、ラむブラリがGentooディストリビュヌションでサポヌトされおいないこずです。

線集 FreetoはGentoo、メディアラむブラリに含たれおいたす。 他のすべおの問題は匕き続き有効です。



圌らは特別なフラグを䜿甚するこずでキャラクタヌの可芖性の問題を修正したした 。

したがっお、著者が3番目のオプションで提案したずおりに実行しおいたす。 付録には、さらにいく぀かのラむブラリがありたす。



オむス



OISは、たれにしか曎新されないラむブラリです。 最近リリヌスされたリリヌス1.3は、キヌストロヌク凊理を完党に台無しにしたした。 キヌストロヌクロゞックが倉曎されたため、OGS Mahjongは起動埌30秒でキヌストロヌクの受け入れを停止したした。

この問題に぀いお開発者に通知したしたが、圌はそれを再珟できたせんでした。 Linuxのバヌゞョン1.2を維持する必芁がありたした。

OIS 1.3はMinGWの䞋では構築されおおらず、SVNの最新圓時バヌゞョンのみです。

Mac OS Xに関しおは、OISはここでも私たちを倱望させたした。なぜなら、Mac OS X甚のMahjongの構築を手䌝おうずしおいた人は、コンパむル゚ラヌのためにOISを構築できなかったからです。

なぜなら バヌゞョン1.3がリリヌスされ、すべおのLinuxディストリビュヌションに付属しおいたす。これは、銅補の流域を備えたすべおのLinuxディストリビュヌションにOGS Mahjongを含めるずいう芁望をカバヌしおいたす。 受け入れられない。



CEGUI



CEGUIラむブラリヌの状況は完党に異なっおいたした。特にOGS Mahjongの開発に倧いに貢献したチヌム、特にCrazyEddieからの優れたサポヌト。 しかし、CEGUIには非垞に倧きなマむナス面がありたす。蚭蚈者にずっお䟿利なツヌルはありたせん。 私はすべおのGUI開発を単独で行いたした。GUIは開発䞭に頻繁に倉曎されたす。 その結果、GUIの開発に必芁以䞊に時間がかかりたした。



ご芧のずおり、䞊蚘のラむブラリは私たちをかなり制限しおいたした。 唯䞀のプログラマヌである私以䞊に我慢できたす。 他の開発者が犯した間違いを垞に修正するのではなく、ゲヌムを䜜りたい堎合、これらのラむブラリを攟棄する必芁がありたす。 もちろん、他の人の間違いを修正するために䞀生を費やすこずはできたすが、幞いなこずに、より良い代替手段がありたす䟝存関係ず機䌚に関しお。



Openscenegraph



最近出版された2冊の本のおかげで、OpenSceneGraphを発芋したした。

1OpenSceneGraph初心者ガむド、2010幎。

2OpenSceneGraph Cookboox、2012。

2010幎にLightfeatherをOGREに倉曎したずきに、OpenSceneGraphに初めお䌚った。 耇雑なラむブラリであるOSGは、そのチュヌトリアルを理解できなかったため、圓時私には魅力的ではありたせんでした。 幞いなこずに、今回は䞊蚘の本が救助に来たした。これは、優れたOSG構造、すぐに䜿甚できる䞀般的な技術のサポヌト、およびFreeImageに䟝存しないこずを瀺しおいたす。 OSGはLinuxディストリビュヌションにも存圚したす。

すぐに䜿甚できる䞀般的な技術のサポヌトは、OGREにあったもう1぀の倧きな問題です。 OGREはテクスチャマッピングシャドりマッピングをサポヌトしおいるず䞻匵されおいたすが、Cgでのみ可胜です。 別の䞭毒 OGSLのGLSLのテクスチャシャドりに関するチュヌトリアルはありたせんでした。 私はシェヌダヌをほずんど理解せず、1か月間テクスチャシャドりを実装できなかったため、OGS Mahjong 1.0でステンシルを䜿甚する必芁がありたした。

1぀のOSGブックには、゜フトシャドりマッピングの䟋が含たれおいたす。 OSGは、すぐに䜿甚できるいく぀かのシャドりレンダリング手法をサポヌトしおいたす。 シェヌダヌを䜜成する必芁さえありたせん。 すでに曞かれおいたす ステンシルシャドりを゜フトシャドりに倉曎するには、コヌドを1行だけ倉曎する必芁がありたす。

OGREフォヌラムでGLSLのシャドりの実装に぀いお尋ねたしたが、結果はありたせんでした。 したがっお、次回OGREフォヌラムに投皿数が衚瀺されたずきに、そこにあるすべおの質問に答えられおいるずは思わないでください。 耇雑なものに぀いおは、たったく逆です。

OSGのもう1぀の倧きな利点は、䞻な開発者であるRobertがただOSGの開発に積極的に関䞎しおおり、メヌリングリストで質問に回答するこずですOSGはすでに12歳です。 シンドバッドを去った埌、OGREは非垞に死んでいたす。

LinuxディストリビュヌションにOSGが存圚するのも、FreeImageのようながらくたの䟝存関係がないためです。 たずえば、OSGはlibpngを䜿甚しおPNGを凊理したす。 最終的には、匷床の1぀たたは2぀の100,500の異なる圢匏を䜿甚したせん。



libRocket



CEGUIの唯䞀の代替。 珟時点でいく぀かのチュヌトリアルを行ったずころ、libRocketを初めお芋た埌には芋た目ほど良くも矎しくもありたせんでしたが、このラむブラリはHTML / CSSのサブセットを䜿甚しおむンタヌフェむスを蚘述しおいたすそう、HTML / CSSサポヌトは嘘です。 この事実により、GUIを実行する必芁がなくなりたす。 これが成功した堎合、libRocketを匕き続き䜿甚したす。 それ以倖の堎合は、CEGUIに戻りたす。その時点たでに、デザむナヌ向けのCEEDが実装されるこずを望みたすKulik、あなたが始めたものを続けおください。



Python



MJIN2新しいゲヌム゚ンゞンの最初の芁件の1぀は、GUIずロゞックのPythonサポヌトでした。 その埌、突然、MJIN2をC ++のラむブラリヌにしお、ロゞックずGUIだけでなく、完党にPythonのゲヌムにしおみたせんか これがSWIGの出番であり、C ++ラむブラリのPythonラッパヌを生成できたす。



Pythonを䜿甚しお、開発のペヌスを䞊げたいず考えおいたす。 ゲヌムず゚ンゞンのコミットの履歎を分析したした。 ゲヌムのコミットぱンゞンの2倍であるこずが刀明したした。 したがっお、Pythonでゲヌムを䜜成するず、コヌドが少なくなり、開発が速くなるため、開発速床が向䞊したす。



なぜなら AndroidずiOSをサポヌトする予定です。パフォヌマンスの制限により、これらのプラットフォヌムでPythonを䜿甚したせんが、ゲヌムの最終バヌゞョンをC ++たたはJavaで蚘述できたす。 MJIN2 + SWIGを䜿甚するず、ほがすべおの蚀語C ++ネむティブおよびSWIGを䜿甚する20以䞊の蚀語でゲヌムを䜜成できたす。



ゲヌム開発ぞのアプロヌチは倧きく倉化しおいたす。 それが䜕を泚ぐか芋おみたしょう。



All Articles