2009-11-23 18 views
5

Tôi và bạn tôi đang ở trong giai đoạn đầu của việc tạo ra một ngôn ngữ miền cụ thể được thiết kế cho lập trình trò chơi, cho bài luận văn của mình.Bạn muốn thấy những tính năng nào trong DSL lập trình trò chơi?

Ngôn ngữ sẽ khá thấp, nó sẽ có cú pháp C, bộ sưu tập rác tùy chọn và sẽ hướng tới các hệ thống có ít bộ nhớ hoặc sức mạnh xử lý (ví dụ: Nintendo DS), nhưng phải mạnh mẽ đủ để tạo thuận lợi cho việc phát triển PC dễ dàng. Nó sẽ không phải là một ngôn ngữ kịch bản, nhưng là một biên dịch, nhưng vì chúng ta không muốn dành hàng tháng viết một trình biên dịch bình thường, thực hiện đầu tiên về cơ bản sẽ là một dịch giả LanguageName-to-C, với TCC hoặc GCC trình biên dịch cuối.

Bây giờ, tôi có câu hỏi dành cho tất cả các lập trình viên trò chơi của bạn ở ngoài đó:

Bạn muốn thấy gì bằng ngôn ngữ như vậy? Những tính năng, triển khai và cú pháp-khôn ngoan nào, sẽ là tốt nhất cho nó? Những gì để tránh?

Edit:

Một số điều chúng ta đã nghĩ ra:

  • đối tượng dựa trên trạng thái - một đối tượng có thể tồn tại trong một trong đó là các quốc gia (hoặc tiểu bang)
  • sự kiện và chức năng - các sự kiện không nhất thiết phải tồn tại để được gọi và có thể bong bóng lên số
  • phân bổ động hạn chế và hỗ trợ con trỏ - chúng tôi muốn nó càng an toàn càng tốt
  • hỗ trợ cho đối tượng compositi ng (Hero được sáng tác (động) của Actor, Hurtable, Steerable, vv)
  • "tài nguyên" ở trạng thái, được tải và tự động tải ở đầu/cuối tiểu bang (ví dụ: đối tượng kết cấu OpenGL là tài nguyên)
  • hỗ trợ cơ bản cho nội địa hóa và serialization
  • một cú pháp đó là nhanh chóng được phân tách
  • chúng tôi muốn làm cho ngôn ngữ nhất quán càng tốt: tất cả mọi thứ được thông qua như giá trị, mỗi lời tuyên bố có thể dự đoán được cú pháp (ví dụ. function retType name(type arg) is (qualifier, list) { }; không const, static, public vòng loại ở bất cứ đâu ngoại trừ trong danh sách vòng loại), vv
+0

Clojure có rất nhiều tính năng mà tôi ngưỡng mộ, đặc biệt là trên mặt trận Lập trình chức năng. Có thể làm một điều tốt để nôi từ. – Kzqai

Trả lời

3

Cá nhân tôi thích viết trò chơi có thể truy cập vào đối tượng rộng, rộng trên web. Sẽ rất thú vị để làm cho nó đơn giản để giao tiếp giữa máy tính để bàn và web.

Đó có lẽ là tên miền ứng dụng được xây dựng với ngôn ngữ nhiều hơn ngôn ngữ, tôi cho rằng, nhưng có lẽ điều gì đó hữu ích để ghi nhớ trong giai đoạn thiết kế.

+0

Bạn có thể đưa ra một ví dụ về ý của bạn? – GhassanPL

+0

Xin lỗi, không có đào tạo chính thức về mặt thiết kế ngôn ngữ, vì vậy tôi không thực sự có các chi tiết cụ thể, nhưng tôi có thể thấy lợi ích khi có thể đưa chương trình trò chơi của bạn truyền thông tin đến máy chủ trang web để hiển thị và một sự tích hợp chặt chẽ giữa một trò chơi đang chạy trên máy tính để bàn và các kết nối xã hội có sẵn trên web. * nhún vai * – Kzqai

4

Điều gì đó để giúp lập trình đồng thời dễ dàng hơn. Một sự pha trộn của Erlang và C++ có lẽ. Tôi đã suy nghĩ về điều này và tắt kể từ khi bộ vi xử lý Cell đã được công bố nhưng nó sẽ mất một đoạn nghiêm trọng của thời gian R & D để phát triển nó và giải quyết nhiều vấn đề đã có các giải pháp trong các chương trình C++ truyền thống.

+0

Ngôn ngữ sẽ có hỗ trợ cho các coroutine rất cơ bản (về cơ bản là coroutines của Duff, như được trình bày bởi Simon Tatham). – GhassanPL

2

Vì vậy, tôi không muốn thực sự phá vỡ bong bóng của bạn, nhưng ... có lẽ tôi nên? Là một nhà phát triển trò chơi chuyên nghiệp, tôi phải nói rằng thực sự cần phải có ba loại "ngôn ngữ" để phát triển trò chơi.

Trước tiên, có ngôn ngữ cấp cơ của bạn. Đây thường là C++. Đó là tất cả về hiệu suất. Các hiện vật của trò chơi không có nghĩa là để được thực hiện ở đây (thật đáng buồn, chúng thường là).

Tiếp theo là ngôn ngữ trò chơi. Đây là trọng lượng nhẹ, dễ hiểu và được thiết kế để lặp lại nhanh chóng.

Cuối cùng, có một số loại ngôn ngữ kịch bản trực quan. Đây là nhẹ nhất trong số tất cả và được hướng tới những người không lập trình (nhà thiết kế cấp độ, v.v.).

Điều đó đang được nói:

Chắc chắn kiểm tra UnrealScript. Nó được sử dụng trong suốt ngành công nghiệp (kể từ khi Unreal Engine là một nền tảng của sự phát triển game FPS).

Tôi rất muốn giới thiệu hỗ trợ:

  • lập trình đồng thời (kiểm tra những gì ĐCSTQ làm với Stackless Python cho Eve Online)
  • mạng sao chép (kiểm tra UnrealScript, bạn có thể tag các chức năng để chạy trên một trong hai máy chủ hoặc máy khách hoặc để an toàn để chạy trên máy khách, v.v.)
  • Nhà nước (như đã đề cập) sẽ rất tuyệt vời. UnrealScript có cơ sở này. Điều này cần được thực hiện một cách an toàn (ví dụ: nhập và thoát tại bất kỳ thời điểm nào, chuyển tiếp phức tạp được xử lý một cách trang nhã, v.v.)

Chúc may mắn!

+0

WoW được thực hiện theo các dòng bạn nói: C++ engine, UI được viết bằng ngôn ngữ kịch bản, và sau đó có các macro cho các phím tắt nhập của người dùng. Nó sử dụng cách tiếp cận nhiều lớp, đa ngôn ngữ và trở nên hoàn toàn thành công. – JohnnySoftware

Các vấn đề liên quan