Câu trả lời:
Lua được sử dụng rộng rãi trong ngành công nghiệp game . Từ các trò chơi độc lập ( Aquaria ) đến các tựa game AAA (Civilization).
Lý do cốt lõi? Tôi muốn nói bởi vì nó dễ học và dễ kết hợp vào các trò chơi của bạn. Nhưng điều tương tự cũng có thể được nói với Python, tôi chắc chắn. Viết kịch bản, nói chung, không khó. Tôi nghĩ lý do thực sự bạn nên đi với Lua là vì nó đã được chứng minh sẽ mang lại nhiều nguồn lực hơn cho bạn học hỏi .. Nếu bạn cảm thấy muốn thử nghiệm một thứ gì đó ngoài định mức thì tôi sẽ bắt đầu nhầm lẫn với ngôn ngữ khác.
Squirrel có một lịch sử thú vị. Nó được xây dựng sau khi một kiến trúc sư trò chơi gặp vấn đề với bộ sưu tập rác không thể đoán trước của Lua, và mọi thứ điên rồ đều vô giá trị ngay cả khi nó không tồn tại .
Squirrel là ngôn ngữ thoát y được sử dụng trong Left 4 Dead 2 . API rất giống lua (tác giả của Squirrel thích thiết kế của Lua ).
Vì vậy, Squirrel là một ngôn ngữ tuyệt vời vì nó là Lua thế hệ thứ hai. Nó lấy những ý tưởng tốt và loại bỏ những sự lập dị gây phiền nhiễu.
Tương tự từ Lua:
Mới đối với sóc:
Nhược điểm chính của sóc là nó không phải là Lua. Lua được sử dụng rộng rãi hơn nhiều. Nhưng nếu đó không phải là vấn đề thì Squirrel là một chiến thắng dễ dàng. Tuy nhiên, thường thì tính phổ biến của ngôn ngữ là tính năng hữu ích, vì vậy quyết định không quá rõ ràng.
Javascript Javascript từ google.
CHUYÊN NGHIỆP
Khá dễ sử dụng
Không ngừng trở nên tốt hơn
Mạnh mẽ và linh hoạt
Những người khác Như nhiều người đã đề cập, javascript là một công cụ lập trình phổ biến. Thêm nó vào các trò chơi của tôi đã mở ra nhiều người cảm thấy có khả năng hơn các ngôn ngữ khác. Nó cũng hỗ trợ một lượng lớn việc truyền và chuyển đổi để tiết kiệm công việc cho lập trình viên, cũng làm cho nó thực sự dễ sử dụng, hoạt động tốt với STL.
CON có thể:
Tài liệu có thể gây nhầm lẫn Nó thực sự không phải là tốt nhất.
Ví dụ Thường là một trang web kỳ lạ. Thiếu sự đơn giản vững chắc, nó đi qua như mức độ cao hơn nó.
Mẫu Đôi khi những thứ này bị ghét hoặc tránh.
Kích thước mã cơ sở SDK Kích thước mã được tạo có thể được xem xét phình to.
Điều đó phụ thuộc vào trò chơi và nền tảng mục tiêu của nó.
Một trò chơi chạy 100 nhân vật không phải người chơi (trò chơi RTS) có các nhu cầu khác với trò chơi chỉ chạy 2 (Street Fighter). Một trò chơi chạy trên PC có nhu cầu khác với trò chơi chạy trên bảng điều khiển.
Lua là phổ biến
GameMonkey được sử dụng bởi một số đội. Nó nhanh hơn Lua và tốt hơn trong việc xâu chuỗi.
Python đã được sử dụng trong một số trò chơi.
JavaScript là một tùy chọn có thể vì bạn có thể tải xuống các công cụ JavaScript. Có nhiều lập trình viên JavaScript hơn bất kỳ loại lập trình viên nào khác.
Ngoài ra còn có các ngôn ngữ chuyên ngành.
SCUMM đã được sử dụng trong một số trò chơi phiêu lưu và nó đặc biệt phù hợp với những trò chơi đó.
Để hoàn thiện hơn, một tùy chọn khác là tập lệnh đơn , cho phép bạn sử dụng triển khai Novell của khung .NET để tạo tập lệnh. Đó là những gì Unity sử dụng. Đây là một trang khác về việc nhúng mono trong ứng dụng của bạn.
Khung Mono nhanh hơn hầu hết (có lẽ là tất cả?) Các ngôn ngữ kịch bản ngoài đó vì nó không được giải thích và vì có một lớp giữa trình biên dịch và tập lệnh, nó cho phép bạn lập trình bằng nhiều ngôn ngữ bao gồm C # và phương ngữ của Python, Lua và Javascript.
Tôi không chắc chắn nếu nó miễn phí trên tất cả các nền tảng.
Cá nhân, tôi thấy AngelScript (xem liên kết bên dưới) dễ dàng liên kết với C ++ hơn Lua khi tôi chọn ngôn ngữ kịch bản cho dự án của riêng mình. (Tôi thực sự đã viết một thư viện trình bao bọc nhỏ cho nó để làm cho nó dễ sử dụng hơn, với chi phí linh hoạt.)
http://www.angelcode.com/angelscript/
Điều đó đang được nói, tôi nghi ngờ Lua có một vài lợi thế khiến nó trở nên hấp dẫn đối với các nhà phát triển trò chơi thương mại:
(a) Nó trưởng thành và rộng rãi hơn AngelScript
(b) Cú pháp của nó dễ dàng hơn đối với những người không lập trình (AngelScript rất giống C ++)
(c) Nó có dấu chân nhỏ hơn AngelScript (ít nhất là theo như tôi nhớ)
Tuy nhiên, nếu bạn chỉ đang viết một dự án sở thích, tôi sẽ nói rằng ít nhất là đáng xem.
Bạn nên chọn ngôn ngữ kịch bản có các ràng buộc ổn định và được hỗ trợ tốt cho ngôn ngữ phát triển chính của trò chơi. Nếu bạn đang viết trò chơi của mình bằng C hoặc C ++, thì có những ràng buộc khá chắc chắn có sẵn cho Python và Lua. Nếu bạn đang viết trò chơi của mình cho nền tảng .NET (sử dụng C # hoặc ngôn ngữ khác), thì tôi khuyên bạn nên sử dụng IronPython hoặc IronRuby. Cả hai đều là các triển khai ngôn ngữ hoàn chỉnh, thúc đẩy Thời gian chạy ngôn ngữ động (DLR) của Microsoft, cung cấp hiệu suất tuyệt vời và tích hợp rất chặt chẽ với .NET Framework. Khả năng tương tác giữa C # và IronPython / IronRuby ngày nay khá suôn sẻ, đặc biệt là với sự ra đời của ràng buộc callite động trong C # 4.0.
Vâng, đặc biệt là guile .
Với guile, bạn có thể có DSL (Ngôn ngữ cụ thể miền) của riêng bạn cho trò chơi của bạn. Khi bạn đã quen với dấu ngoặc đơn và ký hiệu tiền tố, lược đồ là thiên đường để làm việc.
Nếu bạn sẽ sử dụng guile trong một trò chơi nghiêm túc, tôi sẽ đợi một vài tháng cho đến khi phiên bản 2.0 sẽ bao gồm, IIRC, một trình thông dịch Ecmascript cũng như sơ đồ hiện tại. Bạn cũng có thể mong đợi để xem cải tiến tốc độ lớn.
Điều này phụ thuộc vào những gì bạn thực sự cần nó cho. Như David chỉ ra, Lua rất nổi tiếng, mặc dù một nhà phát triển trò chơi đã lưu ý với tôi rằng anh ta không hoàn toàn chắc chắn tại sao. Tôi nghĩ rằng sự nhẹ nhàng của nó là một lý do phổ biến, nhưng tại thời điểm này, tôi sẽ mong đợi rất nhiều người sử dụng Lua vì đó trở thành tiêu chuẩn thực tế. Có vẻ tốt nhất cho sửa đổi rất nhẹ.
Đối với một cách tiếp cận đầy đủ hơn, tôi muốn nói Python là lựa chọn đúng đắn. Civil IV đã sử dụng nó để có hiệu lực tốt.
Chọn một ngôn ngữ kịch bản khác ngôn ngữ phụ thuộc vào yêu cầu cụ thể của bạn.
Một số tùy chọn bạn phải chọn giữa có thể là:
Tốc độ của trình thông dịch - nếu tính năng của kịch bản lệnh chỉ được sử dụng bởi các nhà phát triển đối với hành vi tĩnh của kịch bản, thì tốc độ và API hoàn chỉnh và có thể mở rộng có thể là khía cạnh quan trọng nhất. Tôi đã có một số kinh nghiệm tốt với LUA ở đó.
Dễ học, khả năng truy cập - đối với một người thiết kế nội dung- / leveldesign, có thể khó học các ngôn ngữ kịch bản phức tạp hơn (phụ thuộc vào nền tảng) để tạo hành vi động. Trong trường hợp đó, việc sử dụng các ngôn ngữ dễ học (nghĩa là thường được sử dụng) và các ngôn ngữ được ghi chép tốt có thể phù hợp hơn ở đây. JavaScript hoặc Python có thể là một giải pháp tốt ở đây.
Tích hợp quy trình công việc - nếu bạn có một quy trình sản xuất cụ thể với các công cụ đã có sẵn, việc sử dụng một ngôn ngữ có vẻ hoạt động tốt nhất cho một trường hợp cụ thể là một ý tưởng tồi nếu các công cụ khác hoạt động với một công cụ hoàn toàn khác. Điều này đặc biệt hợp lệ nếu bạn có một số lập trình viên làm việc trên các công cụ khác nhau. Trong trường hợp đó, có thể hiệu quả hơn khi sử dụng ngôn ngữ "không hoàn toàn phù hợp".
Nếu bạn đang làm việc trên một tiêu đề cho Windows và viết mã được quản lý chạy trên Thời gian chạy ngôn ngữ chung (CLR) - giả sử trong C # - Tôi khuyên bạn nên xem tích hợp Python (Iron) như ngôn ngữ kịch bản.
Theo kinh nghiệm của tôi, Python rất dễ dạy cho những người không lập trình / thiết kế. Nó thậm chí còn dễ dàng hơn để chọn cho các nhà phát triển vì về cơ bản nó đọc như mã giả. Được gõ một cách linh hoạt chỉ là một trong những khía cạnh giúp mọi người có ít hoặc không có kinh nghiệm mã hóa trước đó và chạy nhanh với ngôn ngữ.
Ngoài ngôn ngữ dễ học và mạnh mẽ, CLR và các nhóm ngôn ngữ tại Microsoft (Anders Hejlsberg, Eric Lippert, Mads Torgersen, Jim Hugunin và cộng sự) đã thực hiện một số công việc tuyệt vời trong việc hiển thị các tính năng của trình biên dịch và thời gian chạy thông qua Dynamic mới Language Runtime (DLR) trong .NET 4, làm cho khả năng tương tác giữa mã được nhập tĩnh và mã được gõ động đơn giản hơn nhiều. Từ những gì tôi đã thấy và đã thử cho đến nay, mã soạn sẵn được giảm đến mức tối thiểu. Nó sẽ giữ cho cơ sở mã của bạn sạch sẽ và có thể bảo trì.
Bạn có thể sử dụng điều này để giữ cho ma sát giữa các phần kịch bản của trò chơi và động cơ rất thấp. Việc cả hai chạy trong cùng một VM cũng sẽ giúp cho bộ thực thi có thể tối ưu hóa nhiều mã hơn trong quá trình thực thi.
Câu trả lời rất nhiều phụ thuộc vào môi trường của bạn. Tôi hiện đang làm việc với Unity, vì vậy tôi sử dụng ngôn ngữ dựa trên đơn âm (trong trường hợp của tôi là C #, nhưng Javascript và Boo cũng là các tùy chọn). Câu trả lời hoàn toàn phụ thuộc vào hoàn cảnh cụ thể của bạn.
Nếu bạn có một nhóm hiện có sẽ sử dụng ngôn ngữ kịch bản hoặc nhà thiết kế chính (cấp độ) sẽ sử dụng kịch bản, thì hãy sử dụng ngôn ngữ họ chọn. Họ sẽ dành thời gian cho nó, vì vậy họ nên được phục vụ.
[hạt muối] Nếu bạn không có ai hoặc có kế hoạch dài hạn, thì hãy tự lăn . có, viết một trình biên dịch và / hoặc trình thông dịch cho một ngôn ngữ kịch bản có thể mất một hoặc hai tuần, nhưng về lâu dài tính linh hoạt sẽ phải trả nhiều lần. Chỉ cần không đi lạc hướng và phát minh lại. [/hạt muối]