Cheat dan Anti-Cheat pada Video Game

Salah satu tujuan banyak orang melakukan Reverse Engineering adalah mencurangi (cheating) game. Sudah banyak orang menanyakan ini ke saya, jadi akan saya bahas sekarang ini.

Cheat by Nick Youngson CC BY-SA 3.0 Alpha Stock Images
Cheat by Nick Youngson CC BY-SA 3.0 Alpha Stock Images

Tapi supaya tidak kecewa, saya tekankan dulu: cheating game modern dan populer saat ini (misalnya pubg) sangat sulit. Teknologi anti cheat selalu diupdate, dan tidak ada satu artikel di internet yang bisa membuat Anda bisa mencurangi game terbaru.

Sebagai catatan: banyak video sampah di Youtube yang mengajari cara cheat game padahal yang dijelaskan di situ tidak masuk akal sama sekali.

Cheating Game Jaman Dulu vs Sekarang

Mungkin Anda membaca beberapa artikel lama tentang cheating game dan berpikir cheating itu mudah. Sebelum membahas berbagai teknik cheat dan anti-cheat, saya tuliskan dulu tentang cheating jaman dulu dan sekarang.

Jaman dulu, terutama masa sebelum internet, cheating game relatif mudah. Berbagai perkembangan teknologi (termasuk juga kecepatan CPU, ketersediaan multi core) membuat cheating game makin sulit dilakukan.

Versi Game

Pertama adalah masalah update. Dulu Versi game tidak berubah sejak dirilis karena distribusinya sulit menggunakan CD-ROM/DVD, jadi jika ada game versi 1.0, kemungkinan tidak akan berubah sampe bertahun-tahun kemudian. Di masa awal internet, game juga masih didistribusikan via CD/DVD walau sudah bisa dimainkan online.

Dulu jika ada yang menemukan atau membuat cheat tertentu, maka pembuat game tidak bisa mengupdate kodenya. Sekarang: dalam hitungan hari sudah ada update di play store/app store/steam/dsb. Tentunya masih banyak game sederhana/tidak populer yang dibiarkan saja oleh pembuatnya..

Tulisan/Artikel tentang cheating

Dulu banyak orang dengan sukarela menuliskan ilmu tentang cheat yang dikembangkan, ini tidak apa-apa karena meskipun pembuat game membaca artikelnya, tidak ada yang bisa dilakukan sampai versi berikutnya beberapa tahun lagi atau beberapa bulan lagi.

Sekarang ini jika seseorang menemukan cheat game, mereka akan menyembunyikan atau tidak men-share tekniknya. Kalau dishare, maka pembuat game akan membaca artilel tersebut dan segera mengubah kodenya.

Resource Anti Cheat

Dulu teknik anti cheat dilakukan oleh pembuat game yang teamnya kecil. Mereka ini sering kali adalah programmer game yang bagus, tapi kurang mengerti teknologi cheating. Sekarang ini untuk game besar, sering ada team khusus yang melakukan development anti cheat.

Pekerjaan membuat anti cheat di berbagai perusahaan game yang besar gajinya mencapai puluhan/ratusan ribu USD/tahun (atau dalam rupiah 1-5 milyar/tahun). Game-game ini menghasilkan jutaan USD per bulan. Jadi mereka yang sudah dibayar mahal ini tidak tinggal diam melihat para cheater yang berpotensi mengurangi pendapatan mereka.

Sebagai pembanding: para pembuat cheat kebanyakan sukarela, karena ingin sekedar menang dalam game. Jika levelnya sudah terlalu sulit, mereka akan menyerah. Tapi ada juga group-group yang menjual cheat, motivasi mereka lebih besar dan tentunya mereka tidak mau sharing ilmu karena akan mengurangi pendapatan mereka.

Selain menyewa orang secara khusus, ada juga beberapa perusahaan yang mengembangkan teknologi anti cheat untuk dipakai oleh berbagai game lain. Contohnya adalah BattleEye. Mereka bahkan punya lowongan spesifik: membuat teknologi anti cheat.

Sebenarnya bukan cuma game yang butuh anti cheat. Contoh aplikasi non game yang sering dicurangi orang adalah Snapchat. Biasanya fitur yang diinginkan adalah bisa menyimpan/screencapture foto tanpa ketahuan. Snapchat bahkan sampai mengakuisisi sebuah perusahaan untuk meningkatkan keamanannya.

Kompleksitas Anti-Cheat

Ketika resource CPU masih sangat rendah, game harus sangat dioptimasi, jadi biasanya anti cheat hanya dijalankan sekali saja ketika game dimulai atau ketika pergantian level.

Sekarang ini dengan CPU multi core yang bahkan sudah ada di HP Android low end, bisa ada thread khusus yang melakukan pengecekan berkala. Jika satu pengecekan berhasil dibypass di awal, masih ada pengecekan lain yang dijalankan secara periodik.

Contoh aneka jenis teknik cheating

Jenis cheating untuk berbagai game beraneka ragam, tergantung jenis gamenya. Kadang-kadang cara cheating di satu game tidak berlaku sama sekali di game lain.

Untuk game jenis fighting, misalnya bisa dibuat aimbot yang otomatis mengarahkan (aim) senjata ke target, atau untuk melihat pemain lain meski terhalang dinding. Untuk game jenis puzzle bisa dibuat solver otomatis yang memberi tahu solusi gamenya.

Jadi tidak ada satu jenis cheat, dan teknik anti cheat untuk berbagai jenis cheat juga berbeda-beda. Di sini saya akan bahas contoh saja beberapa jenis cheating yang umum.

Memory/File Editing

Jaman dulu cheating game single player hanya sekedar mengubah jumlah koin di memori atau di file (untuk game yang ada savefile-nya), atau mengaktifkan sesuatu fitur yang seharusnya tidak aktif. Ini sangat mudah dilakukan dengan berbagai tool yang melakukan scanning memori, mencari value, lalu mengganti value tersebut.

Sekarang ini sebagian besar nilai sudah disimpan di server. Jadi meskipun kita mengganti nilai koin di game lokal, ketika gamenya dimulai (atau ketika akan membeli item) game akan meload lagi nilainya dari server via internet dan akan diverifikasi pembeliannya di internet.

Sebagian nilai kadang masih bisa disimpan lokal, misalnya beberapa game ada fitur agar profile kita memakai kostum tokoh tertentu dan pengecekan fitur ini dilakukan lokal/offline.

