
It's all about Life, Games, IT, Project Management, and such.


First of all, I would like to thanks to @exavolt for his inspiring (halagh) gambusan in his blog. There’s things in this world that can’t be written by long words. When we try to describe it then the words will form a poem. And this is just my expressive words, not poem :D
I am usually expressive and open.
But for this one i can’t.
I am usually rough and loud.
But why for this one I can’t.
Why love cannot choose.
Why life cannot choose.
Why I cannot choose.
The answer is there
The answer is hidden there
While people is given by a lot of choice
Me am not
Me am not
And always not
While people is freed
I am not
I am not
And still trapped in the golden cage
When people laugh, when people happy
for the last time, I CAN’T
Yes I know
You must laugh to me
You shall laugh to me
You SHALL, YOU SHALL AND SHOULD
Time… always playing with me..
It Runs
It Burns
It never Turns
No Choice
No Purpose
Just a empty space
and a golden cage
Inside it, it’s me.
Have you seen?
Please see, come, and free me from this damned place
Regards
RMS Noor HPD
(lynxluna)

Hehehe… mari kita liat post yang aneh kali ini… hari ini saya datang langsung ke kantor dari rumah saya di Magelang… hehehe… niatnya si mau ngejar meetig, tp apa daya macet di tol (ah less yan). Okey.. straight to the story waeh… ini adalah how-to saya bagaimana cara ke kantor jika rumah anda 500km jauhnya dari kantor :D.
Motor adalalah kendaraan yang merakyat. Hehehe. Rute yang ditempuh adalah Rute Magelang-Jogjakarta. Jarak yang ditempuh 50km.
Berangkat pada pukul 05:00 dan sampai di Bandara, ya bandara, pukul 05:58 (wtf, ngebut banget, hehe). Dan motor saya saya serahkan ke saudara saya untuk dibawa lagi ke magelang :D.
Yup. sampailah saya di Bandara AdiSutjipto, yap kali ini saya pake pengsawat. Seumur-umur, baru dua kali naik pesawat rute domestik, jadi emang rada grogi waktu masuk bandara, maklum katrok. Err, karena fare yang saya pilih adalah fare Economy Class Promo jadi memang tarif supa dupa ekonomi. Dan saya memilih GIA sebagai carrier yang membawa saya dari JOG-CGK (begitulah yang tertulis di tiket). Kali ini rute yang ditempuh cukup jauh, yaitu 500-an km. Saya berangkat pukul 07:25 dan sampailah di Bandara Soekarno-hatta pukul 09:15.
Penerbangan cukup (baca:tidak) menyenangkan. Perut saya kembung… tp lumayan dapat 2 buah roti gede-gede, teh hangat dengan 2 x gula dan 1xcreamer (minta sendiri, hehee). Dan sebatang Kit-kat. Dan hampir aja saya mabuk udara karena ajrut-ajrutan berkat cuaca yang *sedikit* mendung.
Saya pikir masih bisalah untuk mengejar meeting yang harusnya jam 10:00. Tapi apa gerangan yang terjadi? Ternyata bus DAMRI Bandara-Blok-M yang akan membawa saya, lamaaaaaaaaaaaaaaaaaaaaaaaaaaa sekali (hampir 1 jam saya nunggunya), dan kemudian naiklah saya ke BUS DAMRi tersebut.
Akhirnya pada pukul 10:15, akhirnya saya mendapatkan bus DAMRI, dan bus ini ngetemnya setengah najong lamanya. Sampai saya tertidur pulas. dan akhirnya bus baru jalan kira-kira pukul 10:30. Tidak banyak yang saya ceritakan di sini kecuali kena macet di tol bandara sedikit (sedikit???) hehhee.. karean saya tertidur pulas hingga pada akhirnya bus ini berhenti di Komdak. Dan saya memutuskan untuk turun saja di situ, naik busway ke kantor.
Naiklah saya ke busway Blok-M kota… busway yang merah… cukup lega, endak antri.. saya ingin sekali meneruskan tidur, tetapi, tujuan saya adalah Halte Dukuh Atas yang kalau saya tertidur bisa saja bablas… hehehe… dan saya pun memaksakan mata ini melek…
Turunlah saya di halte dukuh atas, dan melanjutkan dengan koridor 6
Baik selanjutnya saya naik busway koridor VI, Dukuh Atas-Ragunan… di sini saya sukses tidur lagi hehehe…. dan berhentilah saia di mampang prapatan! Dan ke langkah selanjutnya yaitu…… JALAN KAKI.
Last but not least……………… it’s the after using almost all kind of transportation. Finally, I walked to Cyber Building… hehehe… and arrived in office at 11:38. And I miss the meeting *sh*t*. But no prob, at least, I am not absent today… still working while still make my mother happy :), because I went home.
That’s all folks
Regards
RMS NOOR HPD
(lynxluna)
Sebenarnya ini hanya gejala seorang n00bs di dunia game development, terutama hobbyist. Mempunyai idea yang dia pikir bakal lebih laku dan mennjual daripada ide yang sudah ada. Apakah ide saja cukup. Secara logis tentu tidak cukup, tetapi mengesampingkan teknologi, dalam hal ini authoring maupun programming, juga bukan merupakan hal yang bijaksana dalam membuat suatu game.
Seorang yang baru masuk di dunia game development biasanya penuh dengan ide dan pasti berpikiran idenya lah yang akan menjual, dan pasti lebih baik dari game-game yang sudah ada , akan tetapi ide tersebut masih terlalu abstrak, masih terlalu high level. Padahal sebenarnya, untuk membuat game design yang perlu dilakukan adalah sebagai berikut:
Kalau hanya beride saja, maka cuma masih dalam tahap #1. Sementara, seorang game designer harus bisa melewati tahap #2,#3, dan #4. Dan yang paling susah adalah #4, karena di sini harus berbicara dengan banyak orang di mana seorang game designer harus bisa menyamakan persepsi dan tujuan dalam pembuatan game.
#4 is the key, mengtransmit informasi ke team, ini adalah kunci, karena seperti yang @EkEk bilang dalam forum GDI, bahwa pembuatan game AAA adalah kerjaan team bukan individual, sehingga #4 ini adalah titik akhir yang penting dari seorang game designer. Nah, kenapa saya bilang tadi idea itu masih terlalu abstrak? Karena idea itu hanya orang yang punya idea yang ngerti, yang tahu, yang faham. Sementara design document harus difahami semua orang. Oleh karena itu perlu adanya definisi, batasan, dan rincian untuk merealisasikan idea yang dimaksud. Yang seperti inilah disebut design decision.
Mari kita bedah satu per satu contoh dari idea dan perbedaannya dengan design decision.
Idea versus Design Decision
Idea: “Soldier harus melindungi Raja di castlenya”
Design Decision : “Ketika ada raja di dalam istana, maka seorang soldier tidak boleh bergerak melebihi range dari raja dan istananya. Jika seorang musuh mendekati kurang lebih 30 meter, soldier akan berhenti melakukan aktivitasnya dan kemudian balik ke castle untuk mempertahankan rajanya. Soldier tidak akan pergi dari situ selama musuh masih menyerang rajanya dan akan melindunginya sampai mati”
See? So this is why I always said : “Idea is so high level, so abstract, even more abstract than design document”. Seorang pemula dalam membuat game juga terkadang jatuh ke dalam paradigma seperti ini “Saya akan membuat game seperti final fantasy tapi dengan tambahan fitur X, Y, Z, A, B, C, blah blah blah”. So what’s the point? Mari kita baca komentar Chris Crawford dalam bukunya Chris Crawford on Game Design[1], sebagai berikut:
How could I make Game X even better? The young designer always thinks in terms of adding some new feature to the existing design, some additional twist or complication that would make the game more complex and therefore, in the designer's mind, more interesting.
The flaw in this reasoning is that it assumes the same level of experience in the playing audience. To appreciate the new, improved Game X1, the audience must have mastered Game X. The game aficionados who loved Game X will indeed love Game X1, but lesser players will find Game X1 intimidating. Take this process through several iterations, with Game X2, Game X3, and so on, and you end up with ridiculously complex games that appeal only to the aficionados. Then some brave soul comes along with a new, clean design, and the cycle starts all over again.
Design is not an accretive process! Piling on more features does not necessarily make the game any better�it just makes it more complicated. Some designers seem to revel in features, shoveling more and more gew-gaws into the game, as if the size of the pile of features is a measure of the quality of the game. Incorrectissimo! Making a game bigger doesn't make it better; it just makes it bigger.
Chris Crawford on Game Design, Chapter 8 : Common Mistakes, New Riders Publishing 2003
Yeah, ini yang saya maksud dengan “Game Development Newbie Syndrome”. Pengen membuat something bigger than some AAA games like [*insert your favourite game here*]. Percayalah, saya sudah pernah mengalami yang seperti ini, dan sampai sekarang saya belum bisa mewujudkan impian big game saya itu.
Ketika orang mendesign suatu game, terkadang dia terlalu terhanyut dengan idenya sendiri, tetapi tidak mengerti bagaimana idenya itu akan diimplementasikan dalam software. Ide memang tak terbatas. Tetapi ingat, dalam pengerjaan game, terdapat banyak sekali batasan yang mungkin bisa mengurangi feel dari ide tersebut. Untuk itulah mengapa dalam bukunya, Andrew Rollings dan Ernest Adams berkata demikian
Techology Awareness
Technical awareness is a general understanding of how computer programs, particularly games, actually work. It isn't necessary to be a software engineer, but it is extremely valuable to have had a little experience programming, even if only in Blitz Basic (www.blitzbasic.com) or some other simple language. A computer game designer's delivery medium is the computer, so it behooves you to know how computers do what they do and also to have a general idea of what they're not good at doing. A designer with entirely unrealistic expectations of what a computer can do isn't going to get very far. For example, computers do not understand English well.
If your game design requires that the machine be able to interpret complex sentences typed on the keyboard, your programmers are likely to throw things at you. You must also have a basic knowledge of the technical capabilities of your target platform. At a minimum, you need to know whether you're designing a product for a home console, desktop computer, handheld platform, or more than one of these. Every feature that you specify must be possible on the machine that you're designing for. If in doubt, ask the programmers. Knowing the limitations imposed by the selected platform will result in an achievable design.
Andrew Rollings and Ernest Adams on Game Design, Chapter 1: What is Game Design, New Riders Publishing 2003
Jadi, game design tidak melulu berbicara tentang idea, dan game tidak melulu about programming. Kalau hanya ide saja maka lebih baik bikin novel atau film jauh lebih mudah daripada bersusah-susah membuat game. Dan game juga tidak hanya isinya programming, kalau hanya programming, lebih baik membikin software akuntansi, atau software sistem informasi yang lebih laku di pasaran dan jauh lebih mudah diprogram. Game itu harmony, harmony dari ide, art, dan technology. Ketiganya harus ada, tidak bisa dibelakangkan salah satu. Sementara ketiganya dalam pandangan sekilas, nampak tidak klop. Nah inilah tantangannya mengapa game designer harus mempunyai board knowledge, tidak hanya IDE saja, atau art saja, atau programming/technology saja. Tetapi ketiganya.
Dan tidak hanya sekedar ide, bahkan game designer dituntut untuk mempunyai kemampuan matematis. Mungkin pembaca akan langsung teriak “WTF? Game Designer need math?”, jawabannya adalah “Yup! terutama statistik analisis”. Ilmu matematika ini digunakan untuk balancing game. Mari kita dengar lagi nasehat dari Andrew Rollings dan Ernest Adams:
Mathematical Competence
Designers must have basic math skills (particularly statistical math skills) because balancing a game is largely a matter of math and can be a difficult task. In the case of a real-time strategy game or a war game, the apparently simple problem of ensuring that there are no dominant strategies or fighting units to unbalance the game is actually quite math-intensive.
That's not to say that you need a Ph.D. in mathematics—you're not going to be deriving complex equations from scratch. The only thing you'll need above basic math is some knowledge of statistical methods. Even so, in some cases, the math can be handled computationally. It's entirely possible that you can handle the math requirement simply by being good with a spreadsheet program such as Microsoft Excel.
Andrew Rollings and Ernest Adams on Game Design, Chapter 1: What is Game Design, New Riders Publishing 2003
Nah, terlihat game design is not that simple, benar-benar seorang game designer harus benar-benar menguasai banyak hal. Hal ini yang terkadang digampangkan oleh pemula dalam game development. Mereka berpikir, story saja, ide saja, cukup. Tidak. Sama sekali tidak cukup, bahkan untuk game concept sekalipun.
Jadi Kesimpulannya seperti yang saya bilang tadi ide sangat tidak terbatas, tetapi dalam pengerjaan game, ada beberapa batasan, batasan yang berlaku untuk pembuatan software juga berlaku untuk pembuatan game. Karena GAME ADALAH SOFTWARE :
Dari sinilah kita bisa mengukur, game macam apa yang possible kita bikin sekarang, sambil mengasah skill, sambil menunggu teknologi lebih berkembang, sambil menunggu project yang bisa diselesaikan dengan waktu yang panjang dan dana yang banyak. Start small, and grow. Buatlah game yang kecil dahulu sebelum berencana membuat game yang besar, coba untuk mendesign game semacam pacman clone misalnya, believe me, even designing 3d pacman clone dapat memakan puluhan halaman.
Sebagai game designer, artist, maupun programmer, start small and grow ini adalah proses edukasi dan instrospeksi diri sehingga kita bisa menanyakan pada diri sendiri.
Bagaimana Saya/Kita bisa membuat game sekelas Final Fantasy X, jika mario clone saja saya tidak bisa membikinnnya.
Best Regards
RMS Noor HPD
(lynxluna)
Google, siapa sih yang ga kenal ama om/mbah Google di ranah maya ini. Google sekarang sudah sangat susah dipisahkan dari kehidupan berinternet, kehidupan maya. Google bak dukun, bisa menerawang, bisa mencari sesuatu yang kita cari. Search engine ini memang merupakan fenomena tersendiri di dunia internet.
Selain sebagai search engine, google juga menawarkan berbagai macam aplikasi google-based yang bisa kita personalisasi. Diversifikasi google di banyak service ini tentunya sangat menguntungkan baik untuk personal atau perusahaan. Bayangkan, kita bisa meng-host email, situs, blog dan sebagainya di google. Yang notabene sampai sekarang rate downnya amat sangat kecil.
Best Regards
RMS Noor HPD
(lynxluna)

