2 คะแนน โดย GN⁺ 2024-09-09 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • coreCore คืออะไร

    • coreCore คือวิธีเชิงทดลองในการสร้างวิดีโอเกมในรูปแบบเครื่องมือและเอนจินสำหรับสร้างเกม Action-RPG รวมถึงตัวแก้ไขคุณสมบัติ
    • ใช้ระบบคอมโพเนนต์แบบเรียบง่าย โดยคอมโพเนนต์อยู่ในรูปเวกเตอร์ clojure แบบ [keyword value]
    • เอนทิตีหลากหลายชนิดประกอบขึ้นจากแมปของ clojure
    • ผลข้างเคียงภายในเกมถูกจัดการด้วยคอมโพเนนต์อย่าง [:tx/foo param] ซึ่งมีโครงสร้างคล้าย datomic
    • สถานะทั้งหมดของเกมถูกเก็บไว้ใน atom เดียวชื่อ app/state และเอนทิตีก็อยู่ในรูป atom ภายใน atom หลักเช่นกัน
    • เนื้อหาทั้งหมดของแอปพลิเคชันถูกเก็บไว้ใน resources/properties.edn ผ่านการตรวจสอบด้วย malli-schemas และสามารถแก้ไขผ่าน GUI ได้
  • ภาพหน้าจอ

  • วิธีเริ่มพัฒนา

    • ป้อนคำสั่งต่อไปนี้:
      • lein dev
    • แอปพลิเคชันจะเริ่มทำงานและดำเนินการต่อไปนี้ด้วย:
      • เริ่มต้นเซิร์ฟเวอร์ NREPL
      • เมื่อปิดแอปพลิเคชัน (กด ESC จากเมนูหลัก) clojure.tools.namespace จะรีเฟรชไฟล์ที่เปลี่ยนแปลงและเริ่มแอปใหม่
      • หากเกิดข้อผิดพลาด ไม่จำเป็นต้องรีสตาร์ต JVM เพียงแก้ข้อผิดพลาดแล้วเรียก dev-loop/restart!
      • สามารถผูกคำสั่งต่อไปนี้กับปุ่ม F5 ใน VIM เพื่อใช้งานได้: nmap <F5> :Eval (do (in-ns 'dev-loop)(restart!))
  • ใบอนุญาตโค้ด

    • ให้ใช้งานภายใต้ใบอนุญาต MIT
  • ใบอนุญาตของแอสเซ็ต

    • แอสเซ็ตที่ใช้เป็นแบบกรรมสิทธิ์และไม่ใช่โอเพนซอร์ส

สรุปโดย GN⁺

  • coreCore เป็นเครื่องมือที่ช่วยให้สร้างเกม Action-RPG ได้ง่าย โดยใช้ระบบคอมโพเนนต์แบบเรียบง่ายเพื่อจัดการสถานะของเกม
  • การเก็บสถานะทั้งหมดของเกมไว้ใน atom เดียว และการแก้ไขคุณสมบัติผ่าน GUI ทำให้มีประโยชน์ต่อผู้พัฒนา
  • แม้จะให้ใช้งานภายใต้ใบอนุญาต MIT แต่แอสเซ็ตที่ใช้เป็นแบบกรรมสิทธิ์
  • เครื่องมือที่มีความสามารถคล้ายกันได้แก่ RPG Maker และ Unity

1 ความคิดเห็น

 
GN⁺ 2024-09-09
ความคิดเห็นใน Hacker News
  • น่าสนใจที่ได้เห็นแนวทางการพัฒนาเกมที่หลากหลาย

    • Bevy (เอนจิน Rust ECS): ตอนแรกดูดี แต่มีปัญหาในการทำให้ใช้งานจริงและอาจซับซ้อนได้
    • Unity: ระบบ game object และ modular component ใช้งานได้จริง
    • Godot: ไม่ประทับใจกับลำดับชั้นแบบ OOP และภาษาที่มีมาในตัว
    • Pygame: เหมาะกับโปรเจ็กต์เล็ก ๆ เป็นแบบ procedural แต่ก็สร้างชั้น OOP หรือ functional ได้
    • Clojure: การทำแบบ functional น่าสนใจ
  • โปรเจ็กต์ GitHub นี้ดูน่าขำสำหรับนักพัฒนาเกม

    • แนวทางเชิงวิชาการให้ความรู้สึกเวอร์เกินไป
    • ภาพหน้าจอดูไม่สวยงาม
  • อ้างว่าสามารถทำให้การพัฒนาเกมง่ายขึ้น แต่กลับใช้คำศัพท์จำนวนมาก

    • เช่น Clojure vectors, Datomics, atoms, transactions, Malli schemas
  • โปรเจ็กต์นี้ดูเหมือนจะล้มเหลว

    • โครงสร้างถูกออกแบบเกินความจำเป็นและขาดโครงสร้างที่ชัดเจน
    • ไม่มีเรื่องราวของเกม จึงเหมือนเขียนโค้ดโดยไม่มีทิศทางชัดเจน
  • รีโพซิทอรีที่แทบไม่มีเอกสารนี้กลับสร้างบทสนทนาได้มาก

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

    • มักเผลอคิดว่าถ้าเขียนโค้ดเอนจินก่อน กระบวนการทำเกมที่เหลือจะง่ายขึ้น
    • การสร้างเอนจินอาจสนุกกว่าการทำเกมจริง
    • การปรับแต่งเอนจินให้เหมาะสมให้รางวัลที่รวดเร็วกว่าด้วย
    • เคยพยายามใช้เอนจิน Phaser js เพื่อให้แสดงสิ่งที่โต้ตอบได้บนหน้าจออย่างรวดเร็ว
  • ชอบ Clojure มาก แต่ก็สงสัยว่าภาษาเชิง functional ที่มีโครงสร้างข้อมูลแบบ immutable เหมาะกับการพัฒนาเกมหรือไม่

  • สถานะของเกมถูกเก็บไว้ใน atom เดียว และ entity ต่าง ๆ ภายในนั้นก็ถูกเก็บเป็น atom อีกที

    • สงสัยว่าการใช้ "atom" ใน Clojure แบบนี้เป็นเรื่องปกติหรือไม่
  • คิดว่าน่าจะน่าสนใจถ้าได้วิเคราะห์ข้อมูล "เวลา/ความซับซ้อนที่ใช้ไปกับ game engine" เทียบกับ "ความซับซ้อน/ความน่าสนใจของเกมที่ผลิตออกมา"

    • คาดว่าความหลากหลายของเกมที่สร้างจากระบบ template/engine แบบเรียบง่ายจะลดลง
  • มี Core ซึ่งเป็นแพลตฟอร์มสำหรับสร้างเกมเชิงพาณิชย์ที่ขับเคลื่อนด้วย Unreal Engine 4 อยู่แล้ว