2 điểm bởi GN⁺ 2024-09-09 | 1 bình luận | Chia sẻ qua WhatsApp
  • coreCore là gì

    • coreCore là một phương pháp mang tính thử nghiệm để tạo video game dưới dạng công cụ và engine làm game Action-RPG, cùng với trình biên tập thuộc tính
    • Sử dụng một hệ thống component đơn giản, trong đó component là vector clojure có dạng [keyword value]
    • Nhiều entity khác nhau được cấu thành từ các map clojure
    • Các side effect trong game được xử lý bằng component như [:tx/foo param], có cấu trúc tương tự datomic
    • Toàn bộ trạng thái game được lưu trong một atom duy nhất tên là app/state, và các entity cũng tồn tại dưới dạng atom bên trong atom chính
    • Toàn bộ nội dung của ứng dụng được lưu trong resources/properties.edn, được kiểm tra bằng malli-schemas và có thể chỉnh sửa qua GUI
  • Ảnh chụp màn hình

  • Cách bắt đầu phát triển

    • Nhập lệnh sau:
      • lein dev
    • Ứng dụng sẽ khởi chạy và đồng thời thực hiện các tác vụ sau:
      • Khởi động máy chủ NREPL
      • Khi thoát ứng dụng (ESC ở menu chính), clojure.tools.namespace sẽ làm mới các tệp đã thay đổi và khởi động lại ứng dụng
      • Nếu xảy ra lỗi, không cần khởi động lại JVM; chỉ cần sửa lỗi và gọi dev-loop/restart!
      • Có thể dùng bằng cách gán lệnh sau vào phím F5 trong VIM: nmap <F5> :Eval (do (in-ns 'dev-loop)(restart!))
  • Giấy phép mã nguồn

    • Được cung cấp theo giấy phép MIT
  • Giấy phép tài sản

Tóm tắt của GN⁺

  • coreCore là công cụ giúp tạo game Action-RPG dễ dàng hơn bằng cách dùng hệ thống component đơn giản để quản lý trạng thái game
  • Toàn bộ trạng thái game được lưu trong một atom duy nhất và có thể chỉnh sửa thuộc tính qua GUI, rất hữu ích cho nhà phát triển
  • Được phát hành theo giấy phép MIT, nhưng các tài sản đi kèm là độc quyền
  • Những công cụ có chức năng tương tự gồm có RPG Maker, Unity, v.v.

1 bình luận

 
GN⁺ 2024-09-09
Bình luận trên Hacker News
  • Thật thú vị khi thấy nhiều cách tiếp cận khác nhau trong phát triển game

    • Bevy (engine Rust ECS): ban đầu có vẻ tốt nhưng có nhiều vấn đề trong triển khai và có thể trở nên phức tạp
    • Unity: hệ thống game object và các component mô-đun khá thực dụng
    • Godot: cấu trúc phân cấp OOP và ngôn ngữ tích hợp sẵn tạo cảm giác không thỏa mãn
    • Pygame: phù hợp với dự án nhỏ, mang tính thủ tục nhưng vẫn có thể xây dựng các lớp OOP hoặc hàm
    • Clojure: cách triển khai theo hướng hàm khá thú vị
  • Dự án GitHub này trông khá lố bịch với các nhà phát triển game

    • Cách tiếp cận hàn lâm tạo cảm giác bị làm quá
    • Ảnh chụp màn hình nhìn khá xấu
  • Dù tuyên bố có thể làm phát triển game trở nên đơn giản hơn, nó lại dùng quá nhiều thuật ngữ

    • vector của Clojure, Datomics, atom, transaction, schema Malli, v.v.
  • Có vẻ dự án này đã thất bại

    • Cấu trúc bị thiết kế quá mức và thiếu một kiến trúc rõ ràng
    • Không có câu chuyện game nên việc viết mã diễn ra mà không có định hướng rõ rệt
  • Kho lưu trữ này hầu như không có tài liệu nhưng lại tạo ra rất nhiều thảo luận

    • Mã nguồn trông giống một dự án hơn là một game engine
    • Trình chỉnh sửa thuộc tính khá thú vị
    • Có vẻ nó được upvote nhờ tiêu đề
  • Đã thấy nhiều trường hợp câu chuyện "muốn làm game" biến thành đi làm game engine

    • Người ta dễ rơi vào suy nghĩ rằng viết mã engine trước sẽ khiến phần còn lại của quá trình làm game dễ hơn
    • Làm engine có thể còn vui hơn làm game
    • Tối ưu engine mang lại cảm giác được thưởng nhanh hơn
    • Đã thử dùng engine Phaser js để nhanh chóng đưa thứ gì đó tương tác lên màn hình
  • Rất yêu Clojure, nhưng vẫn nghi ngờ liệu một ngôn ngữ hàm với cấu trúc dữ liệu bất biến có phù hợp để phát triển game hay không

  • Trạng thái game được lưu trong một atom, còn các entity lại được lưu bên trong nó dưới dạng các atom khác

    • Tự hỏi liệu việc dùng "atom" theo cách này có phổ biến trong Clojure không
  • Sẽ rất thú vị nếu phân tích dữ liệu về "thời gian/độ phức tạp dành cho game engine" so với "độ phức tạp/mức độ thú vị của game được tạo ra"

    • Dự đoán rằng sự đa dạng của game làm bằng các hệ thống template/engine đơn giản sẽ giảm đi
  • Đã có Core, một nền tảng làm game thương mại chạy trên Unreal Engine 4