Logika cheat ini sangat sederhana: misalnya di layar tertampil koin kita 120500, kita search nilai 120500 di memori. Kemungkinan ada beberapa memori yang memiliki nilai itu, berikutnya: kita belanjakan uangnya, misalnya jadi 110000. Lalu kita search lagi nilai 110000 itu, hasilnya: akan ada daftar memori yang berkurang nilainya. Kalau masih ada kandidat lain, kita coba belanjakan koin lagi atau beli koin lagi, sampai ketemu: di memori ini tersimpan nilai koinnya.

Cheating jenis ini levelnya sangat mudah, berlaku untuk banyak game sederhana yang kurang populer. Tool yang dibutuhkan juga banyak tersedia di internet (misalnya Game Guardian untuk Android). Untuk mengedit savefile kadang hanya butuh hex editor saja. Biasanya tidak dibutuhkan coding untuk cheat jenis ini.

Function Hooking/Library Patching

Cheat level berikutnya butuh coding. Fungsi-fungsi tertentu bisa diganti implementasinya dengan milik kita sendiri. Contoh sederhana: jika ada fungsi bernama “isVisible()” yang gunanya untuk mengecek apakah sebuah objek terlihat atau tidak bisa diganti dengan fungsi yang selalu mengembalikan “true”.

Ada banyak library untuk function hooking, tergantung platform/sistem operasi yang dipakai. Contoh: di iOS ada fishhook (untuk hooking fungsi library), substrate (hooking fungsi sembarang). Di Android bisa memakai library Frida (butuh root). Di Windows ada banyak teknik hooking yang bisa dicari sendiri.

Contoh hooking yang lain adalah melakukan intercept terhadap paket jaringan. Sebelum data dikirim ke server, data bisa diubah (misalnya yang tadinya “miss” jadi “hit”). Sebaliknya: data dari server yang tidak ditampilkan oleh game, bisa ditampilkan ke user.

Di level ini cheating sudah butuh coding. Coding biasanya perlu dilakukan di level native code (biasanya C) tapi kadang sampai harus level assembly. Ini semua tergantung proteksi gamenya dan dalam bahasa apa game itu ditulis..

Banyak tutorial cheat di Youtube yang cuma sampah. Mereka memperlihatkan mengedit file .so dengan hex editor saja. Seringkali nilai yang diberikan ngawur, dan jelas tidak akan jalan di versi lain file .so tersebut. File .so isinya adalah kode mesin, untuk memahaminya diperlukan disassembler/decompiler.

Bentuknya apa function hooking ini? bisa berupa aplikasi baru yang melakukan injeksi ke aplikasi asli atau bisa berupa library (dll di Windows, .so di Linux/Android .dylib di OSX/iOS). Library ini bisa berupa library baru, atau hasil patch dari library lama.

Bot

Bentuk cheat lain yang umum adalah bot. Artinya: bukan manusia yang main gamenya, tapi program lain. Jenis bot ini bisa banyak: ada yang full bisa memainkan game dari awal, atau ada yang dipakai untuk melakukan aksi tertentu saja (mengumpulkan koin, dsb).

Bot ada yang bisa dijalankan di device, ada yang bisa dijalankan di PC. Bot ada yang butuh aplikasi gamenya, dan ada juga bahkan yang hanya berupa skrip yang langsung melakukan request ke server.

In App Purchase (IAP) Hack

Untuk game di mana pemain bisa membeli koin dengan in app purchase, maka ini bisa dicurangi untuk game yang tidak mengecek di sisi server. Semua game besar/populer punya server untuk mengecek receipt dari app store dan biasanya tidak bisa dicurangi.

Flow pembelian adalah: aplikasi meminta app store untuk meminta uang dari user. Setelah selesai, app store akan memberi tahu aplikasi bahwa pembelian selesai, dan ini tanda terima (receiptnya). Aplikasi kemudian bisa mengecek ke server app store untuk memeriksa apakah receiptnya valid. Nah masalahnya: jika aplikasi meminta langsung ke app store, fungsi ini bisa dihook dan hasilnya: “ok ini receiptnya valid”.

Anti Cheating

Setelah memberi contoh teknik cheating, saya akan menjelaskan “anti cheating” yang umum dilakukan. Saya akan mengambil contoh dari teknik cheating di atas.

Anti Memory/File Editing

Supaya savefile tidak dimodifikasi, filenya bisa dihash dengan digital signature. Jika signature tidak valid, maka game tidak mau meload savefile-nya. Jadi jika file diedit dengan hex editor, hasilnya: game tidak mau meload filenya karena signaturenya tidak valid lagi.

Bagaimana dengan nilai di memori? misalnya kita ingin menyimpan nilai score, bisa saja scorenya disamarkan, misalnya dengan minus N. Jadi jika nilai koin saat ini 100000, dengan N = 12000, maka tersimpan di memori: 88000. Ketika akan ditampilkan di layar, nilai N-nya ditambah dulu dengan 12000. Teknik anti cheating ini terlalu sederhana, dan beberapa engine cheating bisa mendeteksi seperti ini. Tentunya kita bisa juga menggunakan enkripsi yang lebih rumit seperti AES.

Sebagai programmer, tentunya banyak kreativitas yang bisa dilakukan untuk menyembunyikan nilai koin ini. Misalnya bisa saja nilainya disimpan di 10 tempat, masing-masing ditambah/dikurangi dengan nilai berbeda. Tiap kali gamenya dijalankan bisa juga dibuat nilai random untuk mengecoh fitur “value finder” dari sebuah cheat engine.

Cara paling efektif adalah: nilai koin disimpan di server, dan segala pembelian item diproses oleh server, sehingga cheat jenis ini tidak bisa dilakukan.

Anti Function Hooking/Library Patching

Jika sudah belajar teknik malware tingkat lanjut, kita akan tahu bahwa mengganti fungsi akan meninggalkan jejak. Cara termudah mengecek ini adalah: dengan melakukan checksum binary di memori, lalu nilainya dikirimkan ke server. Server bisa mengecek apakah nilai sesuai seharusnya.

Cara lain adalah dengan mengecek header tiap fungsi, apakah ada tanda-tanda bahwa fungsi tersebut sudah di-hook/intercept. Ketika melakukan patching kode, berbagai library akan mengubah header fungsi dengan instruksi assembly untuk “jump”. Jika ini terdeteksi, maka berarti fungsi sudah diubah.

