Video game tempat Anda menjadi sistem operasi
(plbrault.com)- You’re the OS adalah game di mana pemain berperan sebagai sistem operasi, mengelola inti CPU, proses, halaman memori, dan ruang swap, serta mencegah pengguna melakukan reboot
- Alur dasarnya adalah menugaskan proses yang menganggur ke CPU dan melepaskan proses yang aktif, sementara proses yang terlalu lama diabaikan akan melewati tahap starvation lalu dihentikan
- Seiring waktu, jumlah proses dan tekanan memori meningkat, sehingga pemain juga harus menangani langsung memory swapping untuk mengembalikan halaman dari disk ke RAM
- Implementasinya berbasis Python/Pygame, dan build WebAssembly dibuat dengan pygbag agar bisa dijalankan di browser
- Ini bukan simulasi sistem operasi yang sepenuhnya akurat, tetapi jika asumsi-asumsinya dijelaskan dengan jelas, game ini bisa dipakai untuk menjelaskan penjadwalan proses dan situasi kekurangan RAM
Ide game menjadi sistem operasi
- Game ini berangkat dari gagasan bahwa pemain menjadi sistem operasi yang mengelola inti CPU, proses, halaman memori, dan ruang swap
- Tujuannya adalah memberikan waktu CPU kepada proses agar pengguna tidak merasa sistem terlalu lambat, serta menukar halaman memori saat diperlukan
- Agar cocok untuk game 2D sederhana, dipilih Pygame alih-alih engine game penuh
- Alasan lainnya adalah karena ingin kembali menggunakan Python
- Pygame bisa dikompilasi ke WebAssembly melalui pygbag, sehingga cocok untuk dijalankan di browser
- Waktu pengembangannya sekitar beberapa minggu yang tersebar dalam rentang 8 bulan
Penjadwalan proses dan kondisi game over
- Mekanisme inti game adalah pengelolaan proses dan CPU
- Mengklik proses yang menganggur akan menugaskannya ke CPU yang tersedia
- Mengklik proses yang aktif akan melepaskannya dari CPU tersebut
- Proses yang menganggur akan melewati 6 tingkat starvation seiring waktu, yang ditandai dengan warna dan emoji
- Jika terlalu lama berada di tahap terakhir, pengguna akan menghentikan proses tersebut
- Jika 10 proses dihentikan, pengguna akan me-reboot pemain yang berperan sebagai sistem operasi, dan game pun berakhir
- Untuk bertahan lebih lama, setiap proses harus mendapatkan cukup waktu CPU sebelum melewati semua tahap starvation
I/O dan memory swapping
- Proses aktif bisa menjadi blocked saat menunggu event I/O
- Karena proses blocked membuang waktu CPU, biasanya lebih baik dilepaskan dari CPU
- Event I/O ditangani dengan mengklik tombol yang berubah bentuk saat event terjadi
- Seiring waktu, lebih banyak proses akan muncul sehingga tingkat kesulitan meningkat
- Pada titik tertentu, total memori yang digunakan semua proses melebihi RAM, sehingga diperlukan page swapping antara RAM dan disk
- Jika proses aktif mencoba mengakses halaman yang ada di disk, proses dan halaman terkait akan berkedip
- Dari penanda ini, pemain harus menukar halaman yang diperlukan
- Proses yang menunggu halaman di disk akan tetap dalam keadaan blocked sampai halaman itu kembali ke RAM
- Jika terlalu lama blocked, proses tersebut tetap akan melewati tahap starvation dan akhirnya dihentikan
Tingkat kesulitan dan pengaturan kustom
- Game ini memiliki beberapa tingkat kesulitan
- Tingkat kesulitan memengaruhi jumlah CPU, kapasitas RAM, jumlah proses saat awal permainan, probabilitas event I/O, dan sebagainya
- Dalam mode kustom, pengaturan ini bisa disesuaikan satu per satu secara independen
Nilai edukatif dan keterbatasan
- Game ini pertama-tama adalah sebuah game, dan dirancang dengan memprioritaskan gameplay dibanding realisme
- Ada bagian-bagian yang tidak menggambarkan sistem operasi nyata secara akurat
- Tidak diasumsikan pemain bisa bereaksi secepat komputer sungguhan
- Proses menggunakan jauh lebih sedikit halaman memori dibanding proses umum di dunia nyata
- Struktur di mana pengguna terus menjalankan proses baru tanpa batas adalah mekanisme game untuk meningkatkan kesulitan
- Meski tidak dibuat khusus untuk tujuan pendidikan, game ini tetap bisa bernilai untuk mengenalkan prinsip sistem operasi jika ditegaskan bahwa penggambarannya tidak sepenuhnya akurat
- Bisa digunakan sebagai contoh untuk menjelaskan penjadwalan proses dan memory swapping
- Bisa menunjukkan apa arti memiliki lebih banyak inti CPU dan apa yang terjadi saat RAM tidak mencukupi
Kompilasi WebAssembly dan distribusi
- Kompilasi WebAssembly ternyata lebih mudah dari yang diperkirakan berkat dokumentasi pygame-web
- Langkah utamanya adalah memasang pygbag dan menerapkan modifikasi kode yang dijelaskan di dokumentasi
- Masalah terbesar adalah pustaka pygame-emojis yang digunakan untuk merender emoji tidak bekerja bersama pygbag
- Sebagai gantinya, file SVG diunduh dari OpenMoji
- File tersebut diubah ukurannya dengan GIMP lalu diekspor sebagai PNG untuk digunakan
- Versi browser pada dasarnya menyesuaikan ukuran ke viewport browser sambil mempertahankan rasio yang sama dengan versi desktop
- Jika versi desktop menggunakan ukuran jendela yang lebih kecil, tampilan bisa terlihat meregang
- Karena game ini bergaya retro, pikselisasi tidak terasa terlalu mengganggu
- Game ini bisa dimainkan di browser melalui itch.io
- Kode sumbernya tersedia secara terbuka di GitHub
1 komentar
Komentar Hacker News
Ide keren yang terlintas adalah game defragmentasi. Pada dasarnya Tetris dengan susunan melingkar, di mana makin sering blok data dipakai, makin sebaiknya dikirim ke track luar, sementara file lama atau jenis file arsip dikirim ke track dalam, dan makin tepat penempatannya makin tinggi skornya
Dulu saya suka melihat tool defragmentasi grafis bergerak seperti sulap, dan kalau ada game defragmentasi, saya benar-benar ingin mencobanya
Ini game 2D dari sudut pandang atas, dan kamu sendirian di gudang kosong yang besar. Secara berkala truk menurunkan berbagai barang di bagian belakang, sementara di konter depan beberapa orang meminta barang tertentu. Tugasmu adalah menata barang di dalam gudang agar permintaan bisa dipenuhi secepat mungkin. Kamu bisa mengaturnya dengan cara yang cocok untukmu, entah berdasarkan warna, fungsi, nama, dan sebagainya
Seiring permainan berjalan, truk membawa barang yang makin beragam, biasanya banyak juga yang masuk ke beberapa kategori sekaligus, dan permintaan pun makin rumit. Di akhir, game menampilkan timelapse bagaimana gudang berubah sepanjang permainan, sehingga kamu bisa melihat strategi berevolusi dari waktu ke waktu
Cukup bagus dan sederhana. Saya sebenarnya mengetahuinya dari salah satu pengembangnya di komentar HN
https://boardgamegeek.com/boardgame/376284/defrag
https://www.defraggame.com
Saya ingat dulu pernah memainkan beberapa game lama yang lebih mirip tiruan langsung daripada yang ini, tetapi entah apakah orang lain bisa menemukannya
Seperti Ender's Game, menarik membayangkan pemain papan atas tanpa sadar sedang mengalokasikan memori infrastruktur penting di suatu tempat
https://xkcd.com/1897/
Begitu membaca setengah kalimat di situs web ini, saya langsung sepenuhnya paham
Ini salah satu cara terbaik untuk memahami masalah seperti ini. “Sekarang kamulah manajer memori. Semoga berhasil.”
Idenya benar-benar bagus. Rasanya bisa dibuat lucu seperti simulasi manajemen restoran. Hanya saja restorannya adalah komputer, dan pelanggannya adalah resource
Human Resource Machine juga hebat dalam hal ini. Saya ingat pada suatu titik berpikir, “Sebentar, apakah barusan saya membuat linked list?”
Sebenarnya menurut saya kehidupan manusia cukup mirip semacam sistem operasi. Setiap hari kita menangani tugas, resource, input/output, storage, cache, dan state
Dashboard adalah alat wajib dalam sistem operasi, dan pada skala manusia itu berupa bank, daftar tugas, kalender, inbox, dan semacamnya. Karena itu banyak konsep “pengembangan diri” bisa diterjemahkan dengan rapi menjadi praktik terbaik sistem operasi. Misalnya FIFO atau LIFO untuk manajemen alokasi, perencanaan awal untuk memecah deadlock, manajemen paralelisme, dan garbage collection tepat waktu
[0] https://algorithmstoliveby.com/
Misalnya ketika roda gigi masih merupakan teknologi canggih, ada orang yang membayangkan roda gigi berputar di kepala, lalu membandingkan tindakan berpikir dengan gerakan roda gigi. Rasanya ungkapan seperti itu kadang masih terlihat di kartun dan semacamnya
https://en.m.wikipedia.org/wiki/Autonomic_nervous_system
Sebagai catatan, ini pernah naik ke HN pada 30 September tetapi sama sekali tidak mendapat perhatian, dan pengunggahnya juga menghapus komentarnya sendiri
Seperti yang saya tulis waktu itu, ini konsep yang sangat bagus. Akan bagus jika ditambahkan level. Misalnya levelnya bisa berupa mikrokontroler di dalam produk yang menarik, smartphone, load balancer atau server API milik perusahaan SaaS, sehingga konsep bisa diperkenalkan satu per satu. Dengan begitu ini menjadi kelas sistem operasi tingkat universitas
Akan bagus juga jika ada sedikit pemrograman untuk otomatisasi, lalu menggali lebih dalam sampai algoritma cache sistem operasi. LRU bagus. Ini bisa menjadi kelas yang seharusnya bisa saya selesaikan sebelum lulus SMA
https://news.ycombinator.com/item?id=36938032
Idenya keren, tapi terlalu sulit buat saya. Bahkan di mode normal, baru 20 detik setelah mulai saya sudah mengklik seperti orang gila, dan meski proses yang macet diputar ulang, proses merah tetap menumpuk
Beberapa proses mati karena event input/output tidak pernah datang. Mode mudah juga terasa sama saja, atau malah lebih sulit. Saya bahkan belum sampai ke titik ketika memori menjadi masalah, dan dengan kecepatan seperti ini saya juga tidak ingin sampai ke sana
Mungkin saya sudah tua, dan saya paham bahwa menjadi sistem operasi itu memang membuat stres, tapi pekerjaan saya sendiri sudah stres. Saya tidak mau satu pekerjaan lagi
Kalau awalnya dibuat mudah lalu naik pelan-pelan, dengan tempo yang lebih toleran sehingga tetap berada sedikit di luar zona nyaman saya, ini bisa jadi game yang sangat menyenangkan
Game seperti ini punya masa depan yang kuat
Game yang berinovasi melampaui cakupan yang bisa disediakan engine game seperti Unity atau Unreal bergerak ke arah yang secara desain punya peluang sukses lebih tinggi dibanding banyak game yang keluar belakangan ini
Kalau membuat game super-nerd yang berada di luar jangkauan sehingga tidak bisa disentuh pengguna engine, Anda berdiri di liga yang berbeda. Meski gamenya terlihat berantakan, yang penting menyenangkan dan bisa dimainkan
Game indie sudah mati kalau yang dimaksud adalah game indie dalam arti 5 tahun lalu. Sekarang, hal seperti inilah game indie baru. GG. Sebagai catatan, saya developer indie gagal yang sudah merilis 2+ judul komersial
Sayang Zachtronics berhenti. Mereka selalu selangkah di depan
Dan sepertinya game ini juga bisa dibuat dengan Unity
Kalau maksudnya “menjadi hit terobosan tak terduga yang mengubah arah dunia game”, peluangnya sangat kecil di kedua sisi, tapi game di luar pakem mungkin punya peluang lebih tinggi untuk itu
Peluang home run lebih tinggi, tapi peluang out juga lebih tinggi, dan peluang memukul hit lebih rendah
Dalam beberapa tahun terakhir juga ada beberapa game untuk nerd teknologi, tapi tidak ada yang bisa disebut hit. Mungkin orang bisa membuat gamenya sendiri, tetapi audiensnya pada dasarnya kecil, jadi batas atas kesuksesannya juga terbatas. Saya juga tidak merasa ini akan berubah ke depannya
Malah kemungkinan besar sebaliknya. Generasi muda tampaknya makin tidak nerd, dan makin jauh dari topik serta teknologi level rendah
Ketika game menjadi lebih sulit karena utilisasi tinggi, seharusnya ada upgrade yang bisa “dibeli” dengan token yang didapat dari mencapai tonggak atau target performa, untuk mengotomatiskan tugas-tugas kecil yang berulang. Rasanya seperti Universal Paperclips
Setelah itu, game melemparkan beban kerja patologis yang mengganggu otomatisasi sederhana sehingga pengguna harus menyelesaikannya secara manual. Lalu pengguna membeli otomatisasi yang sedikit lebih baik, tetapi kembali terhambat oleh beban kerja yang sedikit lebih patologis. Begitulah loop progresi game-nya lengkap
Sebentar lagi sistem operasi akan menyediakan bahasa skrip supaya pekerjaan bisa diotomatisasi, kan?
Ah, saya paham...
Sangat keren. Mengingatkan saya pada game yang muncul minggu lalu. Apakah terkait Defcon? Sebuah game tempat balok-balok seperti blok Tetris berisi opcode jatuh, dan pengguna harus menyusun sekuens ala Rube Goldberg untuk mencampurkan angka terbesar ke register memori “skor”
https://news.ycombinator.com/item?id=37083309