Original Age of Empires 2 dev habla sobre el uso de código ensamblador
El amplio uso de ensamblador x86 escrito a mano por parte de Age of Empires II en su núcleo de renderizado —que, según se informa, produjo una mejora de alrededor de 10 veces respecto a C++ en 1999— sirve como punto de partida para revisitar cómo los motores de juego dependían antes de la optimización de bajo nivel para rendir. Los comentaristas contrastan esa época con los compiladores modernos, los intrínsecos SIMD, las bibliotecas especializadas y la decodificación de vídeo por hardware, señalando dónde el ensamblador sigue ganando y dónde ha quedado en gran medida obsoleto. Junto a historias técnicas de guerra (desde blits de DirectDraw hasta ajuste con VTune) aparece una vena de nostalgia por la cultura del desarrollo de juegos de los años 90, desde intercambios en Usenet e IRC hasta conversaciones presenciales a la hora de comer que dieron forma a títulos importantes.
Papel del ensamblador en AoE2 y el desarrollo de juegos en los años 90
- Según se informa, AoE2 ganó unas ~10 veces más velocidad al dibujar sprites al reescribir el núcleo de dibujo en ensamblador.
- A finales de los 90 era común escribir las rutas críticas en ensamblador y mantener la versión en C/C++ bajo
#ifdefpara portabilidad. - En aquella época, algunos compiladores —especialmente para SIMD— generaban código muy ineficiente, lo que hacía que el ensamblador ajustado a mano fuera claramente superior.
- Hoy en día, los comentaristas dicen que los compiladores son mucho mejores; el ensamblador solo gana en casos concretos (vectorización manual, uso cuidadoso de registros, aprovechamiento de garantías específicas del dominio).
SIMD, intrínsecos y ajuste de rendimiento
- La decodificación de vídeo y cargas de trabajo similares siguen usando grandes cantidades de ensamblador o intrínsecos SIMD, con aceleraciones de orden de magnitud informadas.
- Los lenguajes y runtimes modernos exponen APIs explícitas de SIMD porque la auto-vectorización es limitada.
- Herramientas mencionadas: superoptimizadores (por ejemplo, un proyecto basado en LLVM), VTune, IACA, uiCA, llvm-mca. Estas ayudan a analizar canalizaciones, bloqueos y planificación.
- Varias anécdotas describen una optimización manual minuciosa que termina siendo más lenta que la salida del compilador, pero también raras victorias de 2 a 10 veces que justifican el esfuerzo.
Canales gráficos: DirectDraw, texturas y formatos
- AoE2 probablemente usaba DirectX/DirectDraw para presentar píxeles, con código personalizado para visibilidad, transformaciones de sprites, espejado, tramado, etc.
- DirectDraw ofrecía blits acelerados por hardware en casos simples, pero con soporte de controladores irregular y sobrecarga para sprites pequeños.
- La discusión aborda disposiciones de texturas amigables con la caché (block/textured “swizzling”), mipmapping y recursos clásicos de la demoscene sobre roto-zoomers.
- Un comentarista señala que el renderizado ingenuo de sprites SLP es muy lento, así que las optimizaciones de AoE2 tienen sentido.
Bases de código, toolchains y seguridad
- Nota histórica: se decía que un gran compilador Pascal/Delphi estaba escrito en su mayor parte en ensamblador, y luego se reescribió porque se volvió inmantenible.
- AoE2: Definitive Edition, según se informa, se distribuye con un empaquetador de ejecutables que descifra el código en tiempo de ejecución, dejando páginas RWX, lo que se critica por inseguro.
Filosofía de parches y actualizaciones modernas de juegos
- La cultura de desarrollo antigua consideraba que necesitar un parche era un fracaso; los parches eran raros y se distribuían por revistas.
- Esto se contrasta con los parches modernos de gran equilibrio (decenas de GB), aunque algunos sostienen que los juegos en línea y el equilibrio evolutivo justifican actualizaciones continuas.
Comunidad, comunicación y nostalgia
- Debate sobre si los almuerzos presenciales producían una mejor polinización cruzada técnica que Discord/Slack/IRC hoy en día.
- Algunos ven la comunicación online moderna como muchísimo más rica; otros lamentan la fragmentación, la falta de indexación pública y la dinámica superficial del chat.
- El hilo también señala la activa escena competitiva de AoE2, los torneos LAN y la fuerte nostalgia tanto por el juego como por la cultura de desarrollo de los 90.