การแนะนำ

ตั้งแต่ครั้งแรกที่ฉันพบกับการสาธิต Emscripten ฉันมีความคิดที่จะลองใช้โดยนำเกมโปรดในวัยเด็กของฉันกลับมาสู่เว็บอีกครั้ง เมื่อสัปดาห์ที่แล้ว ในที่สุดฉันก็มีเวลาพอที่จะไปถึงที่นั่น โพสต์นี้เริ่มต้นซีรีส์ที่อธิบายความพยายามของฉันในการย้ายเกมที่เขียนด้วยภาษา C เป็น HTML5

ขึ้นรถไฟแห่งความคิดถึง!

สำหรับผู้ที่ไม่ได้อยู่ในโปแลนด์ในช่วงทศวรรษ 1980 ภาพหน้าจอด้านบนมาจากหนึ่งในเกมโปแลนด์เกมแรกที่พัฒนาขึ้นสำหรับ "Atari" เกมนี้ทำให้ฉันรู้จักกับคอมพิวเตอร์และดึงดูดทุกคนในครอบครัว รวมถึงแม่ของฉันด้วย ซึ่งถือเป็นความสำเร็จที่ไม่มีเกมอื่นเก็บถาวรนับตั้งแต่นั้นเป็นต้นมา ดังนั้นเมื่อฉันพบ พอร์ตโอเพ่นซอร์สของ Robbo นี้ ดูเหมือนว่าเป็นตัวเลือกที่เหมาะสมในการนำความสนุกสนานในการเล่นเกมในยุค 80 กลับมาสู่เว็บสมัยใหม่

เป็นเครื่องมือสำหรับงาน

แล้ว "Emscripten" คืออะไรกันแน่? ตามหน้าโครงการ Wiki

Emscripten คือคอมไพเลอร์ LLVM ถึง JavaScript ใช้ LLVM bytecode (ซึ่งสามารถสร้างได้จาก C/C++ โดยใช้ Clang หรือภาษาอื่นๆ ที่สามารถแปลงเป็น LLVM bytecode) และคอมไพล์เป็น JavaScript ซึ่งสามารถทำงานบนเว็บได้ (หรือที่อื่นที่ JavaScript สามารถเรียกใช้ได้)

เพื่อให้คำอธิบายเพิ่มเติม LLVM เป็นรูปแบบเครื่องเสมือนแบบไบต์โค้ด/นามธรรม คล้ายกับ Java Virtual Machine หรือ Common Language Runtime แนวคิดเบื้องหลังคือโค้ดโปรแกรมนั้นถูกคอมไพล์เป็นไบต์โค้ด LLVM ที่ไม่เชื่อเรื่องแพลตฟอร์ม โค้ดระดับกลางนี้สามารถคอมไพล์อีกครั้งไปยังโค้ดเนทีฟของแพลตฟอร์มเป้าหมาย หรือรันโดยตรงบนเครื่องเป้าหมายเพื่อคอมไพล์ได้ทันที ช่วยให้เพิ่มประสิทธิภาพสูงสุดที่มีอยู่ในแพลตฟอร์มเป้าหมายได้ เนื่องจากสถาปัตยกรรมแบบโมดูลาร์ จึงสามารถขยายได้อย่างง่ายดายด้วยทั้งภาษาใหม่ที่สามารถคอมไพล์เป็น LLVM bytecode ได้ เช่นเดียวกับแพลตฟอร์มเป้าหมายใหม่ที่สามารถรันหรือคอมไพล์ bytecode ได้

แล้ว Emscripten ที่นี่อยู่ที่ไหน? มันเป็นเพียงส่วนขยายของ LLVM ที่อนุญาตให้รวบรวมโค้ดไบต์ LLVM ใด ๆ ไปยังแพลตฟอร์มเป้าหมาย เบราว์เซอร์ HTML5

หลังจากการแนะนำทางเทคนิคที่น่าเบื่อนี้ ฉันจะแสดงการสาธิตดีๆ บางส่วนเกี่ยวกับสิ่งที่สามารถจัดเก็บถาวรได้ โปรดทราบว่าเนื่องจากบางรายการใช้ WebGL คุณจะต้องมีเบราว์เซอร์ที่อัปเดตและไดรเวอร์การแสดงผลล่าสุดติดตั้งเพื่อเรียกใช้:

หากคุณต้องการดูเพิ่มเติม โปรดไปที่ส่วน Emscrpiten Demos เพื่อดูว่ามีเกมและโปรแกรมอรรถประโยชน์จำนวนเท่าใดที่ได้รับการป้องกันไม่ให้ทำงานในเบราว์เซอร์ของคุณ

คอยติดตามโพสต์ถัดไปที่ฉันจะอธิบายวิธีการตั้งค่า Emscripten และปัญหาที่ฉันพบในกระบวนการนี้

เผยแพร่ครั้งแรกที่ blog.cfiet.net.