10 điểm bởi GN⁺ 2025-06-08 | 1 bình luận | Chia sẻ qua WhatsApp
  • Đây là thư viện JavaScript nhẹ được thiết kế để cả những người có ít kinh nghiệm lập trình cũng có thể dễ dàng tạo video game
  • Phù hợp để phát triển game tường thuật, tức các trò chơi tập trung vào kể chuyện
  • Mang lại trải nghiệm làm game mà không cần lập trình phức tạp nhờ cấu trúc mã trực quan và API ngắn gọn
  • Mọi thứ (sprite, hội thoại, âm thanh, tương tác) đều được tạo bằng mã, nên toàn bộ game có thể được lưu trong một tệp duy nhất

Tính năng và ưu điểm chính

  • Ngay cả nhà phát triển mới bắt đầu hoặc người không chuyên cũng có thể tạo game tường thuật chỉ với mã JavaScript đơn giản
  • Không giống các framework lớn, nó có dung lượng rất nhỏ và dễ sử dụng
  • Mạnh về cốt truyện và tương tác, như game dựa trên lựa chọn, nội dung tương tác và trải nghiệm phát triển trực quan

Đối tượng sử dụng

  • Phù hợp cho mọi startup, chuyên gia IT, lập trình viên, nhà sáng tạo muốn bắt đầu làm game hoặc nhanh chóng tạo prototype
  • Đây là công cụ phù hợp hơn cho thử nghiệm ý tưởng, nội dung tương tác, phát triển cốt truyện thay vì đồ họa phức tạp hay game quy mô lớn

Bắt đầu phát triển game với createGame()

createGame({  
  player: {  
    sprite: 7,  
    position: [2, 5]  
  },  
  map: `  
    ########  
    #......#  
    #..X...#  
    #......#  
    ########  
  `,  
  templates: {  
    X: {  
      sprite: 4,  
      dialog: 'Hello, adventurer!'  
    }  
  }  
})  

