2008-10-09 42 views
16

Tôi muốn lập trình trò chơi đồ họa 2D phức tạp hơn so với công cụ 2D cơ bản mà tôi đã biết. Tôi không muốn lập trình 3D. Chỉ những thứ 2D phức tạp hơn. Tôi bỏ học trung học trước khi tôi có thể học được rất nhiều thứ vì vậy tôi đã bỏ đi với đủ kiến ​​thức đại số để cân bằng sổ séc của tôi và làm một số chương trình 2D Cartesian nhẹ.Lập trình toán học và trò chơi

Có tài nguyên nào tốt cho một chàng trai với một khoảng thời gian giới hạn (nói 20 phút cho một chủ đề mà tôi quan tâm) để học, dần dần, làm thế nào để làm điều gì đó hữu ích hơn với toán học trong lập trình?

+2

+1 để bỏ học, bạn là người thú vị nhất trong SO – siaooo

Trả lời

6

Tôi hiện đang xem "Physics for Game Developers" của David M. Bourg. Cho đến nay, tôi muốn giới thiệu nó.

Nó cung cấp các khái niệm toán học đằng sau vật lý có thể dễ dàng áp dụng cho lĩnh vực 2D để thêm gia vị cho trò chơi của bạn một chút.

0

Kỳ lạ thay tôi đã tìm thấy rất nhiều thứ hữu ích về đại số tuyến tính trong Wikipedia: http://en.wikipedia.org/wiki/Portal:Mathematics

Nói chung nó không phải là nguồn tốt nhất của kiến ​​thức, nhưng toán học có là ok.

17

Bạn cần phải có thẩm quyền trong Trigonometry: WikipediaMathworld

Mặc dù bạn không muốn làm lập trình 3D, trò chơi 2D cũng sử dụng vectơ và ma trận. (Từ Linear Algebra)

nguồn Linear Algebra: WikepediaMathworld

Một điểm đó sẽ giúp bạn tiết kiệm rất nhiều nỗ lực trong việc lập trình Trig được nhận ra sự cần thiết của các atan2() chức năng, chứ không phải là atan function(). Điều này rất quan trọng khi xác định hướng giữa hai điểm.

Có thể di chuyển giữa các hệ tọa độ khác nhau là một điểm cộng lớn. Điều này sẽ đi kèm với kinh nghiệm. Hai điều phổ biến mà mọi người đi lên là:

a) Hầu hết hệ thống màn hình đặt nguồn gốc (0,0) ở góc trên bên trái, với trục x dương kéo dài sang phải và trục y dương mở rộng xuống. Tọa độ Descartes tiêu chuẩn giả sử nguồn gốc của Quadrant 1 (trong đó x và y luôn dương hoặc không) ở phía dưới bên trái. Điều này đòi hỏi một lập trình viên phải 'lật' định hướng y ở một giai đoạn nào đó.

b) Vị trí địa lý điển hình 0 độ khi độ Bắc và độ dương quét theo chiều kim đồng hồ. Tất cả các chức năng Trig đặt 0 độ là Đông với độ dương quét ngược chiều kim đồng hồ.

Cuối cùng, mặc dù chúng ta có xu hướng nghĩ theo độ, các thư viện thực sự sẽ sử dụng radian. Một Cách tốt nhất là để lưu trữ các góc như radian (trong định hướng 'toán' chứ không phải 'geo') và chuyển đổi mọi thứ khi hiển thị thông tin debug ..

1

Tôi phải không đồng ý với đề xuất Vật lý dành cho nhà phát triển trò chơi.

Tôi thấy cuốn sách đó khá nhàm chán và tôi sẽ không gọi cho khoảng chú ý của riêng mình ngắn.

Tôi sẽ nói những điều tốt nhất để đạt được tốt là vectơ, sử dụng trig để thao tác chúng, và sau đó trên nền tảng đó bạn áp dụng bất kỳ vật lý nào cụ thể cho dự án hiện tại của bạn.

Tôi chỉ cần khởi động google/wikipedia và bắt đầu nảy lên trên web để lấy nội dung ngẫu nhiên và khi khoảng thời gian chú ý giới hạn của bạn bị phản đối, bị trả lại.

Nhận cuốn sách đó có lẽ sẽ không hút bạn và truyền cảm hứng cho bạn.

4

GameDev.net có một phần bài viết về mã hóa Toán và Vật lý. Đó là giá trị một cái nhìn nhanh chóng thông qua để xem nếu bất cứ điều gì có liên quan đến những gì bạn đang cố gắng để làm.

http://www.gamedev.net/reference/list.asp?categoryid=28

1

