2 poin oleh GN⁺ 2024-01-08 | 1 komentar | Bagikan ke WhatsApp

Apakah AoE ditulis dalam assembly? - Benarkah ini?!

  • Penulisan kode assembly untuk AoE dan AoK: Sekitar 13.000 baris kode assembly x86 32-bit ditulis. Sebagian besar, sekitar 11.500 baris, merupakan 'inti rendering' yang menggambar sprite SLP dengan berbagai cara.
  • Kompilasi kode assembly: Menggunakan Microsoft Macro Assembler 6.1 untuk "mengompilasi" file .asm menjadi file .obj.
  • Assembly inline di dalam kode C++: Kompiler mendukung 'assembly inline', sehingga blok kode assembly dapat ditambahkan di dalam fungsi dengan kata kunci __asm { }.
  • Peningkatan performa inti rendering: Inti rendering yang menggunakan assembly memberikan kecepatan menggambar sprite sekitar 10 kali lebih cepat dibanding implementasi referensi C++.
  • Desain teknis kode assembly: Dirancang dengan mempertimbangkan arsitektur cache dan pipa UV, memanfaatkan karakteristik prosesor Pentium.
  • Kode assembly di AoK:HD Edition: Kode assembly juga digunakan di AoK:HD Edition (game 32-bit).
  • Penulisan ulang ke C++ di Definitive Editions: Di Definitive Editions yang merupakan program 64-bit, fungsi assembly ditulis ulang ke C++.

Komunitas dan sumber daya AoE

  • Live stream: Daftar live stream terkait AoE dalam berbagai bahasa di Twitch dan Facebook.
  • Bermain online: Berbagai versi game, termasuk AoE2 Definitive Edition, dapat dimainkan melalui Steam dan Microsoft Store.
  • Patch saat ini: Menyediakan informasi patch yang diperbarui pada 26 Juli 2023.
  • Turnamen dan acara: Menyediakan informasi turnamen melalui AoEZone, AoE2 Liquipedia, dan kalender acara.
  • Situs komunitas: Tautan ke berbagai situs komunitas seperti halaman resmi Age of Empires, forum, Discord, dan AoK Heaven.
  • Statistik unit dan bangunan: Tautan ke wiki dan materi yang menyediakan informasi unit dan counter, perbaikan bug, tips bermain, serta info patch.
  • Kanal YouTube: Daftar kanal resmi dan YouTuber AoE2 terkenal.

Opini GN⁺

  • Pentingnya kode assembly: Pada versi awal seri AoE, kode assembly sangat memengaruhi performa game. Khususnya dalam pemrosesan grafis, ini memungkinkan optimasi yang sulit dicapai dengan bahasa tingkat tinggi modern.
  • Dampak perkembangan teknologi: Seiring waktu, perkembangan kompiler 64-bit dan diperkenalkannya pemrosesan multicore mengurangi kebutuhan akan kode assembly. Ini menunjukkan bagaimana perkembangan bahasa pemrograman dan perangkat keras memengaruhi pengembangan perangkat lunak.
  • Peran komunitas: Komunitas AoE memainkan peran penting dalam popularitas dan perkembangan game yang berkelanjutan. Melalui berbagai sumber daya dan diskusi, komunitas menyediakan platform bagi penggemar untuk berbagi antusiasme dan pengetahuan tentang game.

1 komentar

 
GN⁺ 2024-01-08
Komentar Hacker News
  • Seorang pengguna Hacker News membagikan pengalamannya mem-porting game Konami dari PSX ke PC pada 1999-2000. Kode yang ditulis dalam C memiliki banyak #ifdef yang berisi inline assembly, dan kode C asli tetap dipertahankan. Ia mengatakan bahwa kode C asli ini sangat membantu dalam pekerjaan porting. Ia juga menyebut pengalaman menggunakan instruksi SIMD dan melakukan optimasi assembly dalam pekerjaan pengembangan perangkat lunak untuk prosesor Intel Katmai. Dalam proses itu, VTune dari Intel sangat membantu. Namun, ia juga mengenang bahwa dalam beberapa kasus, kode yang ditulis dalam assembly justru lebih lambat daripada kode yang dihasilkan compiler.

  • Pengguna lain menyebut NAC5, turnamen besar yang sedang berlangsung di Berlin untuk game 'Age of Empires 2' (AoE2), lalu membagikan tautan terkait.

  • Mengutip sebuah wawancara dengan pengembang, ada pendapat bahwa jika sejak sebelum rilis sudah diketahui game memerlukan patch, maka game tersebut seharusnya tidak dirilis.

  • Disebutkan bahwa salah satu teknik peningkatan kecepatan di 'Age of Empires' dibahas saat makan siang bersama Michael Abrash, programmer id Software sekaligus ahli optimasi, sambil menyayangkan hilangnya interaksi bebas semacam itu akibat internet.

  • Dibagikan fakta mengejutkan bahwa untuk core grafis yang menggunakan assembly, kecepatan menggambar sprite meningkat sekitar 10 kali lipat dibandingkan C++.

  • Ada pendapat bahwa Michael Abrash tampaknya selalu muncul di mana pun inovasi grafis terjadi.

  • Seorang pengguna mengatakan ini mungkin bisa menjadi kesempatan untuk memahami mengapa performa 'Age of Empires 2: Definitive Edition' buruk di Wine.

  • Disebutkan bahwa 'Age of Empires 2: Definitive Edition' masih menyertakan handwritten assembly yang mengekstrak kode game saat runtime, meski itu bukan kode game itu sendiri. Karena itu, seluruh kode tetap berada dalam status dapat dibaca, ditulis, dan dieksekusi (RWX), sehingga disebut sangat rentan dari sisi keamanan.

  • Seorang pengguna yang sedang membaca sejarah Borland mengatakan bahwa compiler Turbo Pascal sebagian besar ditulis dalam assembly dan juga digunakan di Delphi 1.0. Karena tidak ada seorang pun di Borland yang bisa membuat perubahan besar pada kode tersebut, akhirnya kode itu ditulis ulang untuk Delphi 2.0. Ia mengatakan bahwa para programmer yang menulis perangkat lunak untuk CPU kompleks dalam bahasa assembly tampaknya memiliki karakteristik yang unik.