Anti Bot

Ketika diluncurkan, banyak sekali orang yang membuat bot Pokemon Go. Versi pertama aplikasi ini proteksinya kurang bagus, jadi seseorang bisa mempelajari dengan mudah. Versi-versi berikutnya menjadi sangat sulit dan sekarang tidak ada lagi library yang bisa dipakai untuk melakukan koneksi ke server Pokemon Go.

Teknik anti bot yang mereka pakai adalah gabungan dari banyak hal. Mereka membuat koneksi yang dihash secara custom, versi pertama masih bisa dibongkar. Berikutnya mereka membuat versi berikutnya yang terenkripsi. Selain itu mereka mendeteksi berbagai macam perilaku (behavior) bot yang tidak masuk akal atau tidak konsisten. Ini digabung dengan berbagai cara untuk mendeteksi function hooking/library patching.

Anti IAP Hack

Jika sebuah aplikasi/game cukup sukses, developer bisa memiliki server yang bisa mengecek receipt In App Purchase dengan melakukan koneksi ke server. Jadi ketika seseorang membeli koin:

  • Transaksi dilakukan di device
  • Aplikasi mengirimkan receipt ke server pembuat aplikasi
  • Server pembuat aplikasi akan melakukan validasi ke server apple/google (koneksi langsung tidak bisa diintercept)
  • Status koin/fitur di server pembuat aplikasi akan diupdate jika valid
  • Aplikasi mendapatkan informasi dari server
  • Ketika akan menggunakan koin untuk membeli item, server memakai informasi yang ada di server, jadi tidak bisa diubah oleh aplikasi

Kadang masih ada kebocoran, terutama jika ada metode lain seseorang bisa mendapatkan koin misalnya jika pengguna aplikasi bisa mendapatkan koin/reward dari menonton iklan.

Anti-anti Cheating

Apakah para cheater segera menyerah dengan adanya berbagai teknologi anti cheat? Tentunya tidak. Tapi di level ini sudah dibutuhkan pemahaman kode yang dalam.

Anti-anti memory patching/editing

Jika sebuah nilai hanya disamarkan di memori, maka dengan melakukan reverse engineering (membaca disassembly dan hasil dekompilasi) bisa ditemukan nilai apa yang dikurangi/ditambah. Jika sudah tahu perubahannya, maka teknik pertama kembali bisa dilakukan, cukup dengan menambah/mengurangi/melakukan decrypt terhadap nilai di memori.

Jika aplikasi mendapatkan nilai dari server, mungkin nilainya bisa diintercept dengan function hooking agar bisa diubah sebelum sampai ke aplikasi.

Jika memang aplikasi butuh nilai di memori dan terlalu lambat untuk meminta nilainya dari server, apakah pembuat aplikasi akan menyerah di level ini? pembuat aplikasi bisa mengubah metodenya tiap rilis baru gamenya. Cheat yang berjalan di versi 1.0, tidak akan jalan lagi di versi minggu depan.

Anti-anti function patching

Dalam kasus anti function patching: ada kode yang memeriksa apakah fungsi ini diubah atau tidak. Kode pemeriksa ini bisa dipatch agar hasilnya selalu mengembalikan OK. Tentunya mencari kode pemeriksa ini juga tidak mudah, butuh reverse engineering lagi.

Lalu apa respond pembuat game? sekarang sebagian game memiliki kode (X) yang akan mengecek apakah ada patching. Lalu ada kode (Y) yang memeriksa apakah fungsi pengecek (X) tersebut tidak dipatch. Contoh lain: ada game yang memiliki dua fungsi yang saling mengecek satu sama lain.

Apakah para pembuat cheat menyerah? tidak juga, banyak teknik yang bisa dipakai misalnya emulasi kode menggunakan emulator tertentu (misalnya Unicorn Engine atau Qemu), merelokasi kode (misalnya dengan Gum Relocator bagian dari Frida) dan mempatch kode aslinya.

Anti-Anti IAP

Khusus untuk In App Purchase, di sini cheater memiliki keterbatasan. Untuk pengecekan di sisi server, tidak ada lagi yang bisa dilakukan, kecuali ada yang nekat menghack servernya.

Untuk game yang punya fitur voucher/kode: sering kali hacker membeli voucher dengan kartu kredit curian, lalu menjual vouchernya. Di dalam kasus lain, kadang server penjual voucher yang dihack untuk mendapatkan kode voucher gratis.

Anti Reverse Engineering

Berbagai teknik anti cheat bisa dipelajari jika kita bisa membaca kodenya. Untuk mempersulit, kebanyakan game memakai teknik Anti-RE. Biasanya yang paling dasar adalah obfuscation.

Obfuscation adalah teknik untuk membuat kode lebih sulit dibaca oleh manusia, dan tetap bisa dieksekusi langsung oleh mesin. Jangan kaget misalnya ketika melakukan reverse engineering berbagai aplikasi, bahkan IDA Pro bisa diakali agar tidak mengenali function boundary (mana awal/akhir fungsi). Decompiler juga bisa menghasilkan kode yang membuat kita pusing.

Untuk native code, standar yang dipakai saat ini adalah LLVM Obfuscator. Versi lama bisa ditangani dengan plugin khusus IDA Pro. Tapi banyak perusahaan memiliki varian khusus dari obfuscator ini sehingga tools deobfuscator sederhana tidak bisa digunakan.

Selain itu teknik RE yang lain adalah anti debugging. Dengan ini kode program tidak bisa dengan mudah dijalankan dalam debugger.

Anti-anti-anti …

Untuk setiap teknik cheat yang diciptakan, akan ada teknik anti-cheat. Dan untuk tiap teknik anti-cheat, akan ada teknik anti-anti-cheat, sampai batas tertentu.

Pembuat game bisa membuat anti cheat yang sangat hebat dan rumit, tapi jika terlalu rumit dan membuat gamenya terlalu lambat dimainkan atau butuh spec terlalu tinggi, atau membuat HP menjadi sangat panas, maka pemain akan berhenti bermain. Jadi pembuat game punya batasan pemeriksaan yang bisa dilakukan.

Tiap platform punya batasan masing-masing sehingga tidak semua teknik anti cheat bisa dipakai. Misalnya aplikasi iOS yang masuk ke app store tidak mungkin memiliki self modifying code seperti di Android

