31 Desember 2008

What Eyes can See

landing_style

What eyes can see, called sight… Sight contains style… but if you close your eyes then there will no style on your eyes nor sight.
 
Brain… what the purpose…
Me… who am I…
How if I don’t exist… will this blog exists
How if I don’t exist… if these lines of codes still written
How if I don’t exist… will there a nick ‘Lynxluna’ hanging around the internet?
 
This is fate.
This is fate when I meet you
This is fate when I love you without any reason
This is fate when I and you fill the night with passion and love
This is fate when we must separate, and desperate
 
Now… you want me to hate you?
You can’t and won’t make me hate you
Whatever you do
Even if I am hangry and my blood pressure wrecked
I WON’T hate you
 
I really want to hate you as you wish
I really want to leave you as you wish
But, I am sorry, I can’t
 
Move along… go with me, support me
But just don’t take me down
Don’t act that you are part of them
YOU ARE PART OF ME
not THEM
 
You want something
Something that really hard for me to achieve
 
You want a look
You want a style
You began to just open your eyes
And shutting your heart
 
Honey, believe me, you can’t
 
Honey, as I already said, close your eyes for a while
And feel the air flowing through your breath
To your neck, to your… heart.
Feel my breath, my love, my passion, my existence
and we should be one like old times
 
tandatangan
RMS Noor HPD
(lynxluna)
 
 
Lanjut...

23 Desember 2008

The Purpose - exaggerated

hp photosmart 720

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

tandatangan

RMS Noor HPD

(lynxluna)

Lanjut...

22 Desember 2008

Go Straight to Office from Home

java-island-satellite-small

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.

Pertama, pakai motor

mudik2710

Motor adalalah kendaraan yang merakyat. Hehehe. Rute yang ditempuh adalah Rute Magelang-Jogjakarta. Jarak yang ditempuh 50km.

magelang-Jogja

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.

Kedua, pakai mongtor mabur

plane6

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.

Ketiga, pakai BUS DAMRI BANDARA-BLOKM

=-Windows-1252-B-L01lZGlhIENhcmQvQmxhY2tCZXJyeS9waWN0dXJlcy9JTUcwMDExNy5qcGc=-=-710425

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.

Keempat, naik Busway Koridor 1 Blok-M-Kota

 busway-davinci-2

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

Kelima, naik Busway Koridor 6 Dukuh Atas-Ragunan

kor 6[4] 

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.

walking01

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.

97711663pd1-x

That’s all folks

Regards

tandatangan

RMS NOOR HPD

(lynxluna)

Lanjut...

13 Desember 2008

Game Design is not that simple, dude.

Game design pic