Sebenarnya Indonesia merupakan negara yang mempunyai resource programmer banyak, akan tetapi, ada sedikit mengecewakan dari resource programmer di negera ini. Sedikit sekali programmer yang benar-benar kompeten, dan memiliki pengetahuan mendalam tentang programming. Walaupun kuliah teknik informatika, sekarang sudah tersebar dari Universitas Negeri yang elite sampai Universitas yang endak tau status akreditasinya 
Karena untuk zaman sekarang ini, di mana bisa dikatakan kalau cuma coding, semua orang juga bisa, yang artinya sumber untuk belajar programming semakin banyak serta tool untuk belajar programming semakin muda, mulai muncul apa yang saya namakan dengan programmer karbitan. Artinya, seorang programmer yang coding belajar dari otodidak atau kursus, kemudian tiba-tiba terlalu excited dan membanggakan dirinya, bahkan bisa juga dia sampai diwawancarai media massa, baik virtual maupun media massa real, dan berbicara yang seolah-olah terlihat `jenius, pintar, ilmiah’, padahal tak ubahnya apa yang diucapkan hanyalah omongan kosong untuk mengelabui orang awam yang engga tahu programming.
Programmer seperti ini biasanya susah dikritik (walaupun hampir semua programmer susah dikritik) dan biasanya nyolot karena dia merasa sebagai orang paling pintar di jagad informatics ini, kemudian merendahkan programmer lain, atau bahasa lain, hanya karena egonya, bukan karena riset yang terbukti dan teruji.
Terkadang mereka menggunakan istilah atau praktek yang salah kaprah, dan karena banyak orang yang awam daripada orang yang ahli, istilah salah kaprah ini kemudian menyebar.
Masalah Visual Programming
Biasanya programmer seperti ini bermula dari apa yang orang salah kaprah sebut dengan visual programming, seperti Visual Basic 6, maupun Borland Delphi. Yang parahnya, hampir di seluruh universitas di Indonesia, programming model seperti ini yang diajarkan terkadang sebelum mahasiswa mempunyai dasar yang kuat tentang algoritma, struktur data, dan object-oriented programming.
Sebenernya apa sih visual programming itu? Visual programming language adalah cara atau metode di mana programmer menuliskan logic programnya dalam bentuk visual, bukan dengan text. Contoh yang mungkin tahu adapah Pictorious Prograph, atau jika pernah memakai UnrealEd di game Unreal Tournament, kenal dengan yang namanya Kismet, atau seperti Logic Bricks yang ada dalam Blender.![]()
Kismet, on Unreal Editor (taken from http://www.moddb.com/mods/ghostwriter )
Nah, bagaimana dengan Visual Programming a’la programmer karbitan tersebut? Sebenarnya itu bukan visual programming tetapi lebih kepada generative programming atau automatic programming. Yang pengertiannya adalah :
“Sebuah cara/metode programming yang mengotomatisasi pembuatan source code dengan generic frames, classes, prototypes, templates, aspects, dan code generators to untuk meningkatkan produktivitas programmer.”
diterjemahkan from wikipedia
Jadi pada dasarnya, seperti Visual Basic 6 dan Borland Delphi adalah contoh generative programming, bukan Visual Programming akan tetapi Visual Development Environemnt. Di mana code yang dibuat, misalkan untuk membuat window dan sebagainya sudah di-wrap dalam library dan bisa didesign menggunakan editor yang ada. Dan programmer tinggal mengetikkan code-code yang perlu saja di dalam event-event yang sudah disediakan contoh : OnMouseClick, OnKeyPressed, dan lain-lain.
Saya pernah mendapatkan email dari seseorang yang tidak percaya bahwa sebuah Window bisa dibuat tanpa menggunakan designer, dan hanya mengetikkan kode-kode menggunakan Windows API. Dan ada juga seseorang yang berpendapat di sebuah forum seperti ini :
… semakin kita meninggalkan C/C++ dan Windows API, maka semakin produktiflah seorang programmer …
diambil dari salah satu post di forum lama ansav.com oleh user dengan ID kandabram
Hanya karena melihat sebuah wrapper class untuk membaca file yang dibuat oleh saudara Anvie untuk meread dan write file. Nampaknya user kandabram ini adalah fans berat Visual Basic 6. User ini juga bilang bahwa python ini lebih gampang *which means inferior* daripada Visual Basic 6 tanpa men-cite sumber yang terpercaya.
Program GUI lebih canggih daripada console (command line) program
Sejatinya, program dengan GUI dan Console tidak ada bedanya dalam sisi fungsionalitas. Bahkan sebuah program kecil seperti mpg321 sebuah program command line bisa untuk memainkan MP3. Lihat gambar berikut:
Bahkan, server-server berbasis Linux dan Unix, yang biasa untuk menyimpan hostingan atau bahkan server di Bank sekalipun, sedikit sekali yang menginstall GUI di dalam servernya. Interface biasanya berupa command line. Jadi dari segi fungsionalitas, tidak ada bedanya. Virus gui lebih canggih ini terkadang menjadikan seseorang malas untuk belajar hal-hal yang non-gui-related, seperti Design Pattern maupun Object Oriented Programming karena umumnya sample-sample yang seperti ini bentuknya command line. Padahal Design Pattern dan OOP merupakan satu materi penting untuk membuat seluruh jenis program, bahkan untuk program game sekalipun.
Program berbasis GUI hanya bisa dibuat dengan language yang “visual”, Object dalam konsep OOP adalah komponen seperti Button, Windows dll.
Woit… ini dia yang terkadang salah kaprah besar-besaran. Seperti yang saya bilang di atas, salah kaprah ini sampai menyebar dan menyebabkan beberapa orang mengirimkan email ke saya permasalahan membuat sebuah Windows tanpa designer sama sekali. Pada dasarnya, semua bahasa bisa membuat GUI, yang penting dalam pembuatan Window itu bukan bahasanya tetapi adalah library yang dipakai. Untuk Windows, library yang dipakai adalah GDI (Graphics Display Interface). Yang merupakan standard di seluruh Windows Version. Untuk di Linux, misalnya kita bisa memakai GTK ataupun QT.
Pada dasarnya GUI itu hanya representasi dari data yang ada di memory, tak lebih hanya sekumpulan pixel yang terdraw di screen, yang pada dasarnya tidak bisa mendeteksi apapun seperti keypress maupun mouse click. Yang melakukan deteksi adalah suatu loop di dalam program. Yang dalam operating system window ada di dalam Message Loop, dan event-eventya dihandle di dalam callback function Window Procedure.
Nah Message Loop dan Window Procedure inilah yang tidak terlihat/diautomatisasi di dalam pemrograman seperti Visual Basic, maupun Borland Delphi. Sehingga tidak terlihat oleh programmer yang menggunakan bahasa ini.
Kemudian masalah contoh Object dalam GUI, adalah salah besar. Object yang dimaksud dalam OOP tidak seperti itu. Button, dalam GUI bisa merupakan Object dari suatu class. Tetapi Object yang dimaksud dalam OOP bukan itu, tetapi merupakan instance dari suatu class. Untuk hal ini sudah saya pernah bahas, silahkan liat di old article di website saya.
C/C++ tidak bisa untuk membuat program berbasis grafis, hanya untuk console
Ini adalah salah kaprah paling lucu yang pernah saya dengar. Memang sampel C/C++ untuk pemula tidak pernah mengajarkan bagaimana membuat Window atau bagaimana membuat Tombol bisa diklik misalnya. Karena apa? Ini dikarenakan C/C++ memang bukan untuk itu, selain itu, C/C++ merupakan satu bahasa yang tidak dipunyai oleh salah satu vendor saja tetapi merupakan bahasa yang standard, dan available hampir di semua platform hardware maupun software di dunia ini.
Bahkan game sekelas Crysis, dibuat menggunakan C++. Tidak percaya, silahkan lihat source code dari mod Crysis, semuanya menggunakan SDK dari CryEngine Mod SDK yang berbahasakan C/C++ dan LUA. Windows dibuat dengan C, Windows Explorer dengan C++, kernel linux dibuat dengan C dan Assembler, semua program dan driver di linux sebagian besar ditulis dengan C/C++. Windows SDK, DirectX SDK, semuanya native C/C++.
Kesalahkaprahan ini dikarenakan buku di Indonesia serta pengajaran di Indonesia yang jarang/tidak mengajarkan bahasa ini secara mendalam karena paradigmanya yang terkesan sukar, sulit, low level, dan lain-lain. Contoh kecil, untuk course di kuliah, misalnya banyak didapati pemrograman dengan Turbo C++ versi 3.0 yang tentu saja tidak bisa digunakan untuk memrogram GUI, karena basis dari Turbo C++ 3.0 adalah DOS.

Contoh konretnya adalah penggunaan buku Abdul Kadir yang banyak disarankan dan digunakan di Indonesia, padahal buku ini tidak mengajarkan multi-file (hanya sati file .cpp), tidak mengajarkan pembuatan header, dan menggunakan standar C++ yang sudah sangat lama, sebagai catatan Turbo C++ 3 ditulis tahun 1991, sementara C++ standard yang beru
Saya pernah mengajar di salah satu Universitas Swasta, materi C++ lanjut, dan mereka cukup kaget ketika saya menggunakan Microsoft Visual C++ 2008 (terbaru) dan juga saya menggunakan teknik multifile. Yaitu berbagai macam file .cpp dan .h.
Akibatnya bisa diketahui, ketika kita bilang C++, yang ada di otak mahasiswa adalah Turbo C++ for DOS yang memang tidak bisa digunakan untuk membuat aplikasi advanced di modern operating system.
Akhir kata saya menyarankan kepada dosen atau pengajar di Institusi lain, supaya tidak menggunakan istilah dan term yang salah kaprah seperti ini dan memperbaiki kurikulum, supaya up-to-date dan tidak ketinggalan sehingga menyebabkan paradignma pada mahasiswa dan industri berbeda.
Best Regards
RMS Noor HPD
(lynxluna)

Dear All, inilah proyek game playable pertama saya, setelah musibah traumatis yang terjadi beberapa tahun lalu yang menyebabkan HDD saya mokad, dan seluruh source code, baik belajar maupun yang serius hilang entah kemana. Kejadian itu cukup membuat saya trauma sehingga malas sekali untuk belajar dan membuat code game maupun software yang playable, takut hilang lagi (ah les syaan). Tapi setelah saya menemukan jalan keluar, akhirnya saya pengen bikin satu buah game, biar cupu endak papa, yang penting bisa dimainin.
Jadi ceritanya ini game yang very-very-amat-sangat-sederhana. Yaitu game nyamain angka, dan dicoding menggunakan SDL (Simple DirectMedia Layer). Spesifikasi lengkapnya adalah sebagai berikut:
Project ini dihost oleh bitbucket, https://www.bitbucket.org/lynxluna/braingame/wiki/Home
Baik, walopun game ini very-very sederhana, tapi dia sudah cross-platform, bisa dijalankan di Windows maupun Linux dan 64-bit native mode compatible. Selain itu, game ini juga sudah hardware accelerated (ga penting banget :P).
Pada dasarnya tidak ada yang bisa dibanggakan dari game ini, art ngerampok, konsep game juga endak ada, dan gameplaynya juga gitu-gitu aja karena pada dasarnya cuma pengen ngelatih kelemasan jari-jari dalam coding setelah beberapa bulan belakangan terlalu lama coding Microsoft Office Word yang kemudian berganti menjadi IBM Lotus Symphony beberapa minggu lalu. Dalam waktu 2 jam (total), jadi juga ini game cupu. Saia sudah memakai prinsip OOP di sini, walo sangat sedikit (hanya agregasi, tidak ada state dst). Pada saat pengerjaan game ini beberapa menit saya kerjakan di tempat teman saya, dan saya teruskan di rumah (bisa dilihat di changelog bitbucket). Ada beberapa hal yang akan saya highlight.
Sejak dulu Revision control diperlukan dalam pengerjaan banyak proyek, tapi mengapa harus ditributed? Jawabannya karena Indonesia miskin bandwidth. Pada dasarnya distributed version control semacam mercurial ini amat sangat besar peranannya dalam pengerjaan proyek ini. Jika dulu ketika saya masih menggunakan SVN, saya harus meng-commit pekerjaan saya di server (terpusat), maka dengan distributed ini, saya bisa melakukan atomic commit di branch saya sendiri, kemudian saya push changes ke server (dalm hal ini bitbucket) ketika saya sempat saja, jadi tidak selalu harus commit ke server. Cukup enak, saya commit di tempat saya sendiri, kemudian jika ada apa-apa saya bisa revert ke file yang lalu karena seluruh history file saya tersimpan dalam repository saya sendiri, tidak harus terkoneksi ke server untuk melakukan commit dan revert.
Cara seperti ini cukup mengatasi ketakutan saya jika ada kerusakan hard disk seperti yang pernah terjadi pada saya dulu.
Saya jadi yakin, kalo hanya 2 jam saja (tentu tidak terus-menerus) saya bisa coding game cupu ini, artinya kalo dalam waktu lebih mungkin saya bisa meremove kata cupu di belakangnya. Sedikit suntikan semangat di jiwa coder yang mulai rapuh ini.
Happy Coding!