Sementara biasanya batasan pembuat cheat adalah kesabaran. Jika pembuat game mengubah anti cheatnya tiap bulan, lama-lama mereka akan lelah. Ingat: pembuat anti cheat dibayar mahal, sedangkan pembuat cheat biasanya pendapatannya tidak seberapa.

Tiap level baru membutuhkan skill baru. Untuk bisa melakukan hacking game modern, minimal perlu pengetahuan reverse engineering yang dalam, plus pengetahuan spesifik untuk platform tertentu (Android/iOS/yang lain).

Selain itu ada banyak teknologi spesifik yang perlu dipelajari, tergantung gamenya. Ada game yang dibuat menggunakan Unity, dan untuk patching gamenya kita perlu mengenai engine Unity. Game dengan Unity gampang diedit jika masih menggunakan mode .NET murni, tapi jadi sulit jika ditranslasikan ke C (dengan il2cpp) dan dilewatkan ke obfuscator. Ada game yang memakai game engine Corona yang memakai Lua jadi perlu mengenal bahasa pemrograman Lua.

Sampai di titik tertentu, ketika sudah paham berbagai hal low level, banyak hacker game yang akhirnya memilih jalan lain. Menjadi programmer atau melakukan pekerjaan security yang pendapatannya lebih besar. Di jangka panjang, menjadi pembuat cheat juga cukup membuat stress karena tiap versi bisa ada proteksi baru yang perlu dipelajari.

Resource

Saya bisa menyarankan resource-resource ini untuk mulai mengenal dunia hacking game:

Atau cari informasi spesifik mengenai teknik yang ingin Anda ketahui. Contohnya teknik anti reversing di Android ada di resource ini. Sebagai catatan: ini baru resource untuk memulai, ketika mulai berusaha cheating, akan ada banyak hal lain yang perlu dipelajari: tentang berbagai format data, tentang enkripsi, dan masih banyak lagi.

Jika ingin yang bentuknya video, sudah ada yang membuat serial belajar game hacking (ketik artikel ini ditulis, levelnya masih sampai level dasar, tidak akan bisa mencurangi game modern dengan yang diajarkan di level ini):

https://guidedhacking.com/threads/squally-cs420-game-hacking-course.14191/

Penutup

Saran saya buat yang ingin hacking game: cobalah dari game yang sederhana. Lebih bagus lagi kalau Anda mencoba membuat game sendiri supaya lebih paham mengenai struktur sebuah game.

Buat Anda yang ingin terjun sampai game yang sulit: silakan saja, tapi jika modalnya hanya ingin mengedit file dengan hex editor saja, Anda tidak akan sampai ke mana-mana. Keahlian Reverse Engineering wajib dikuasai.

Dan jangan tanya saya bagaimana memakai tools IDA Pro, Ghidra, Radare. Berbagai tools tersebut banyak tutorialnya di Internet. Tapi intinya bukan pada toolnya, tapi kemampuan membaca kode. Mengajari memakai microsoft Word bisa dilakukan dengan cepat, tapi mengajari cara membuat Novel yang indah dengan Microsoft Word akan butuh waktu sangat lama. Word di sini hanyalah sekedar tool.

Sebenarnya saya juga tidak keberatan berdiskusi mengenai berbagai teknik cheat/anti-cheat. Tapi kalau level ilmunya masih terlalu jauh, maaf saya nggak sabar, karena harus banyak sekali menjelaskan segala sesuatu. Seringkali yang bertanya:

  • Tidak menyebutkan apa gamenya, untuk platform apa (iOS/Android/PC), padahal tekniknya berbeda untuk berbagai OS
  • tidak pernah memakai IDA pro atau tool sejenis
  • tidak pernah memakai debugger
  • tidak tahu berbagai teknik cheat, hanya ingin tahu bagaimana bypass anti cheat. Padahal setiap bagian anti cheat itu dibuat karena jenis cheat tertentu

Ini seperti anak kelas 2 Sekolah Dasar yang minta dijelaskan matematika untuk pemrograman game 3D, tapi (sesuai kurikulum kelas 2 Sekolah Dasar ):

  • belum bisa mengalikan bilangan besar
  • belum tahu perpangkatan
  • belum tahu notasi matriks
  • belum tahu berbagai konsep geometri (koordinat 3D), fungsi trigonometri (sin, cos, tan), dsb.

Nah jika ada anak SD bertanya seperti itu, apakah Anda mau menjelaskan? apakah bisa punya kesabaran menjelaskan setiap bagian sampai anak SD-nya mengerti? dan andaikan bisa, kira-kira akan butuh berapa lama? bersedia menjelaskan itu semua tanpa dibayar? Atau Anda akan menyuruh anak SD itu untuk belajar dulu dasar-dasarnya?

Jika pertanyaannya sangat spesifik, maka saya bisa memberikan petunjuk, seperti misalnya bagaimana mendeteksi method swizzling di Objective C? (banyak dipakai untuk mencurangi game/aplikasi iOS) dan bagaimana membypass deteksinya?

Jangan juga meminta saya membuat cheat untuk game tertentu. Saya sudah pernah menulis biaya reverse engineering itu mahal. Kalau ingin gratis ya silakan belajar sendiri.

Jawaban di Reddit yang saya temukan ini cukup mewakili jawaban saya terhadap yang ingin bertanya tentang cara reverse engineering anti cheat pada sebuah game. Intinya adalah: “get good”.

Review App: Foldify – Create, Print, Fold!

Aplikasi Foldify ini merupakan aplikasi yang tersedia di Appstore untuk ipad dan iphone. Kami membelinya sudah lama sekali, sejak Jonathan masih kecil dan Joshua belum ada. Kalau dari kategorinya, foldify ini untuk umur 9+, tapi sebenarnya untuk latihan mewarnai, menggunting dan melipat ya bisa dari umur berapa saja.

contoh-contoh template yang tersedia

Beberapa bentuk sudah tersedia dan diwarnai. Kita bisa print dan gunting, lalu dilipat dan dimainkan. Bentuk-bentuk tersebut ada versi kosongnya juga yang bisa kita print untuk diwarnai di kertas sebelum digunting dan dilipat, atau bisa mewarnai dengan aplikasinya juga.

Bentuk-bentuk yang masih “kosong”