Di forum game developer Indonesia (http://www.gamedevid.org/) saya sempat berdebat tentang ide game dan realisasinya. Thread tersebut bisa direview di sini http://www.gamedevid.org/forum/showthread.php?t=7021. Ada salah satu orang member yang sangat kekeuh tentang ide. Dan kalau saya lihat dari postnya dia mengesampingkan teknologi, coding. Dan dari postnya juga mencerminkan kalau coding bisa belakangan belajarnya. Dalam blog saya ini saya akan menekankan beberapa pendapat saya mengenai game design.

Gejala tinggi semangat tapi ga sadar skill

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:

  1. Imagining the game
  2. Defining the way it works
  3. Describing the elements that make up the game (conceptual, functional, artistic, others)
  4. Transmitting the information to the team that will build the game.

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.

Bisakah coding dan technology dibelakangkan?

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 :

  1. Batasan skill (programmer, artist, designer)
  2. Batasan teknologi itu sendiri (batasan kemampuan current mainstream technology)
  3. Batasan waktu
  4. Batasan dana

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

tandatangan

RMS Noor HPD
(lynxluna)

Lanjut...

12 Desember 2008

Keranjingan Google

google1

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.

Nah kenapa saya bilang, saya keranjingan google? Awalnya saya menggunakan hosting berbayar, dan saya meregister 3 domain saya dengan TLD .net, .com, dan .org. dan terakhir saya register dengan .web.id. Saya merasa punya hosting sendiri cukup repot dalam mengaturnya. Apalagi spacenya kecil, dan semuanya harus disetel secara manual.
Padahal di situs saya yang lama sudah terkumpul beberapa artikel yang cukup high-quality (saya engga narsis, saya aja bingung bisa bikin artikel segitu panjangnya). Saya bikin pake joomla, dan pake rockettheme. Akan tetapi saya merasa saya sudah cukup cape untuk maintainnya, dan lagi hosting juga mbhayar, makannya saya berencana hanya akan menguasai domainnya saja, sementara hosting akan saya pindah.
Pertama kali saya berinsiatif menggunakan google sites untuk hosting dan ketiga domain saya sudah nangkring di sana. Dan setelah berpindah-pindah berkali-kali, maka www.lynxluna.web.id saya tangkringkan ke blogger yang menyediakan tempat nangkring domain gratis. Tadinya saya mau pakai wordpress.com, tapi wordpress nge-charge US$ 10 untuk nangkringin domain, oleh karena itu saya coba beberapa alternatif termasuk www.syncr.com dan www.blogetery.com, sayangnya tak satupun dari mereka yang memuaskan. Syncr, memcachednya parah, sedang blogetery ada ads-nya.
Awalnya saya akan menggunakan www.dreamhost.com, akan tetapi karena Credit Card BCA yang engga kelar-kelar (dan last time saya telpon, katanya data saya hilang *wtf*). Maka hilanglah harapan saya punya unlimited host space dan unlimited bandwidth. Saya harus berpuas diri dengan google service.
Setelah beberapa bulan nampaknya saya harus mengakui bahwa service google cukup memuaskan untuk saya, karena saya punya integrated solution. Saya host domain saya, email saya, dokumen-dokumen saya, dan calendar saya dalam satu server milik Google dengan domain saya sendiri.
Serasa begitu personal, dan benar-benar merasa punya home sendiri di google, karena semuanya dapat dengan mudah dipersonalisasi. Tentu kebebasan saya amat terbatas hanya pada yang ditawarkan oleh om google itu sendiri, sangat jauh dengan jika saya hosting sendiri saya punya grade kebebasan yang tinggi, tetapi semua itu juga harus dibayar dengan maintenance juga.
Sedangkan saya, sekarang, hanya perlu memanage domain saya, yang saya registrasikan dengan harga murah, kemudian memakai www.xname.org sebagai nameserver gratisan saya, dan mengisi record-record yang diperlukan ke ghs.google.com. dan seluruh fitur google bisa saya nikmati dengan domain saya sendiri.
Google sites berisi semacam wiki yang bisa saya edit sendiri, di situ saya akan menempatkan artikel dan tutorial, sementara di blogger, saya akan menempatkan kejadian menarik yang saya alami sehari-hari. Intinya google site lebih formal, dan blogger, lebih informal.
Thx Google.

Best Regards

tandatangan

RMS Noor HPD
(lynxluna)

Lanjut...

Salah Kaprah Programming (di Indonesia)

phpdotnetrad-red

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 http://emo.huhiho.com

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.KismetKitchen

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:

37016

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.

turboC

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

tandatangan

RMS Noor HPD
(lynxluna)

Lanjut...

07 Desember 2008

BrainManiac Game : PostMortem

brainmaniaccupu

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 Name : BrainManiac
  • Genre : Puzzle Cupu
  • Library Used : SDL, SDL_Image, libPNG, libz
  • Platform : Windows 2000 ke atas, baik 32  bit maupun 64 bit (native), Linux 32 bit dan 64 bit (native mode), Mac OSX
  • Lama pengerjaan/coding : total coding kurang lebih 2 jam, sisanya adalah ngurusin aset dan upload ke server
    • Dec 1, 2008 22:00-22.30
    • Dec 2, 2008 20:00-21.30
  • Aset : ngerampok dari gambar2 yang udah ada
  • License : Public Domain
  • Software Used : Microsoft Visual Studio 2008, autoconf, automake, mercurial, StarUML
  • Hardware accelerated : Yes
  • Native 64-bit compatible : Yes

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.

Distributed Revision Control Sangat Membantu dalam pekerjaan

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.

2 jam coding pun bisa membikin satu game cupu.

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!

Lanjut...