Kamis, 18 Agustus 2011

Target Awal

Membuat 2 aplikasi client dan 1 aplikasi server.
Berjalan di Windows.

Screen login:
  • enter e-mail
  • enter password
  • tombol login
  • tombol register - nit priority
  • tombol forget password - not priority, disabled
  • tombol set ip - not priority, hard coded
  • tombol quit

Screen play:
  • one map at left
  • two character
  • one npc
  • one enemy
  • one chat dialog box at right
  • one button on top right, click to exit

Screen register: (last priority)
  • enter e-mail
  • enter password
  • confirm password
  • enter name
  • select gender
  • select hair type
  • select hair color
  • submit button


    Kamis, 11 Agustus 2011

    Brainstorming Persiapan Bikin Game MMORPG

    Pertama-tama kumpulkan ide dulu. Acak saja. Mulai!
    • Satu program server, dua program client. Untuk test.
    • Buat bisa kirim-kirim message.
    • Hubungkan server ke database SQLite.
    • Hubungkan server ke resource manager PhysicsFS. (Gak urgent)
    • Hubungkan server ke loader XML.
    • Hubungkan server ke scripting Lua. (Gak urgent)
    • ZLib buat kompres-kompres? Gak penting deh.
    • PThread? Hmm hindari saja deh.
    • Bikin map pake Tiled - Pelajari!
    • SDL untuk grafik.
    • A Star algorithm untuk pathfinding.
    • Networking library pake ENet.

    Milestone/Step-Step
    Target harus selesa dalam 1 tahun atau 12 bulan atau 48 minggu atau 336/365 hari. Pertama-tama kumpulkan milestone dalam bentuk pernyataan berikut:
    "Dalam waktu X sudah berhasil membuat Y"
    Sekarang, kira-kira X dan Y itu apa ya? Ada ide? Brainstorming!! Trus sepertinya harus berprinsip learning by doing juga. Karena kalau belajar doang suka bikin males kalo ga dipraktekin.
    1. Bikin aplikasi server dan dua client yang bisa saling kirim message. Jatah waktu seminggu deh.
    2. Dari point no 1. Bikin network library. Hm ga tau deh waktunya - kalau bisa poin 1 dan 2 dalam satu minggu yang sama.
    3. Mikir dulu, karena proses belajar masih belum terasa cukup. Sepertinya harus disiapkan poin -2, -1, dan 0.
    4. Aku ngantuk tidur dulu ah...
    5. Point -5, sabtu di print dulu senjata rahasia nya ;) 
    6. Sambungin server dengan database SQLite (Pelajarin ulang euy..)

    Senin, 08 Agustus 2011

    Menghubungkan LUA dengan C++ Bagian 2

    Berikut ini akan di demokan:
    • Memanggil fungsi C++ dari dalam LUA
    • Memanggil fungsi LUA dari dalam C++
    Ayo kita mulai!

    1. Buatlah project console di codeblocks.
    2. Kemudian link kan Lua library ke dalam project.
    3. Setelah itu ganti isi main.cpp dengan source code dibawah:
    extern "C"
    {
    #include <lualib.h>
    #include <lauxlib.h>
    }
    
    #include <iostream>
    #include <string>
    using namespace std;
    
    // test.tampilkan(string)
    static int tampilkan(lua_State *s)
    {
        // ambil parameter yang dimasukan Lua
        const char *str = luaL_checkstring(s, 1);
        cout << str << endl;
        cout << "Fungsi C++ berhasil dipanggil Lua.." << endl;
        lua_pushboolean(s, true); // return true
        return 1; // 1 adalah jumlah return
    }
    
    int main()
    {
        // opens Lua
        lua_State *L = luaL_newstate();
        // opens the standard libraries
        luaL_openlibs(L);
    
        // daftar fungsi-fungsi C++ yg bisa dipanggil Lua
        static luaL_Reg const callbacks[] =
        {
            { "tampilkan",&tampilkan },
            { NULL, NULL }
        };
        luaL_register(L, "test", callbacks);
        // test adalah nama custom library
        // sehingga di Lua bisa dipanggil:
        // test.tampilkan('Hello World!')
    
        lua_pop(L, 1); // kosongkan stack
    
        // buka file contoh.lua
        // di contoh.lua akan dipanggil test.tampilkan('Hello World!')
        luaL_loadfile(L, "contoh.lua");
        lua_pcall(L, 0, 0, 0);
    
        // panggil fungsi Lua
        lua_getglobal(L, "fungsi_lua_tampilkan");
        // eksekusi fungsi_lua_tampilkan
        lua_pcall(L, 0, 0, 0);
    
        // panggil fungsi_lua_penambahan(nilai1,nilai2)
        lua_getglobal(L, "fungsi_lua_penambahan");
        lua_pushnumber(L, 1); // nilai1 == 1
        lua_pushnumber(L, 2); // nilai2 == 2
        // eksekusi dengan 2 arguments dan 1 return
        lua_pcall(L, 2, 1, 0);
    
        // dapatkan hasil penambahan 1+2
        double hasil = lua_tonumber(L, -1);
        lua_pop(L, 1); // pop returned value
        cout << "1 + 2 = " << hasil << endl;
    
        // tutup Lua
        lua_close(L);
        return 0;
    }
    
    4. Buatlah sebuah file teks bernama contoh.lua dan copy paste code dibawah:
    function fungsi_lua_tampilkan()
        test.tampilkan('Mencoba memanggil fungsi C++');
    end
    
    function fungsi_lua_penambahan(nilai1,nilai2)
        return (nilai1 + nilai2)
    end
    
    5. Kompile dan run. Outputnya adalah:
    Mencoba memanggil fungsi C++
    Fungsi C++ berhasil dipanggil Lua..
    1 + 2 = 3
    

    Menghubungkan LUA dengan C++ Bagian 1

    Tujuan blog ini adalah dapat mengkompile aplikasi C++ yang terhubungkan dengan LUA. Sebelum memulai harus tahu dulu hal-hal dibawah ini:
    • Sudah familier dengan codeblocks.
    • Tahu cara melinking library di codeblocks.
    Ayo kita mulai!

    Yang akan kita buat adalah sebuah aplikasi interpreter LUA sederhana. Step-step nya adalah sebagai berikut:

    1. Download library LUA.
    Download dari sini saja, atau bisa cari di devpaks.org bagian scripting.

    2. Buat program console biasa dengan codeblocks.
    3. Linking library dari poin no 1 kedalam project.
    4. Hapus isi main.cpp dan copy-paste kode dibawah ini.
    extern "C"
    {
    #include <lualib.h>
    #include <lauxlib.h>
    }
    
    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
        lua_State *L = luaL_newstate(); // opens Lua
        luaL_openlibs(L); // opens the standard libraries
    
        while (1)
        {
            char temp[64];
            cout << "input: ";
            std::cin.getline(temp, 64);
            string input(temp);
            if( input == "exit" ) break;
    
            int error = 0;
            error = luaL_loadbuffer(L, input.c_str(), input.length(), "line");
            if( error != 0 )
            {
                cout << "luaL_loadbuffer error" << endl;
            }
    
            error = lua_pcall(L, 0, 0, 0);
            if( error != 0 )
            {
                cout << "lua_pcall error" << endl;
            }
    
            if (error)
            {
                string out(lua_tostring(L, -1));
                cout << out << endl;
                // pop error message from the stack
                lua_pop(L, 1);
            }
        }
        lua_close(L);
        return 0;
    }
    
    5. Kompile, dan run.
    Seharusnya tidak ada masalah ketika kompile. Ketika run masukan input:
    print('Hello World!');
    Code barusan adalah codenya LUA, yang akan diproses oleh aplikasi C++. Output yang dihasilkan adalah:
    Hello World!

    Minggu, 07 Agustus 2011

    Panduan Nge-Blog

    Poin-Poin
    Setiap kali penulisan blog, perhatikan poin-poin berikut:
    • Ngeblog minimal 1 kali seminggu.
    • Topik ga jelas juga ga pa-pa. Ini Web Log - bukan Web Site. 
    • 100% fokus pada tujuan
    • Gunakan poin-poin
    • Jangan di justify aligned!

    Source Code di Blogger
    Untuk membuat code snippet gunakan:
    <script class="brush:cpp" type="syntaxhighlighter">
    <![CDATA[
    ]]>
    </script>
    
    atau
    <pre class="brush:html">
    </pre>
    
    Yang cara terakhir di rekomendasikan karena source code akan tetap ditampilkan sebelum di syntaxhighlighter kan. Cuma jangan lupa di convert dulu source code nya dengan Quick Escape.

    Sumber lebih detail: http://www.cyberack.com/2007/07/adding-syntax-highlighter-to-blogger.html

    Minggu, 15 Mei 2011

    Menggunakan Library MySQL di Codeblocks

    Codeblocks+MinGW secara default tidak terinstall library untuk akses MySQL.

    Persiapan
    Supaya terinstall lakukan persiapan sbb:
    1. Buka situs: devpaks.org. Terus kebagian database.
    2. Download libmysql 5.0.5 1sid.
    3. Rename .devpak ke file .tar.bz2, kemudian uncompress. (gunakan 7Zip saja)
    4. Copy isi folder include ke folder kosong bernama mysql.
    5. Cut folder mysql tsb dan paste ke dalam folder include nya MinGW.
    6. Copy isi folder lib ke folder lib nya MinGW.
    7. Copy file .dll di folder bin ke folder dimana nantinya .exe source code akan di build.
    8. Jangan lupa MySQL harus sudah terinstall sebelumnya. (XAMPP recommended).
    Aplikasi Test
    Untuk mengetahui berhasil tidaknya, buat aplikasi test dgn langkah berikut:
    1. Buat program console biasa dengan Codeblocks.
    2. Di folder examples hasil uncompress .devpak diatas, ada file mysql.cpp. Copy paste isinya ke file main.cpp yang dibuat di no.1.
    3. Edit-edit isinya sehingga username password ke MySQL nya benar. (Mis: root/root atau root/kosong)
    4. Di project build options => linker settings, tambahkan 'mysql' atau browse ke folder lib nya MinGW dan pilih file libmysql.a.
    5. Kompile and run, should be success kalau ga ada masalah.
    Semoga berhasil!!