Kalau kita memilih template yang kosong untuk diwarnai, kita akan mendapatkan bentuk 3 dimensi sebelum digunting dan dilipat. Dari halaman ini kalau langsung kita print, maka anak-anak bisa mewarnai dikertas. Tapi kalau kita ingin mewarnai dengan aplikasi, ketika kita mewarnai di sisi kanan, gambaran 3dimensinya akan langsung terlihat efek dari warna yang kita berikan.

template untuk diwarnai

Bentuk yang sudah kita warnai bisa kita upload, kirimkan ke e-mail, share di FB dan twitter ataupun simpan ke galeri foto.

pilihan untuk share hasil foldify

Kalau kita ingin langsung mengeprint ke kertas juga bisa, dengan catatan kalau ipadnya terkoneksi langsung ke printer. Kami sekarang ini masih memilih untuk simpan sebagai PDF dan kirimkan e-mail PDF nya. Ipad yang digunakan joshua sengaja tidak diinstal banyak hal, termasuk koneksi ke printernya.

pilihan untuk mencetak

Seperti halnya dengan mainan yang lain, ketika menemukan aplikasi baru, Joshua akan selalu memulai dengan ABC dan 123. Dia rajin sekali menyusun huruf-huruf dan memilih warna. Biasanya tidak semua kami cetak. Beberapa yang dicetak kami ajak dia untuk gunting dan lipat. Untuk urusan gunting dan lipat, sampai sekarang masih belum terlalu bisa.

Ukuran dari foldify yang dihasilkan juga bisa diatur. Kalau diperhatikan huruf-huruf yang sudah kami cetak, gunting dan lipat ada yang kecil dan besar.

Jonathan dulu lebih suka memilih bentuk-bentuk yang bisa dimainkan seperti bus. Pernah juga kami membuat pohon natal kecil dari 3 limas segi empat yang diwarnai hijau.

Sekarang ini, pembuat aplikasi foldify ini juga mengembangkan foldify dengan menambahkan beberapa template animal. Tapi karena harus beli lagi terpisah, kami belum membelinya. Aplikasi yang sudah dibeli dengan harga $3.99 USD ini masih cukup dimainkan dan belum perlu membeli yang berikutnya.

Untuk yang ingin melihat bagaimana contoh foldify bekerja, bisa dilihat di video-video yang ada di YouTube

sumber: https://www.youtube.com/watch?v=j-1j_oc7HF8
sumber: https://www.youtube.com/watch?v=gG6KGWbTM1c

Mungkin akan ada yang bertanya-tanya, apakah ada aplikasi sejenis versi androidnya? sayangnya sejauh ini kami belum menemukannya. Kalau ada yang tahu aplikasi sejenis foldify untuk android, silakan berbagi informasinya di komentar ya. Aplikasi ini cukup menyenangkan buat anak-anak, sekaligus bisa untuk mengajarkan bentuk 3 dimensi juga.

Game Console: Wii

Saya sebenarnya jarang main game, Joe lebih banyak main game walaupun bukan pemain game hardcore. Dari dulu, dia senang aja main game di berbagai game console. Salah satu game console yang masih dimainkan sampai sekarang itu Wii dari Nintendo. Kami membeli Wii sekitar tahun 2008 karena ada game Wii Sports, di mana kita bisa bermain dan bergerak dan bukan hanya duduk saja seperti main game lainnya. Dulu awalnya suka main game Wii Sports, ceritanya buat pengganti bayar keanggotaan di gym, mending beli Wii saja. Belakangan, setelah ada anak-anak, mulai suka main game Mario Carts, Big Brain Academy, Cooking Mama dan Just Dance.

Dalam kurun waktu 12 tahun, Wii yang kami beli itu tidak terus menerus dimainkan. Ada masa di mana kami lupa kalau kami punya Wii. Tapi game console ini sudah banyak dimainkan ketika mulai bosan dengan mainan yang lain dan atau ketika ada oppung, eyang bahkan Oma nya anak-anak datang berkunjung di Chiang Mai. Pernah juga, kami main bersama teman-teman Indonesia di Chiang Mai, ketika anak-anak masih bayi (yang main ortunya bukan bayinya). Setiap kali main Wii, selalu membawa hiburan untuk yang main maupun untuk yang menonton yang main. Kadang-kadang setelah berhari-hari main, jadi berhenti main karena kehabisan baterai untuk wiimote-nya. Pernah beli baterai yang bisa diisi ulang, tapi suka lupa buat isi ulangnya hehehe.

Game console Wii kami yang pertama pernah di “hack” juga oleh Joe, dan beberapa tahun lalu, akhirnya consolenya rusak karena lama ga dimainkan dan mungkin sudah umurnya saja. Sekarang ini sudah ada generasi berikut dari Wii yaitu Wii U, tapi kami tidak membeli Wii U karena pengalaman membuktikan, kami tidak terlalu sering memainkannya dan permainan di Wii masih terasa cukup seru kalau mau main game. Jadi kami memilih cukup dengan Wii saja.

Sekarang ini, harga Wii sudah sangat murah dibandingkan 12 tahun lalu, bahkan di Chiang Mai, kadang ada yang menjual Wii nya lengkap dengan aksesori wiimote dan koleksi game dengan harga sangat murah. Tapi selama ini, setiap kali mau beli dari orang yang menjual Wii-nya, saya selalu kalah cepat. Akhirnya tahun lalu, Joe memutuskan membeli Wii lagi yang bekas dari ebay.

Beberapa hari ini, anak-anak inget lagi dengan game Wii. Game yang paling banyak dimainkan hari ini adalah game: Just Dance, Mario Party dan Big Brain Academy. Joshua belum bisa mainin game-nya dengan benar, karena dia masih belum bisa menggunakan wiimote untuk memilih menu di layar tv. Joshua suka melihat Jonathan main terutama main Just Dance.

Hari ini, Joshua main sampai keringatan, tapi gak mau berhenti. Saya aja udah cape mainnya, eh dia masih semangat terus bilang jangan berhenti mainnya. Lucu sebenarnya melihat mereka menari-nari niruin gerakan tariannya, apalagi gerakannya tentunya gak selalu benar. Tapi ya, yang penting memang semangat bergeraknya hehehe.

Pada semangat main just dance sampai keringatan