1 bình luận

 
GN⁺ 2025-06-08
Ý kiến trên Hacker News
  • Tò mò vì sao tiêu đề lại là ‘...for narrative games’
    Nhận ra trên trang chính thức của thư viện không hề nhắc đến game ‘narrative’
    Có chút mơ hồ về ý nghĩa của ‘narrative game’
    Các game mẫu không khớp với định nghĩa ‘narrative game’ mà tôi hình dung
    Kết quả tìm kiếm Google về ‘narrative game’ cũng không cho thấy nhiều liên hệ với các game mẫu
    Nếu thực sự có một định nghĩa phổ biến cho ‘narrative game’, thì tôi thắc mắc thư viện này hỗ trợ điểm gì đặc biệt cho việc làm ‘narrative game’ so với các engine khác

    • Tối qua tôi chợt nghĩ ra ý tưởng cho một game phiêu lưu dạng văn bản
      Khái niệm là người chơi đã trưởng thành, phải đóng thuế, đi làm, dọn dẹp nhà cửa và hoàn thành các nhiệm vụ đời thường như vậy
      Làm ít những việc đó thì cuộc sống sẽ khó khăn hơn, còn làm nhiều thì sẽ dễ thở hơn
      Mục tiêu cuối cùng là qua đời mà không còn nợ nần

    • Tôi nghĩ ý tưởng của công cụ này là cho phép tạo các game phiêu lưu đơn giản một cách khai báo bằng văn bản và hội thoại
      Nó khác với những game engine tổng quát như Pico-8, vốn thường tập trung vào cơ chế gameplay
      Nó giúp dễ dàng tạo bản đồ, di chuyển giữa các bản đồ, NPC, hội thoại và các trigger văn bản
      Các engine hướng đến người không biết lập trình như RPGMaker cũng tương tự; ở đó đa số người dùng chủ yếu làm game xoay quanh bản đồ và trigger, lấy văn bản và hội thoại làm trung tâm mà không có cơ chế quá phức tạp
      Tôi nghĩ công cụ này cũng đang nhấn mạnh việc giúp làm những game ‘narrative’ kiểu đó dễ hơn

    • Trong tài liệu giới thiệu chính thức:
      ‘Odyc.js là một thư viện JavaScript nhỏ gọn, nhẹ, được thiết kế để tạo game narrative bằng cách kết hợp pixel, âm thanh, văn bản và một chút logic’

    • Tôi mặc định xem nó là một engine cho text adventure

    • Chỉ trên phiên bản tiếng Pháp của trang mới có thêm hai ví dụ về ‘narrative’
      Tôi dùng thuật ngữ đó vì cấu trúc theo lượt cùng trọng tâm vào tin nhắn, prompt, hội thoại khiến nó hợp với game ‘narrative’ hoặc game dựa trên văn bản
      Nhưng nếu có nhãn nào hay hơn, tôi rất sẵn lòng đổi

  • Game The Magic Mushroom rất tuyệt
    Liên kết

    • Đến giờ đây là cái tôi thích nhất
      Liên kết

    • Game John Wick cho cảm giác như bản tóm tắt của mấy phim gần đây
      Liên kết

  • Tôi rất thích cách nó được cấu trúc
    Tôi từng làm khá nhiều game engine JavaScript và thử nghiệm đủ thứ; cái này nằm đúng ở điểm cân bằng rất hay giữa ‘cần làm nhanh một thứ cho trẻ con trong vòng 2 tiếng’ và ‘muốn hiểu cấu trúc đủ sâu’
    Tôi hy vọng có thể làm nhanh vài game để cho bọn trẻ bớt quấy trong môi trường băng thông thấp

  • Trông như một công cụ rất dễ thương
    Cụ thể, tôi nghĩ nó rất phù hợp để dạy trẻ em, kiểu như pygame của thời nay
    Scratch và những thứ tương tự được thiết kế cho trẻ 5 tuổi nên phần lập trình quá đơn giản
    Công cụ này lại vừa khít với học sinh khoảng 10 tuổi
    Các em có thể học thao tác chuỗi đơn giản, vài mẹo cú pháp, và làm được tới mức side-scroller cơ bản cùng NPC
    Sau đó khi sẵn sàng, còn có thể làm quen với control flow
    Nếu học cái này rồi mở lớp cho trẻ em hoặc đầu tư một sân chơi, thì hoàn toàn có thể bán được
    Ở một góc nhìn khác, công cụ này cũng đáng để thử cho việc tạo asset game procedural cơ bản

  • Chia sẻ ví dụ mã game.prompt(“Dude, you ran out of eggs!|Would you like to buy|an 80 pack of eggs?”, “Yes”, “No”);

    • Ví dụ dùng mã await game.openDialog(“Dude, you ran out of eggs!|Would you like to buy|an 80 pack of eggs?”) game.prompt( “Yes”, “No”)

    • Ban đầu chỉ có một quả trứng, sao lại thành bốn mươi quả rồi?

  • Đánh giá đây là một dự án thực sự truyền cảm hứng
    Đã xác nhận là mã nguồn mở, nhưng thiếu giấy phép nên khó biết nhà phát triển cho phép fork, chỉnh sửa và phân phối đến mức nào
    Tôi cũng muốn công khai một bản fork đã dịch sang tiếng mẹ đẻ của mình và sẵn sàng giữ credit, nên muốn hỏi liệu có ổn không
    Ở nước tôi, dưới 5% dân số dùng tiếng Anh

    • Cảm ơn, tôi sẽ thêm giấy phép theo kiểu MIT
      Tò mò không biết tiếng mẹ đẻ của bạn là gì
      Các ngôn ngữ viết từ trái sang phải thì khá dễ áp dụng bản dịch
      Bạn luôn được chào đón nếu muốn fork, gửi PR, hoặc liên hệ để cùng cải thiện khả năng tiếp cận
  • Cái này thật tuyệt vời
    Nó đúng là thứ tôi cần cách đây đúng 12 tiếng
    Trùng hợp là tối qua tôi ngủ quên giữa lúc lần đầu tiên trong đời làm asset cho một game hẹn hò narrative 3 màn chỉ dành cho một người
    Tôi chưa từng làm game trước đây
    Sáng ra mở HN thì thấy một thư viện JS cho game narrative đang đứng top 1
    FTR game của tôi là một game simp, tôi đang dùng nó để chính thức ngỏ lời với người tôi đã gặp bấy lâu nay

    • Nghe là đã thấy ý tưởng rất hay
      Tôi cũng có trải nghiệm tương tự: gần đây tôi từng tái tạo toàn bộ giao diện chat MSN năm 2005 bằng HTML để gợi lại ký ức cho ai đó
      Một trải nghiệm thật sự rất ấm áp

    • Ý tưởng rất hay
      Ước gì tôi có thể giúp thêm được
      Tôi thực sự nghĩ đây là đúng kiểu trường hợp mà công cụ này sinh ra để phục vụ
      Chúc mọi thứ thuận lợi

    • Việc thích ai đó, muốn dành thời gian với họ, hay thể hiện sự quan tâm không phải là điều nên bị gọi là ‘simp’
      Tôi thấy đây là một lời ngỏ rất ấm áp và chu đáo

  • Có cảm giác hơi giống puzzlescript

    • PuzzleScript thật sự rất ngầu, và trong cùng nhóm engine nhỏ gọn đó thì tôi cũng khuyên dùng crisp-game-lib
  • Ấn tượng rằng đây là một công cụ rất tuyệt

  • Không liên quan trực tiếp đến thư viện này, nhưng tôi tò mò cách canvas video recorder được áp dụng trong playground hoạt động ra sao
    Tôi muốn tự thử triển khai