Làm Thử đi .vui Lắm

Thảo luận trong 'Game Development' bắt đầu bởi finallegend, 7/4/05.

  1. finallegend

    finallegend Mr & Ms Pac-Man

    Tham gia ngày:
    31/12/04
    Bài viết:
    221
    Nơi ở:
    finallegend story
    Rất nhiều nhà lập trình thích làm những trò chơi hành động thực. Vì vậy những hình ảnh tĩnh sẽ không thể làm cho họ có hứng thú. Sử dụng những kỹ thuật hoạt hình đơn giản sau đây có thể tạo ra những hình ảnh chuyển động :



    · Tạo ảo giác về sự chuyển động bằng cách ghi một loạt hình ảnh liên tiếp biểu diễn những thay dổi vị trí từ từ của đối tượng cần biểu diễn, rồi hiển thị lại các hình ảnh đó đủ nhanh sao cho mắt cảm thấy hình ảnh chuyển động tự nhiên không bị giật.



    · Về đồ hoạ, kỹ thuật hoạt hình đạt được bằng một vài cách tuỳ thuôc vào ngôn ngữ lập trình và môi trường làm việc.



    - Thứ nhất là vẽ một hình ảnh, sau đó xóa đi và vẽ lại hình ảnh đó ở vị trí khác một chút so với vị trí trước.



    - Hoạt hình được tạo ra trong thời gian thực (trong đó mỗi frame được tạo ra như là một khung nhìn) và trong cả thời gian mô phỏng.



    - Để tạo được thứ tự hoạt ảnh thành công, các hình ảnh phải thay thế nhau một cách đủ nhanh để đánh lừa con mắt người xem khi xem những hình ảnh liên tục, ít nhất là 14 frame mỗi giây. Đối với những ứng dụng tạo trò chơi, ta chỉ cần từ 6 – 10 frame / s để tiết kiệm tiền và thời gian xử lý của CPU. Phạm vi tốt nhất cho kỹ thuật hoạt hình chất lượng là từ 14 – 30 frame /s.



    Ví dụ:



    · Để tạo ra một hoạt ảnh đơn giản, ta cần ít nhất hai hình ảnh khác nhau.



    A =
    B =



    Cách đơn giản để hiển thị hình ảnh này cần thực hiện qua các bước sau:



    - Xoá ngoài màn hình



    - Vẽ hình ảnh A lên màn hình



    - Cập nhật hình ảnh thực



    - Delay vài ms để người quan sát nắm được hình ảnh. Nếu ta dùng kỹ thuật hoạt hình 10 frame / s thì thời gian delay là 1000/10=100 ms



    - Lặp lại bước 1 nhưng ở bước 2 ta thay hình ảnh A bằng hình ảnh B.



    · Đối với hành động của đối tượng hoạt hoạ quá phức tạp, ví dụ như người đang chạy, các frame liên tiếp cho kỹ thuật này là 10 frame hoặc hơn. Điều đó tương đương với cần 10 file hình ảnh. Vì thấ có thể gặp một vấn đề là quản lý file. Để giảm bớt số lượng file hình ảnh, ta hợp chúng lại thành một hình ảnh.







    · Ta có thể tạo hoạt ảnh đơn giản bằng cách chia hình ảnh trên thành 4 phần và vẽ mỗi phần đó lên màn hình từ trái sang phải.



    Sau đây là đoạn chương trình:



    // sample.rc
    #include "windows.h"
    100 BITMAP ninja.bmp



    // replace to startup.c
    LRESULT MainWndProc(HWND hWnd, UINT message, WPARAM uParam, LPARAM lParam)
    {
    HDC hDC, hMemDC;
    HBITMAP hBitmap;
    int nCnt;
    switch(message)
    {
    case WM_LBUTTONDOWN:
    hDC = GetDC(hWnd);
    hBitmap = LoadBitmap(g_hInst, MAKEINTRESOURCE(100));
    hMemDC = CreateCompatibleDC(hDC);
    SelectObject(hMemDC, hBitmap);
    ReleaseDC(hWnd,hDC);
    for(nCnt=0; nCnt<4; nCnt++)
    {
    PatBlt(hOffscreebDC, 0, 0, 240, 320, WHITENESS); TransparentImage(hOffscreenDC,nCnt*4,0,46,57,hMemDC,nCnt*46,0,46,57, RGB(255,0,255));
    Sleep(100);
    UpdateDisplay(hWnd);
    }
    DeleteDC(hMemDC);
    DeleteObject(hBitmap);
    break;
    case WM_KEYDOWN:
    DestroyWindow(hWnd);
    break;
    case WM_CREATE:
    InitOffscreen(240, 320);
    break;
    case WM_DESTROY:
    DeinitOffscreen();
    PostQuitMessage(0);
    break;
    default:
    DefWindowProc(hWnd, message, uParam, lParam);
    }
    return 0;
    }



    · Bước tiếp theo, ta cần điều khiển vị trí đối tượng trên màn hình. Giả sử ta gọi đối đó là GAME OBJECT hoặc SPRITE OBJECT. Để điều khiển vị trí của đối tượng, ta cần lưu lại vị trí hiện tại của nó.



    - Ta cần một kiểu dữ liệu POINT trong Win32 SDK. Kiểu dữ liệu



    POINT gồm hai thành phần: x và y. Kiểu này được khai báo



    như sau :



    typedef _tagPOINT
    {
    int x;
    int y;
    } POINT;



    - Một kiểu dữ liệu nữa cần sử dụng là kiểu SIZE, giống như kiểu



    POINT nó cũng có hai thành phần cx và cy



    typedef _tagSIZE
    {
    int cx;
    int cy;
    } SIZE;



    - Ta sẽ sử dụng hai kiểu trên để điều khiển các đối tượng trong trò



    chơi. Dùng thêm một biến là bộ đếm các frame. Nó được sử dụng



    để điều khiển hành động của các đối tượng.



    · Ta cần tạo ra Screen Saver như một chương trình và để đối



    tượng chuyển động trên nó. Vị trí bắt đầu là ngẫu nhiên.



    · Kế hoạch chương trình:



    - Tạo các biến vị trí và tải nguồn ảnh vào một biến toàn cục



    - Tạo vòng lặp của 10 đối tượng



    - Xoá màn hình OffScreen



    - Di chuyển các đối tượng bằng cách thay đổi các biến vị trí



    - Cập nhật bộ đếm các frame



    - Vẽ đối tượng vào vị trí của nó



    - Nếu vị trí ở ngoài màn hình thì ngẫu nhiên bắt đàu một vị trí mới.



    - Sau khi kết thúc vòng lặp thì cập nhật màn hình thực



    - Thời gian delay là 50 ms để người quan sát nắm được hình ảnh



    - Bắt đầu vòng lặp



    - Huỷ bỏ ảnh được tải lên



    Sau đây là đoạn chương trình:



    // sample.rc
    #include "windows.h"
    100 BITMAP ninja.bmp



    // replace to startup.c
    #DEFINE TRASNCOLOR RGB(255,0,255)
    sattic HBITMAP hObjBitmap;
    static POINT ObjPosition[10];
    static int nFrameCounter[10];
    static SIZE ObjSize;
    static void FirstInit(void)
    {
    int nCount;
    InitOffscreen(240, 320);
    hObjBitmap = LoadBitmap(g_hInst, MAKEINTRESOURCE(100));
    ObjSize.cx = 40;
    ObjSize.cy = 57;
    for(nCount=0; nCount<10; nCount++)
    {
    ObjPosition[nCount].x = -(Random() % 100);
    ObjPosition[nCount].y = Random() % (320 - ObjSize.cy);
    nFrameCounter[nCount] = 0;
    }
    }
    static void Deinit(void)
    {
    DeinitOffscreen();
    DeleteObject(hObjBitmap);
    }
    static void RenderFrame(HWND hWnd)
    {
    HDC hDC, hMemDC;
    int nCnt, x, y, frameno;
    hDC = GetDC(hWnd);
    hMemDC = CreateCompatibleDC(hDC);
    SelectObject(hMemDC, hObjBitmap);
    ReleaseDC(hWnd,hDC);
    PatBlt(hOffscreebDC, 0, 0, 240, 320, WHITENESS);
    for(nCnt=0; nCnt<10; nCnt++)
    {
    x = ObjPosition[nCnt].x;
    y = ObjPosition[nCnt].y;
    frameno = nFrameCounter[nCnt] * ObjSize.cx;
    TransparentImage(hOffscreenDC,x,y,ObjSize.cx,ObjSize.cy,hMemDC,frameno,0,ObjSize.cx,ObjSize.cy, TRASNCOLOR);
    ObjPosition[nCnt].x += 4;
    if(ObjPosition[nCnt].x + ObjSize[nCnt] > 240)
    ObjPosition[nCount].x = -(Random() % 100);
    nFrameCounter[nCnt]++;
    if(nFrameCounter[nCnt] > 4)
    nFrameCounter[nCnt] = 0;
    }
    UpdateDisplay(hWnd);
    DeleteDC(hMemDC);
    }






    LRESULT MainWndProc(HWND hWnd, UINT message, WPARAM uParam, LPARAM lParam)
    {
    switch(message)
    {
    case WM_TIMER:
    RenerFrame(hWnd);
    break;
    case WM_KEYDOWN:
    DestroyWindow(hWnd);
    break;
    case WM_CREATE:
    FirstInit();
    SetTimer(hWnd,1,50,0);
    break;
    case WM_DESTROY:
    Deinit();
    PostQuitMessage(0);
    break;
    default:
    DefWindowProc(hWnd, message, uParam, lParam);
    }
    return 0;
    }







    KienDN – ThuyNT DohoaVietNam.com
     
  2. ken10

    ken10 Programmer

    Tham gia ngày:
    10/1/04
    Bài viết:
    2,341
    Nơi ở:
    Ho Chi Minh city
    --Bài viết của Finallegend khá hay.

    --Finallgend có muốn tham gia vào nhóm VietNam-Maker không vậy ::) .
     
  3. yugi_vn

    yugi_vn Legend of Zelda

    Tham gia ngày:
    27/4/04
    Bài viết:
    990
    ồ cái nay khá hay đấy .1 cách dựng hình kiểm image ready đúng ko :)
    cứ xoá , vẽ rồi lại xoá , vẽ ,
    Bạn tự viết tất cả hay đọc được từ đâu vậy
    Nếu mà bạn tự viết tất thì có vẻ bạn là một dân chuyên nghiệp trong đồ hoạ phải không :D
     
  4. zubachi

    zubachi Donkey Kong

    Tham gia ngày:
    5/11/04
    Bài viết:
    301
    Nơi ở:
    Tây phương
    ::) Ông ráng post thêm một bài này bên hàng xóm Thảo Luận Chung cho mod bên đó nó mừng cái. Bên đấy có mấy tay lão làng. Họ sẽ mổ xẻ bài của ông ra, vạch là tìm sâu, đảm bảo không dưới 5 lỗi. Nhờ đó box bên đấy sẽ active hơn.

    Cảm ơn đã post một bài có nhiều giá trị. :D
     
  5. >VoDich<

    >VoDich< Legend of Zelda

    Tham gia ngày:
    26/1/05
    Bài viết:
    919
    Nơi ở:
    Can Tho
    ổng có đưa web cuối bài đó, bộ mù à
    anh heo ơi, cho em link down engine hge gì đó với, anh giải thích hộ em cái nì với, hic tại ko ai bàn về statement hết

    for (<statement1> ; <expression> ;<statement2>) <statement3>

    ex:
    {
    for (i=0; i<=9; i+=1) list = i+1;
    }

    anh giải thích cặn kẽ cái nì được ko, nó có nói sơ wa mà đọc ko hiểu. có mấy cái em hiểu rùi nhưng tiện thể post lun, nhờ anh đấy ;;)
    random(x) Returns a random real number between 0 and x. The number is always smaller than x.
    abs(x) Returns the absolute value of x.
    sign(x) Returns the sign of x (-1, 0 or 1).
    round(x) Returns x rounded to the nearest integer.
    floor(x) Returns the floor of x, that is, x rounded down to an integer.
    ceil(x) Returns the ceiling of x, that is, x rounded up to an integer.
    frac(x) Returns the fractional part of x, that is, the part behind the decimal dot.
    sqrt(x) Returns the square root of x. x must be non-negative.
    sqr(x) Returns x*x.
    power(x,n) Returns x to the power n.
    exp(x) Returns e to the power x.
    ln(x) Returns the natural logarithm of x.
    log2(x) Returns the log base 2 of x.
    log10(x) Returns the log base 10 of x.
    logn(n,x) Returns the log base n of x.
    sin(x) Returns the sine of x (x in radians).
    cos(x) Returns the cosine of x (x in radians).
    tan(x) Returns the tangent of x (x in radians).
    arcsin(x) Returns the inverse sine of x.
    arccos(x) Returns the inverse cosine of x.
    arctan(x) Returns the inverse tangent of x.
    arctan2(y,x) Calculates arctan(Y/X), and returns an angle in the correct quadrant.
    degtorad(x) Converts degrees to radians.
    radtodeg(x) Converts radians to degrees.
    min(val1,val2,val3,...) Returns the minimum of the values. The function can have up to 16 arguments. They must either be all real or all strings.
    max(val1,val2,val3,...) Returns the maximum of the values. The function can have up to 16 arguments. They must either be all real or all strings.
    mean(val1,val2,val3,...) Returns the average of the values. The function can have up to 16 arguments. They must all be real values.
    point_distance(x1,y1,x2,y2) Returns the distance between point (x1,y1) and point (x2,y2).
    point_direction(x1,y1,x2,y2) Returns the direction from point (x1,y1) toward point (x2,y2) in degrees.
    lengthdir_x(len,dir) Returns the horizontal x-component of the vector determined by the indicated length and direction.
    lengthdir_y(len,dir) Returns the vertical y-component of the vector determined by the indicated length and direction.
    is_real(x) Returns whether x is a real value (as opposed to a string).
    is_string(x) Returns whether x is a string (as opposed to a real value).
     
  6. longakka

    longakka Đầu gấu nhà quê Lão Làng GVN

    Tham gia ngày:
    3/9/02
    Bài viết:
    3,011
    Nơi ở:
    Scumm Bar
    for (<statement1> ; <expression> ;<statement2>) <statement3>

    ex:
    {
    for (i=0; i<=9; i+=1) list = i+1;
    }

    L-) Câu lệnh for cơ bản + ví dụ
    Giải thích cái gì đây 3:-o
     
  7. zubachi

    zubachi Donkey Kong

    Tham gia ngày:
    5/11/04
    Bài viết:
    301
    Nơi ở:
    Tây phương


    Chú cứ tưởng tượng có có 2 thèng. Một thèng hít đất, một thèng đếm.

    i = 0 : Khi thèng hít đất hít được cái đầu tiên thèng đếm ghi lại 0.
    i += 1: Khi nó hít được thêm một cái thì thèng đếm cộng thêm 1, nghĩa là cái thứ 2 thì nó ghi lại 1, cái thứ 3 thì nó ghi lại 2, v.v...
    i <= 9: Khi thèng ghi lại ghi đến số 9 thì ngưng không hít nữa.

    Trong quá trình thực hiện hít đất thì có những chuyện khác xảy ra:
    {
    list = i+1;
    }

    Vậy thôi.

    Mấy cái sau thuộc về Toán học, giải thích hết mớ đó thì có mà đến sáng mai. Thôi chú tự dịch đi.
     
  8. >VoDich<

    >VoDich< Legend of Zelda

    Tham gia ngày:
    26/1/05
    Bài viết:
    919
    Nơi ở:
    Can Tho
    còn mấy cái dưới, ko ai giải thích dùm à, mau đi mấy đại ca ơi, làm ơn nhanh cho em nhờ :D, dịch rùi nhưng đọc ko hiểu mới chết, được cái nào hay cái đó đi huynh
     
  9. longakka

    longakka Đầu gấu nhà quê Lão Làng GVN

    Tham gia ngày:
    3/9/02
    Bài viết:
    3,011
    Nơi ở:
    Scumm Bar
    abs -> lấy giá trị tuyệt đối của x
    sign -> lấy dấu của x
    round -> làm tròn
    ựa :-&
    zubachi nói quá đúng, làm xong đống này chit cha lun
    ^:)^ tự dịch đi, kêu là ở bên aus mà không biết tiếng Anh à ^:)^
     
  10. SVS

    SVS Mario & Luigi

    Tham gia ngày:
    27/6/03
    Bài viết:
    899
    Nơi ở:
    Graveyard of rusted uses
    Mà ông VD đã học lập trình chút nào chưa đấy? Nếu chưa thì đi học đi là hiểu được 90% liền. (hình như là ông khoe ông có thể viết code thì phải! thế thì chắc là cố tình hỏi để sparm rồi!)
     
  11. longakka

    longakka Đầu gấu nhà quê Lão Làng GVN

    Tham gia ngày:
    3/9/02
    Bài viết:
    3,011
    Nơi ở:
    Scumm Bar
    Cũng là tạo điều kiện để cho anh em spam ;))
    Thế mờ đã có mấy chú vào rồi đấy :))
     
  12. >VoDich<

    >VoDich< Legend of Zelda

    Tham gia ngày:
    26/1/05
    Bài viết:
    919
    Nơi ở:
    Can Tho
    dạ em còn dở lắm đâu dám khoe khoang gì mấy anh làm ơn giải thích dùm em lệnh if then else được ko hu hu em ko biết gì hết còn mấy cái này nữa
    for (<statement1> ; <expression> ;<statement2>) <statement3>

    ex:
    {
    for (i=0; i<=9; i+=1) list = i+1;
    }

    anh giải thích cặn kẽ cái nì được ko, nó có nói sơ wa mà đọc ko hiểu. có mấy cái em hiểu rùi nhưng tiện thể post lun, nhờ anh đấy
    random(x) Returns a random real number between 0 and x. The number is always smaller than x.
    abs(x) Returns the absolute value of x.
    sign(x) Returns the sign of x (-1, 0 or 1).
    round(x) Returns x rounded to the nearest integer.
    floor(x) Returns the floor of x, that is, x rounded down to an integer.
    ceil(x) Returns the ceiling of x, that is, x rounded up to an integer.
    frac(x) Returns the fractional part of x, that is, the part behind the decimal dot.
    sqrt(x) Returns the square root of x. x must be non-negative.
    sqr(x) Returns x*x.
    power(x,n) Returns x to the power n.
    exp(x) Returns e to the power x.
    ln(x) Returns the natural logarithm of x.
    log2(x) Returns the log base 2 of x.
    log10(x) Returns the log base 10 of x.
    logn(n,x) Returns the log base n of x.
    sin(x) Returns the sine of x (x in radians).
    cos(x) Returns the cosine of x (x in radians).
    tan(x) Returns the tangent of x (x in radians).
    arcsin(x) Returns the inverse sine of x.
    arccos(x) Returns the inverse cosine of x.
    arctan(x) Returns the inverse tangent of x.
    arctan2(y,x) Calculates arctan(Y/X), and returns an angle in the correct quadrant.
    degtorad(x) Converts degrees to radians.
    radtodeg(x) Converts radians to degrees.
    min(val1,val2,val3,...) Returns the minimum of the values. The function can have up to 16 arguments. They must either be all real or all strings.
    max(val1,val2,val3,...) Returns the maximum of the values. The function can have up to 16 arguments. They must either be all real or all strings.
    mean(val1,val2,val3,...) Returns the average of the values. The function can have up to 16 arguments. They must all be real values.
    point_distance(x1,y1,x2,y2) Returns the distance between point (x1,y1) and point (x2,y2).
    point_direction(x1,y1,x2,y2) Returns the direction from point (x1,y1) toward point (x2,y2) in degrees.
    lengthdir_x(len,dir) Returns the horizontal x-component of the vector determined by the indicated length and direction.
    lengthdir_y(len,dir) Returns the vertical y-component of the vector determined by the indicated length and direction.
    is_real(x) Returns whether x is a real value (as opposed to a string).
    is_string(x) Returns whether x is a string (as opposed to a real value).
     
  13. ipridian_elf

    ipridian_elf Voyage perdu

    Tham gia ngày:
    19/3/03
    Bài viết:
    5,678
    Nơi ở:
    Earth
    Ken đang lùng topic trừ MP cho mấy người post bài dài dài như Vo Dich :))
     
  14. congchuahocsinh

    congchuahocsinh Dragon Quest

    Tham gia ngày:
    7/11/04
    Bài viết:
    1,275
    Nơi ở:
    Paris, France
    T__T thì tại vì VĐ quá đáng mà....T__T.. tui thế là tui die cho hết nói luôn... ken sao hiền dễ sợ zậy...
    huh... mà topic này sáo quá, cchs ra luôn.
     
  15. >VoDich<

    >VoDich< Legend of Zelda

    Tham gia ngày:
    26/1/05
    Bài viết:
    919
    Nơi ở:
    Can Tho
    trời ơi, ko biết mới hỏi mà trời, trời ngó xuống mà coi ông ken10 bạo ngược nà, ko biết hỏi cũng ko cho, viết bài dài cũng chém, ngắn cũng chém, nói chúng ngắn dài hay dở ổng chém tuốt. hic hic hic hic
    mà sao 2 tuần mới hết 1 cảnh cáo, bên muonline bị chém có 1 tuần là hết à,
     
  16. ipridian_elf

    ipridian_elf Voyage perdu

    Tham gia ngày:
    19/3/03
    Bài viết:
    5,678
    Nơi ở:
    Earth
    :)):)) .. bên MUOnline bị chém 1 tuần là hết là 1 tuần không được dùng nick, 7 ngày sau nó thả .. thích vậy thì kêu ken chém thêm 1 phát là đủ để bị GOV 7 ngày :))
    Đây là ken chém 2 phát nhưng mà vẫn còn để cho đường sống, tức là trong 2 tuần kia thì vẫn vào gamevn post bài được. Tức là ken vẫn còn hiền hơn máy chém bên đó :p
     
  17. >VoDich<

    >VoDich< Legend of Zelda

    Tham gia ngày:
    26/1/05
    Bài viết:
    919
    Nơi ở:
    Can Tho
    ai nói thế nó chém 1 nhát nhưng tui vẫn vào nick đó được mà, chắc lộn box nèo rùi
    phải ken10 hiền ghê lun ha ha ha, hiền như quỉ sa tăng vậy đoá
     
  18. finallegend

    finallegend Mr & Ms Pac-Man

    Tham gia ngày:
    31/12/04
    Bài viết:
    221
    Nơi ở:
    finallegend story
    Ken 10 cho hỏi một cái ,muồn chuyển một game từ vt qua hệ chuyên dung thì phải làm sao (ps2 chẳng hạn.)
    Cơ hội làm việc tại gameslost .công ti game của pháp.

    GFX 2D “BASIC” GAMELOFT TEST




    1) CREATING A “SEAL” SPRITE IN ISOMETRIC VIEW:

    Here is a 3D counter-strike “SEAL” character:




    The goal of this test is to create an isometric “sprite” of 32X32 pixels and in 16 colors, drawing inspiration from the above character ONLY for the general appearance. The lines must be clear, with each pixel in its place, and this should not be a reduction of a Photoshop drawing, with anti-alias (looking like a small photo).

    Mục đích của phần test này là tạo ra một isometric “sprite”, kích cỡ 32 x 32 pixels, 16 màu; CHỈ lấy cảm hứng từ nhân vật trên đây để xây dựng diện mạo chung cho nhân vật của bạn. Nét vẽ phải rõ ràng, với từng pixel đúng vị trí; và không nên là hình được thu giảm bằng Photoshop với anti-alias (trông giống một hình thu nhỏ).


    You should particularly accentuate the effects of perspective (isometric view) and relief (light, contrast). The sprite should appear to be in relief, with a clean, darker outline (like most video game sprites). The colors should be fresh and fairly saturated. The goal of this test is also to make a “cute” and rather sweet character, with a fairly large head, as in the following example:


    Bạn nên đặc biệt nhấn mạnh hiệu ứng phối cảnh (theo góc độ isometric) và phần làm nổi bật (ánh sáng, sự tương phản). “Sprite” phải nổi bật, với đường viền ngoài sắc sảo và đậm nét (giống như hầu hết các sprite trong video game). Màu sắc phải tươi và ít hòa màu trắng. Ngoài ra, mục tiêu của phần test này cũng nhằm tạo ra một nhân vật linh hoạt và khá dễ thương, có cái đầu khá to giống như ví dụ sau đây:






    2) RACE ANIMATION:

    When you have created the sprite with pixels, you must produce a short race animation, using the same character. This time, the isometric view is not necessary. You can represent the character in profile. The number of animation frames is limited to 6. In the end, you should have an animated gif of 32X32 pixels, still in 16 colors. The animation should loop round on itself.

    Khi bạn đã tạo ra phần sprite có pixels rồi, thì việc kế tiếp là tạo ra 1 hình chuyển động chạy khoảng cách ngắn, sử dụng cùng một nhân vật trên. Lần này thì góc độ isometric không cần thiết. Bạn có thể hiển thị nhân vật theo mặt nghiêng. Số lượng khung (frame) chuyển động tối đa là 6 khung. Kết quả cuối cùng bạn nên có là 1 hình động dạng GIF, kích cỡ 32 x 32 pixels, vẫn với 16 màu. Vật thể sẽ chuyển động lặp đi lặp lại không ngừng.

    3) DRAWN ILLUSTRATION:


    Create an illustration of a female Amazon warrior (pencil sketch in color or black-and-white) >> This must not be a static view. She should be in a guarding position or in action. She should also be very sexy (to be submitted in .jpg format) troop.

    Bạn hãy vẽ tranh minh họa một nữ chiến binh Amazon (nữ chiến binh trong truyện cổ), vẽ bằng bút chì, màu hoặc trắng đen. Hình vẽ này không nên đặt trong góc nhìn tĩnh. Nhân vật này nên được vẽ trong tư thế phòng thủ hoặc đang làm nhiệm vụ nào đó. Nữ chiến binh này trông phải gợi cảm (format dưới dạng .jpg).



    4) CREATING A LOGO:

    Produce a rough draft “SEAL FORCE” logo (pencil sketch), then create a color pixel presentation (like the sprite, with no anti-alias, etc.) of around 100X50 pixels.

    Bạn hãy phác thảo logo của “SEAL FORCE” (seal force: binh lính đặc công) bằng viết chì. Sau đó, bạn tạo ra 1 bản vẽ pixel màu (tương tự như “sprite” của phần 1, không có anti-alias, v.v...) với kích thước khoảng 100 x 50 pixels.


    ALL WORK SHOULD BE SUBMITTED IN BMP OR GIF format (except the rough logo and the Amazon illustration which should be in jpg format of any size).

    Tất cả kết quả phải được format dạng BMP hoặc GIF (ngoại trừ logo và hình nữ chiến binh Amazon được format dạng JPG với kích thước tùy ý).


    Thanks, and good luck! 
    Cám ơn nhiều và chúc bạn may mắn!

    Đăy là bài test để được nhận vào làm ,lương khá cao đó.
     
  19. longakka

    longakka Đầu gấu nhà quê Lão Làng GVN

    Tham gia ngày:
    3/9/02
    Bài viết:
    3,011
    Nơi ở:
    Scumm Bar
    finallengend <- kiếm cái ps2 development kit về coi, chẳng có cách nào khác phải ngồi port từng dòng lệnh <- trên lý thuyết
    Cái gameloft ( chứ không phải gamelost ) là com phát triển chuyên nghiệp cho mobile <- ông nào muốn vào phải nghĩ đấy :D
     

Chia sẻ trang này