Jadi ingat, sebelum menemukan game Just Dance di Wii, saya dan teman-teman di kost dulu sering main game Dance-Dance Revolution. Awalnya membeli game console PS1 bekas dengan bonus cd game yang banyak termasuk dance-dance revolution. Setelah menemukan dance pad-nya, sering deh dulu main dance-dance revolution. Sayangnya, baik dance pad nya, PS 1 nya dan cd gamenya sudah rusak, padahal dulu sengaja dibawa ke Chiang Mai. Pengen juga mengajak anak-anak main dance-dance revolution dengan menggunakan dance pad, tapi belum menemukan lagi pengganti dance pad dan game consolenya. Di Wii, ada juga mainan seperti dance dengan menggunakan balance boardnya, tapi lebih seru main di dance pad sih.

Ngomong-ngomong, ada yang masih punya Wii gak? Biasanya suka main game apa di Wii? Atau jangan-jangan ada yang masih punya dance pad dan main dance-dance revolution di PS 1 ?

Joshua dan Osmo (Newton, Coding, Coding Jam, Detectives dan Pizza Co)

Sejak Joshua main OSMO lagi dan tidak menunjukkan tanda bosan, kami memutuskan untuk melengkapi mainan OSMO kami. Beberapa yang belakangan di beli Osmo Coding Jam, Osmo Detectives dan Osmo Pizza Co. Sebelumnya Joe memprint sendiri untuk Pizza Co nya, tapi jadinya susah menyimpannya. Dengan alasan supaya mainnya lebih enak, akhirnya kami beli juga.

Khusus untuk Osmo Newton, kami tidak membeli creative boardnya tapi hanya menggunakan white board kecil yang ukurannya mirip dengan creative board.

Tulisan ini sekilas review sekaligus biar ingat apa yang sekarang sering dimainkan Joshua.

OSMO Newton

Osmo Newton ini sebenarnya mainnya agak rumit. Jadi kita diminta untuk membuat garis supaya bola yang jatuh terpantul lagi mengikuti hukum Newton. Joshua tapi senang bikin aturan sendiri mengumpulkan bola kecilnya dan somehow dia bisa sampai level 30 an.

Osmo Newton pakai whiteboard biasa
lagi milih mau main apa

Osmo Coding dan Coding Jam

Osmo Coding kami sudah beli sejak Jonathan 6 tahun, sekarang ada yang baru namanya Coding Jam. Prinsip mainnya sama, mainan coding juga bisa dipakai di coding jam. Bedanya coding jam ini punya lebih banyak instruksi dan kita menyusun instruksi untuk mengcompose musik.

Coding Jam
kemasannya bagusan yang lama
Osmo Coding bisa dipakai untuk Coding Jam

Kadang Joshua main bergantian antara Osmo Coding dan Coding Jam. Dia sudah mengerti instruksi dasar dari Osmo Coding dan Coding Jam. Joshua lebih suka yang coding jam, karena hasilnya bisa mendengarkan musiknya.

Osmo Detective Agency

Osmo Detective Agency ini sebenarnya seperti permainan I spy with my little eye. Jadi diberikan beberapa peta kota dan sebuah kaca pembesar. Kita diminta untuk mencari objek-objek yang ada di peta yang kita buka.

Kaca pembesar dan peta beberapa kota
total ada 8 peta
peta dan kaca pembesar bisa dimasukkan ke kotak seperti ini

Sekarang ini Joshua sukanya hanya mencari objek di Osmo Town. Tapi nantinya kalau dia sudah mengerti, Osmo Detective Agency ini bisa sekalian untuk mengenalkan geography dan landmark yang terkenal di sebuah kota. Misalnya menemukan Eiffel Tower di Paris, Perancis.

Osmo Pizza Co.

Untuk Pizza Co ini, Joshua sebenarnya belum terlalu mengerti (karena dia gak suka makan pizza), tapi ya kami beli juga untuk mengajarkannya kalau Pizza itu enak hahaha. Selain mengenalkan pizza itu ada berbagai topping, tentunya bisa untuk mengajarkan matematika juga.

isinya paling susah diberesin

Mainan ini paling butuh waktu membereskannya karena ada banyak koin, uang kertas dan juga topping dari pizza nya. Biasanya saya hanya ijinkan main pizza kalau memang kami temenin. Kalau nggak, saya kuatir mainannya bakal banyak yang hilang.

Osmo ini salah satu mainan yang agak mahal tapi juga banyak dimainkan anak-anak dan juga berguna untuk bermain dan belajar. Sekarang ini, Jonathan sudah tidak pernah lagi main Osmo. Bukan karena Jonathan tidak mau main, tapi karena Joshua tidak ijinkan Jonathan main hahaha. Jadinya kami bilang ke Jonathan, kalau mau belajar coding, langsung aja deh belajar di komputer.

Tadinya berencana beli juga Osmo HotWheels Mindracer, tapi entah kenapa, mainan ini tidak bisa dikirim ke Thailand. Mungkin tandanya cukup dengan Osmo yang ada sekarang saja kali ya hehehe.

Oh ya, karena membeli dengan jarak beberapa tahun, kami mendapatkan kemasan yang berbeda dengan seri pertama. Kemasan Osmo yang pertama lebih bagus, kotaknya lebih kokoh dan tutupnya menggunakan magnet. Untuk yang sekarang, kotaknya lebih tipis kartonnya dan kurang praktis.

Game Harry Potter: Wizards Unite

Game Harry Potter ini merupakan game terbaru dari Niantic pembuat game Pokemon Go. Karena belakangan mulai jarang main Pokemon Go, iseng deh coba liat Harry Potter. Tulisan ini isinya kesan pertama dari bermain Harry Potter yang baru diinstal beberapa hari. Belum eksplorasi banyak soal game ini, tapi sekilas udah bisa liat kemiripan game ini dengan Pokemon Go.

Secara garis besar, game ini sangat mirip dengan Pokemon Go. Ada banyak terminologi yang bisa diasosiasikan dengan Pokemon Go. Tapi menurut saya, game Harry Potter ini terlalu banyak informasi di awal dan terlalu banyak tulisan yang harus dibaca dan mungkin lebih cocok untuk pemain game yang biasa dengan game di PC. Buat saya yang main game cuma sekedar iseng, game ini agak bikin males mainnya, butuh waktu untuk memahami aturan permainannya. berbeda dengan saya, Jonathan dan Joe sudah lebih dulu main game ini, jadi sekarang ini saya banyak bertanya dengan mereka.