Nếu bạn muốn có một trang web toán học nói chung tôi khuyên bạn nên planetmath.org. Các bài viết có xu hướng giữ một tiêu chuẩn cao hơn wikipedia (mà trong kinh nghiệm của tôi có thể hết sức kinh khủng khi nói đến toán học) và thân thiện với người dùng hơn mathworld. Mathworld là tốt nếu bạn là một nhà toán học và cần định nghĩa chính xác hoàn chỉnh của một số thuật ngữ, nhưng cho ngày này sang ngày sử dụng nó có xu hướng được xa để lý thuyết và obtuse.

2

Nếu bạn sống ở Hoa Kỳ, cách đăng ký tại một trường cao đẳng cộng đồng địa phương để tham gia các lớp học toán bạn đã bỏ lỡ? Họ sẽ có các nguồn trợ giúp để giúp các học sinh cần các lớp kỹ năng điều trị và có thể bị khuyết tật học tập. Bạn có động lực để học và bây giờ bạn nhận ra giá trị của giáo dục. Không có gì đáng xấu hổ khi muốn học. Xem một cố vấn học tập và họ sẽ giúp bạn. Đi cho nó.

0

Bạn có thể muốn xem bất kỳ văn bản OReilly nào về chủ đề. Họ có những ví dụ tốt mà bạn có thể làm việc thông qua. Điều này sẽ cho bạn ý tưởng tốt hơn nếu lập trình phù hợp với bạn. Nếu bạn muốn tham gia vào chương trình trò chơi, cách tốt nhất là bắt đầu thực hiện game programming. Chỉ cần đi vào nó và tìm kiếm câu trả lời cho câu hỏi (liên kết trong các trả lời khác ở đây) khi chúng phát sinh.

2

Tôi rất tin rằng việc học từ chuỗi video là cách nhanh nhất có thể để học, nghĩa là, nếu bạn muốn di chuyển nhanh chóng với điều bạn sẵn sàng học. Bạn có thể dành nhiều thời gian đọc một trang chỉ để có được một mẩu thông tin nhỏ mà một video có thể cung cấp cho bạn trong một hoặc hai phút!

Và vì điều đó, tôi thấy kênh này Math: https://www.youtube.com/user/patrickJMT

Ngoài ra: https://www.youtube.com/playlist?list=PL233FC7AA6FE11E0E

+0

Tôi đã xem video trên trang web đó và nghĩ rằng sẽ rất tuyệt nếu ai đó có thể chỉ ra nội dung nào được sử dụng trong lập trình trò chơi! Vì vậy, cổ vũ! – superlogical

+0

Lập trình trò chơi sử dụng rất nhiều Đại số tuyến tính, như vectơ (và bất kỳ thứ gì liên quan đến chúng: chiếu, đơn vị vec, khoảng cách, v.v.), máy bay (va chạm máy bay với vectơ và máy bay khác), hạt nhân, nhịp, tập con, biến đổi (A LOT), ma trận, vv Nguồn đại số tuyến tính tốt: http://tutorial.math.lamar.edu/Classes/Alg/Alg.aspx Sau đó, bạn có thể chuyển sang một số nội dung 3D quan trọng. – vexe

1

Bạn có thể bắt đầu bằng cách học Processing!

Sau đó chuyển sang cuốn sách tuyệt vời này bởi Daniel Shiffman gọi ' The Nature of Code '. Cuốn sách này cũng có sẵn trực tuyến với các ví dụ tương tác viết bằng Processing.js

http://natureofcode.com/book/

Cuốn sách bao gồm

1. VECTORS 
2. FORCES 
3. OSCILLATION 
4. PARTICLE SYSTEMS 
5. PHYSICS LIBRARIES 
6. AUTONOMOUS AGENTS 
7. CELLULAR AUTOMATA 
8. FRACTALS 
9. THE EVOLUTION OF CODE 
10. NEURAL NETWORKS 

Ông cũng đã tải lên video vào khái niệm giải thích Vimeo từ mỗi chương! http://vimeo.com/shiffman/videos/sort:date/format:detail

Làm thế nào chúng ta có thể nắm bắt được tiến hóa và nổi không thể đoán trước tính chất của thiên nhiên trong phần mềm? Làm cách nào để hiểu được các nguyên tắc toán học trong thế giới vật lý của chúng tôi giúp chúng tôi tạo ra các thế giới số kỹ thuật số? Cuốn sách này tập trung vào các chiến lược lập trình và các kỹ thuật đằng sau các mô phỏng máy tính của các hệ thống tự nhiên bằng cách sử dụng chế độ Đang xử lý.

Ông cũng đã viết một cuốn sách để dạy cho bạn những điều cơ bản của Learning processing

http://www.learningprocessing.com/

Cuốn sách này kể một câu chuyện. Đó là một câu chuyện về giải phóng, lấy các bước đầu tiên để tìm hiểu nền tảng của máy tính, viết mã của riêng bạn và tạo phương tiện của riêng bạn mà không có các liên kết của các công cụ phần mềm hiện có. Câu chuyện này không dành riêng cho máy tính các nhà khoa học và kỹ sư. Câu chuyện này là dành cho bạn.

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