[TUT] Visual3D for Game Maker (GM)

Thảo luận trong 'Game Development' bắt đầu bởi tranthevn, 8/5/07.

  1. tranthevn

    tranthevn Youtube Master Race

    Tham gia ngày:
    5/5/07
    Bài viết:
    12
    Kĩ thuật giả lập 3D với Game Maker----------------------------------

    Coppy right tranthevn. Nếu bạn có ý định post bài viết này lên một diễn đàn khác hay với mục đích nào khác làm ơn trích dẫn tác giả bài viết gốc. Cám ơn nhiều ^^.

    1. Introduction:
    Game Maker (GM) như mọi người đều biết là một game engine 2D phổ biến trên thế giới. Với GM ta có thể làm được hầu như tất cả các thể lạo game với thời gian phát triển tương đối nhanh. Ngoài ra GM còn được trang bị một tính năng vô cùng mạnh mẽ đó là giả lập 3D mà tôi sẽ giới thiệu ngay dưới đây.
    Ở bài viết này tôi sẽ đề cập đến những vấn đề chủ yếu sau đây:

    - Khởi động chế độ 3D.
    - Thiết lập các thông số cho 3D mode.
    - Vẽ một hình hộp 3D.
    - Và cuối cùng là sử dụng Camera ảo.


    [​IMG]
    Kết quả
    2.Chuyển sang chế độ 3D
    Phần này sẽ giới thiệu cách chuyển sang chế độ 3D để bạn có thể bắt đầu làm việc với các chức năng của nó. Đầu tiên bạn hãy tạo 1 script mới ( Add > Add Script) hoặc ấn Ctrl + Alt + C. Đặt tên script là src_Start3D chẳng hạn, cái này tùy bạn nhưng theo tôi nếu có thể thì nên đặt tên bằng tiếng Anh và có nghĩa như trên ^^ (vì trên thế giới đều như vậy).
    Tiếp đó bạn hãy gõ vào dòng sau:

    d3d_start();
    Hàm trên sẽ chuyển Game Maker sang chế độ 3D. Nếu bạn muốn tắt chế độ 3D để chuyển về 2D thì có thể dùng

    d3d_end();
    Trong trường hợp này bạn chỉ cần gõ dòng d3d_start(); là đủ ^^.
    2. Thiết lập các thông số cho chế độ 3D:
    Sau khi chuyển sang chế độ 3D chúng ta có thể làm việc vơi các chức năng của nó và một trong số đó là vẽ phối cảnh. Nghĩa là vật sẽ nhỏ dần khi Camera cách xa và sẽ to lên khi Camera ở gần, giống như ngoài đời vậy, thú vị phải không? Để bật chức năng trên bạn thêm vào src_Start3D dòng:
    d3d_set_pespective(true);

    Vậy là khi ở xa ta vật sẽ có kích thước nhỏ hơn so với kho vật ở gần. Ngoài chức năng trên ta còn có thể cho vật biến mất khi ở cách ta quá xa tầm mắt, chức năng này cũng rất thực tế. Bạn có thể làm điều đó bằng cách gõ thêm dòng:
    d3d_set_hidden(true);

    Ở ngoài thực chúng ta chỉ có thể nhìn thấy mọi vậy khi có ánh sáng. Trong GM cũng vậy, vì lí do trên nên nên Gm cũng hộ trợ tính năng ánh sáng (lighting) nhưng do đây là bài viết đầu tiên về 3D nên tôi tạm thời không bật tính năng này vì nó hơi phức tạp một chút và chúng ta có thể đề cập đến nó ở những bài viết sau nếu các bạn quan tâm Bạn thêm dòng sau để tắt tính năng hỗ trợ ánh sáng:
    d3d_set_lighting(flase);
    Và bạn hãy chuyển màu vẽ sang trắng để hình vẽ nhìn từ nhiều góc đọ đều không có bóng đen:
    draw_set_color(c_white);
    Ngoài ra bạn còn có thể bật chế độ sương mù để vật khi ở xa sẽ mờ hơn ở gần, một tính năng tăng cường tính thực tế của GM:
    d3d_set_fog(true,c_white,1,1024);

    Trong đó c_white (màu trắng) là màu của fog (sương mù) bạn có thể chon các màu khác như là c_aqua, c_black, c_blue … Nhưng xem ra màu trắng mới là màu của sương mù ^^. Còn 1 là khoảng cách ngắn nhất từ camera đến vật mà hiệu ứng sương mù bắt đầu xảy ra. 1024 là điển xa nhất hiệu ứng sương mù tồn tại ở điểm 1024 sẽ không còn nhìn thấy vật ^^.
    Ngoài ra bạn còn có thể vẽ những mặt khuất trong chế độ 3D với d3d_set_culling nhưng chúng ta sẽ tạm thời tắt đi để tìm hiểu sau:
    d3d_set_culling(false);

    Thêm 2 hàm nữa để hình ảnh hiện ra mượt mà hơn (bạn chỉ cần hiểu đơn giản là thế):
    d3d_set_shading(false);
    texture_set_interpolation(true);


    Xong giờ bạn có thể ấn save script này lại và để tạm đó đã. Chúng ta sẽ học cách sử dụng nó sau ^^.

    3. Vẽ một khối hộp 3D:
    Ở đây bạn cần hiểu là chúng ta sẽ không vẽ khối hộp bằng chương trình đồ họa nào cả mà chúng ta sẽ vẽ bằng code ^^.
    Đầu tiên bạn hãy tạo 1 Back Ground mới (Ctrl + Alt + và đặt tên nó là khoi_hop chẳng hạn sau đó các bạn hãy load ảnh khoi_hop.bmp vào (trong file download được ở trên). Tiếp nữa hãy tạo một script có tên là scr_Block (chẳng hạn thế) và bạn gõ vào dòng sau:
    d3d_draw_block(0,0,0,32,32,32,background_get_texture(khoi_hop),1,1);

    Trong đó d3d_draw_block là hàm dùng để vẽ khối hộp. (0,0,0) là tọa độ của đỉnh thứ nhất trong hệ tọa độ Oxyz, (32,32,32) là tạo độ đỉnh thứ 2 trong cùng hệ tọa độ background_get_texture(khoi_hop) là hàm dùng để lấy hình nền cho khối hộp (bây giờ khối hộp sẽ có nền là background (bg) hinh_hop. (1,1) là số lượng bg hình hộp trên mỗi mặt ở đây là mỗi mặt 1 hình khi số hình trên một mặt tăng lên thì hình nền trôg sẽ càng nhỏ (các bạn có thể tự thử bằng cách thay đổi giá trị 1,1 thành các giá trị khác tùy ý).
    4. Camera ảo:
    Vậy là chúng ta đã tạo ra một hình hộp, nhưng ở chế độ 3D chúng ta cần có một camera để nhìn thấy hình hộp ấy. Bây giờ chúng ra sẽ tạo ra nó. Bạn hãy tạo 1 script mới đặt tên là scr_Camera gõ vào đoạn mã sau đây:

    d3d_set_projection(128,96,64,16,16,16,0,0,1);

    Trong đó 3 giá trị đầu là tọa độ của camera (trục Oxyz), 3 giá trị sau là điểm mà camera sẽ “nhìn” vào. Cuối cùng bạn có thể xoay camera quanh trục là đường thẳng nối điểm đặt và điểm “nhìn” của camera. Để camera thẳng đứng (giống như đang quay phim) bạn cho nó một giá trị là (0,0,1). Tất nhiên bạn có thể thay đổi các giái trị theo ý mình cho đến khi hài lòng.
    5. Chạy thử:
    Giờ bạn đã khởi tạo xong các thứ cần thiết để chạy trong chế độ 3D. Giờ hãy đặt các thứ đó vào 1 room để chạy. Okie let’s start.
    Hãy tạo một room mới (Ctrl + Alt + R) có tên là roo_Tuttorial chẳng hạn. Tạo một Object mới (Ctrl + Alt + O) có tên là obj_Camera, Add Event > Create. Trong Creation Event tạo các từ tab Control kéo Excute A Script Action vào ở cột Script chọn scr_Start3D. Tương tự như vậy tạo Draw Event và kéo Excute A Script Action vào ở cột Script chọn scr_Camera. Tiếp đó chúng ta hãy làm cho Camera tạo cho chúng ta khối hộp vừa vẽ: Ở Createtion Event thêm vào 1 script gõ vào:
    istance_create(0,0,obj_Block);
    Tạo 1 object mới đặt tên là obj_Block ở Draw Event cho chạy script scr_Block. Sau đó bạn đặt obj_Camera vào room roo_Tutorial (đâu cũng được).
    Xong, giờ bạn hãy ấn F5 để thưởng thức thành quả của mình. Lúc này bạn có thể nhìn thấy một khối hộp đứng yên => hơi chán phải không. Để cho nó động đậy tí chút bạn có thể thay dòng:
    d3d_set_projection(128,96,64,16,16,16,0,0,1);
    bằng:

    d3d_set_projection(mouse_x-100,mouse_y-100,64,16,16,16,0,0,1);

    Bây giờ hãy ấn F5 bạn sẽ thấy kết quả, thật tuyệt phải không? Chúc thành công.

    File ví dụ cho tut trên:
    Mã:
    http://rapidshare.com/files/27430787/3Dtut.rar
    
    or
    Mã:
    http://www.uploading.com/files/TZBB56CF/3Dtut.rar.html
    
     
  2. Demon Eyes Kyo

    Demon Eyes Kyo Youtube Master Race

    Tham gia ngày:
    4/11/06
    Bài viết:
    33
    bạn ơi mình làm được rồi nhưng mình ko tải được cái hộp ví dụ của bạn nên mình lấy cái hình nền có sẵn trong gamemaker nhưng tại sao cái hình nó lại nhỏ hơn cái khung(nó chỉ nằm một góc ở mỗi mặt của hình hộp còn) mình đã thử thay các thông số ở chỗ draw block vẫn ko được các thông số khác cũng vậy thậm chí mình đã thay kích cỡ của background giúp mình::(
     
  3. fairyhell

    fairyhell Youtube Master Race

    Tham gia ngày:
    7/4/07
    Bài viết:
    69
    nhưng mà theo mình biết thì kĩ thuật dựng 3D chỉ dành cho GM 7.0 Pro thôi mà, nếu bạn có bản Crack thì xin chỉ mình chổ Down nha' thanks
     
  4. yoyogongzuo

    yoyogongzuo Youtube Master Race

    Tham gia ngày:
    21/3/09
    Bài viết:
    1
    An elephant said to a mouse ,"No doubt that you are the smallest and most useless thing that I have ever seen ." "Please ,say it again . Let me take it down ." the mouse said . " I will tell a flea what I know."-----------Patience is bitter, but its fruit is sweet . (Jean Jacques Rousseau , French thinker)More Games,joke,Warhammer Online Gold and famous. Click http://www.ygscn.net. You will get more.
     
  5. vananh_hana

    vananh_hana Youtube Master Race

    Tham gia ngày:
    7/4/09
    Bài viết:
    1

Chia sẻ trang này