Saya sudah membaca semua buku Harry Potter dan menonton filmnya, tapi saya tidak bisa ingat informasi seperti materi pembuat tongkat sihir ataupun pola yang dibentuk ketika kita menyebutkan metode sihir tertentu. Di game Harry Potter ini kita seperti diajarkan tracing mengikuti pola sihirnya untuk membebaskan objek yang dikutuk yang disebut confoundable (seperti pokemon nya). Di game ini juga ada sejenis pokestop dan pokegymnya. Untuk membebaskan objek yang dikutuk kita harus punya sejenis bolanya yang disebut spell.

Kalau anda penggemar berat harry potter yang sangat mengingat pola-pola yang harus dibentuk dan nama-nama spell yang disebutkan, di dalam game ini ada banyak kata-kata yang mungkin mengingatkan isi bukunya walaupun buat saya ini jadi seperti permainan anak yang sedang belajar tracing lalu dikasih hadiah menempel stiker hehehe.

salah satu pola yang harus diikuti untuk magic spell

Selain terlalu banyak informasi yang harus dibaca, animasi dalam game ini juga sepertinya terlalu berat untuk di HP. Kadang ada kesan HP nya mau hang karena menunggu game dimuat. Tanpa mengerti tujuan mainnya, saya tau-tau sudah di level 5. Kalau di game Pokemon Go, rasanya naik level di awal bisa cepat tapi lama-lama semakin sulit naik level karena butuh point lebih banyak.

Tugas harian game ini juga terlalu banyak dan membutuhkan waktu lama. Misalnya tugas membuat potion: pembuatan potion ini membutuhkan waktu 1 jam lebih. Ya tidak harus ditunggu karena bisa saja aplikasinya ditutup dan akan selesai 1 jam kemudian. Tapi untuk yang langsung ingin melihat potionnya, ada pilihan untuk mengeluarkan koin supaya proses pembuatan potionnya bisa langsung selesai. Dalam banyak hal, game ini juga sepertinya terlalu banyak menawarkan untuk membeli koin.

Kesimpulannya buat saya sekarang ini game ini terlalu rumit dan jadi gak bisa dinikmati. Terlalu berat untuk HP dan untuk memenuhi target harian. Game Pokemon Go jauh lebih menyenangkan dan santai bermainnya.

Apakah saya akan berhenti langsung bermainnya? ya nggak juga sih, sesekali akan tetap di cek karena Joe dan Jonathan yang lebih dulu akan membaca informasi tentang game ini dan saya tinggal bertanya hehehe.

Review App: Code-a-pillar

Tulisan ini membahas aplikasi gratis Code-a-pillar yang tersedia gratis untuk Android dan iOS. Catatan: tulisan ini opini pribadi, dan saya tidak dibayar untuk menuliskannya.

Selain main Tangram, sekarang ini Joshua suka main game Code-a-pillar dari Fisher Price. Namanya seperti itu karena aplikasinya bertujuan mengajarkan pemrograman sederhana (coding) dengan memberikan instruksi lurus, belok kanan atau belok kiri ke seekor ulat bulu (caterpillar).

Instruksi cara bermainnya diucapkan oleh ulat bulunya, Joshua bisa dengan mudah mengikutinya. Dalam waktu singkat, Joshua boisa menyelesaikan 13 level yang diberikan di dalam aplikasinya, tapi ya dia tetap senang berlatih untuk mengulangi lagi dari awal.

Joshua sudah selesai 13 level

Sekarang ini Joshua mengerti benar mana itu right (kanan) dan left (kiri) walaupun orientasi ulatnya dari berbagai arah. Kalau lurus tentunya dari dulu juga sudah tau hehehe. Selain belajar problem solving/coding, aplikasi ini juga mengajarkan untuk berhitung dan mengenali warna.

video 13 level app Code a pillar

Waktu saya mencari tahu mengenai aplikasi ini, ternyata aplikasi ini merupakan pendamping dari mainan fisik ulat bulu untuk seri belajar: Think & Learn Code-a-pillar. Mainannya terlihat lucu, karena bisa dibongkar pasang untuk menyusun instruksinya. Lalu setelah disusun, tinggal dijalankan untuk melihat hasil dari urutan instruksi yang diberikan. Untuk melihat mainannya bisa dilihat di video berikut:

sumber: https://youtu.be/iYEKD1Befg8

Dan melihat lucunya mainan ini, kami memutuskan untuk memesan mainan ini (yang pengen bapaknya kayaknya, anaknya aja gak tau ada mainannya hahahah). Sebenarnya sekalian juga buat hadiah ulang tahun Joshua yang sebentar lagi 4 tahun, siapa tahu nanti besarnya bisa jadi programmer handal kayak bapaknya hahahha. Mudah-mudahan mainannya sampai pada waktunya dan gak mengecewakan.

App nya sebenarnya sangat sederhana, tapi dengan adanya mainan fisiknya nantinya diharapkan bisa lebih banyak lagi eksplorasi yang dilakukan untuk mengarahkan caterpillarnya, dan sebenarnya code a pillar ini seperti versi lebih awal dari bahasa pemrograman Logo seperti yang ada di buku Secret Coders.

Pengenalan Geometri: Pattern Blocks dan Tangram

Ada banyak permainan anak-anak yang mengajarkan anak untuk mengenal bentuk dan menyusun gabungan bentuk yang ada menyerupai bentuk lain yang lebih besar. Permainan ini sebenarnya secara tidak langsung merupakan pengenalan geometri 2 dimensi kepada anak-anak. Ada 2 mainan yang belakangan ini sedang disukai Joshua, yaitu pattern block dan tangram.

Sebelum kenal tangram, Joshua sudah mengenal menyusun puzzle pattern block dan puzzle magnet kayu yang dibeli sejak jaman Jonathan kecil. Pattern block ini ada banyak kepingan dengan berbagai bentuk. Pattern block pertama yang dia mainkan ada 6 bentuk dengan 6 warna, bentuk segitiga hijau, bujursangkar oranye, jajaran genjang berwarna biru, belah ketupat berwarna coklat muda, trapesium merah dah heksagon kuning.

Cara bermain pattern block ini biasanya anak diminta untuk meletakkan kepingan yang sesuai dengan cetakannya. Dulu saya rajin mencari template dari internet, print dan laminating. Karena bentuk dan warna yang menarik, anak-anak senang menyusun kepingan block yang ada di atas cetakan. Permainan ini membutuhkan banyak kepingan bentuk, dan biasanya jadi pekerjaan ektra untuk membereskannya hehehehe.

sumber: https://www.prekinders.com/pattern-blocks/

Selain mainan pattern block ini, kami juga punya mainan varian pattern block bentuknya berbeda. Mainan ini juga dari bentuk lingkaran, setengah lingkaran, persegi panjang, busur dan segitiga. Bedanya, mainan ini dalam kotak kayu dan bermagnet. Biasanya diberikan kartu berupa gambar yang bisa diikuti anak-anak untuk membentuk gambar besarnya. Joshua sudah menyukai mainan ini sejak dia masih belum berumur 3 tahun. Kalau dulu mainnya belum terlalu bisa mengikuti kartu yang ada, sekarang dia mulai suka mengikuti contoh yang ada.

Belakangan ini, Joshua tertarik dengan Tangram. Awalnya dia kenal tangram dari permainan OSMO Tangram. Tanpa diajarin, dia bisa mengikuti apa yang harus dilakukan dengan aplikasi OSMO Tangram. Dia bisa bermain cukup lama mengikuti berbagai bentuk mulai dari yang sederhana yang tidak menggunakan semua kepingan, sampai ke bentuk yang menggunakan 7 kepingan tangram.

OSMO Tangram ini memberi petunjuk di awal mulai dengan warna apa, dan diletakkan di sebelah mana kepingan warna lain. Kalau misalnya Joshua salah meletakkan dan harus membalik kepingan, aplikasi OSMO nya juga memberi tahu. Bisa dilihat sekilas OSMO Tangram di video YouTube berikut:

Tangram (Hanzi: 七巧板; Pinyinqīqiǎobǎn; harfiah: ‘tujuh papan ketrampilan’) adalah sebuah permainan teka-teki transformasi yang terdiri dari tujuh keping potongan, disebut tans, yang disatukan untuk membentuk pola. Tujuan dari permainan ini adalah untuk membentuk pola tertentu (hanya diberi garis bentuk atau siluet) menggunakan ketujuh potongan, yang mungkin tidak tumpang tindih. Permainan ini dianggap telah diciptakan di Tiongkok semasa Dinasti Song, dan kemudian di bawa ke Eropa oleh kapal dagang pada awal abad ke-19. Ia menjadi sangat populer di Eropa saat itu untuk sementara waktu, dan kemudian populer lagi semasa Perang Dunia I. Permainan ini merupakan salah satu permainan teka-teki transformasi yang paling populer di dunia. Seorang psikolog Tiogkok menyebut tangram sebagai “tes psikologi paling awal di dunia”, walaupun orang membuatnya untuk hiburan dan bukan untuk analisis.

Wikipedia: Tangram

Kemarin, dia menemukan mainan tangram baru yang bisa membentuk angka dan huruf selain bentuk-bentuk yang selama ini dia cobakan di OSMO. Dia mengikuti petunjuk menyusun tangram yang terdiri dari 7 kepingan bentuk menjadi bentuk huruf dan angka sesuai dengan contoh yang diberikan. Dan dia mulai berusaha mengingat menyusun kepingan tangram menjadi angka dan huruf tanpa melihat kartunya.

membentuk huruf E

Kelebihan dari puzzle tangram ini dibandingkan dengan puzzle bentuk yang dia mainkan sebelumnya adalah, kepingannya hanya ada 7. Membereskan 7 keping mainan tentunya jauh lebih gampang dibandingkan membereskan banyak kepingan mainan. Dari 7 keping ini bisa menjadi berbagai bentuk. Favorit Joshua tentunya membentuk huruf dan angka.

Sambil bermain Joshua juga seperti presenter yang menyebutkan apa bentuk dan warna yang dia pegang. Lalu juga menyebutkan di sisi mana dia harus letakkan warna yang lain. Lalu setelah selesai dia akan memberi tahu ke saya atau papanya sambil berkata: look, this is A. Sayangnya, kalau divideokan dia malah jadi diam, jadi saya tidak bisa menunjukkan video dia sedang bermain tangram.

Mana yang lebih baik, main OSMO Tangram atau Tangram biasa? Untuk tahap awal, main OSMO Tangram (dimana displaynya ada di iPad) dengan petunjuk apa yang harus dilakukan jika kita salah meletakkan kepingan, cukup membantu dia belajar bermain Tangram. Gambar yang ada dalam aplikasi juga membuat lebih sedikit lagi hal yang harus di bereskan. Sisi negatifnya, ya OSMO Tangram tetap saja membutuhkan iPad, kadang-kadang anak bisa terdistract dan malah jadi main yang lain dan bukan OSMO Tangram lagi.

Template yang bisa ditiru dengan tangram ini juga ada banyak di internet. Banyak juga yang menjual kepingan tangramnya tanpa kartu-kartu, tapi anehnya gambaran yang diberikan untuk ditiru kadang-kadang warnanya tidak sama dengan warna kepingannya dan ini bisa membingungkan untuk anak yang baru belajar tangram. Joshua tapi sudah bisa mengikuti walaupun contoh yang diberikan warnanya tidak sama dengan kepingannya.

menyusun angka 1 tanpa kartu contoh

Bermain tangram dan pattern block ini salah satu bentuk bermain sambil belajar, pelajaran yang didapatkan antara lain:

  • kesempatan untuk mengenalkan bentuk (segitiga, bujursangkar, belah ketupat, heksagon, jajaran genjang, dan lain-lain)
  • belajar warna (setiap keping biasanya punya warna yang berbeda)
  • melatih kemampuan spasial, mereka bisa mengerti hubungan bentuk yang satu dengan yang lain dan membaliknya jika dibutuhkan
  • membantu anak melihat gambaran besar dari bentuk-bentuk yang disusun, terutama untuk anak yang belajar secara visual.
  • bisa digunakan untuk mengenalkan kongruensi, kesamaan dan juga simetri.
  • dan tentunya seperti kegunaan bermain puzzle lainnya, bermain ini bisa membantu melatih kemampuan problem solving pada anak.

Kalau lagi kehabisan ide mau ajak anak main, bisa dicoba dibikin mainan Tangram ini. Saya yakin ada banyak template untuk membentuk kepingan tangram selain template bentuk-bentuk yang ingin disusun dari tangram ini.