VC++,VC++.NET, VC# cái nào viết game ngon nhất nhỉ?

Thảo luận trong 'Game Development' bắt đầu bởi nguyencaophuong, 9/12/05.

  1. padkids

    padkids Youtube Master Race

    Tham gia ngày:
    17/1/04
    Bài viết:
    59
    Xin lỗi tui hơi nóng tính
    Thằng whew mà trả lời như vậy gọi là BADIT ặc ặc

    Ặc ặc.
    Học pascal chưa cha nội ?
    Thi Olympic hay thi quốc gia chưa cha nội ?
    Kô bít thì đừng nói nha .
    Vậy tui hỏi cha :
    Khi cha lập trình Games thì làm sao để rút gọn được chương trình và rút gọn ô nhớ ?
    Làm sao để hoàn thiện chương trình cho khả quan nhất?
    Làm sao để chương trình của mình chạy ngon nhứt ?
    Làm sao để khai báo class hay namespace cho phù hợp tránh lãng phí bộ nhớ?
    Vậy ông không tính toán và suy nghĩ ư ? Ặc ặc .
    Khi nào ông thi quốc gia thì mới biết thuật toán quan trọng thế nào ?

    Chuyển ngôn ngữ không khó chỉ khó là ông đọc ngôn ngữ này kô hiểu ý của người ta viết :D.
    Lập forum thì có gì là khó chủ yếu là Design.

    Tui có vài đóng góp nho nhỏ vậy thui :D . Xin pác thứ lỗi :D . Em cũng mới là NewBie
     
  2. whew

    whew Youtube Master Race

    Tham gia ngày:
    19/11/05
    Bài viết:
    6
    Chắc bác padkids là người chuyên HỌC ĐỂ THI.

    Tôi đã từng hân hạnh được học chung cùng 3 người đoạt giải 3 tin học Quốc Gia và quen thêm 1 người giải nhì và 1 người giải Ba nữa. Nhưng trong số đó, cuối cùng chỉ tồn tại có một người là đủ tư cách để trở thành 1 chuyên viên lập trình (xin nhấn mạnh chuyên viên chứ không phải là công nhân).

    Mấy bài thuật toán quy hoạch động hay mấy bài toán kiểu nhân số cực lớn bằng chương trình Turbo Pascal tôi cũng đã từng bị bắt phải làm (Bài tập lớn môn thiết kế giải thuật). Cũng nói thêm rằng giải thuật của tôi so với mấy người bạn mà tôi nói tới thì chậm gấp đôi nhưng để nghĩ ra giải thuật, tôi chẳng phải hao tâm khổ tứ gì cả. Điều này trong nhà trường thì giúp tôi được cái nhàn, nhưng ra ngoài đời thì đó là đầu tư hiệu quả bởi chi phí lương cho một chuyên viên bao giờ cũng đắt gấp nhiều lần so với chi phí cho một anh công nhân. Khi một anh công nhân có thể tự mình nghĩ ra một thuật giải có thể giải quyết được một vấn đề tuy rằng đó không phải là một giải thuật tối ưu thì dĩ nhiên không ai lại chi phí để mời một chuyên gia để tăng tốc cho chương trình.

    Cũng về việc thi, người Việt ta thi gì cũng tài, từ toán, lí, hóa cho đến cả tin học, thậm chí Robocon nhưng cuối cùng thì các viện khoa học của ta, ai cũng biết, hầu như không có tên tuổi trên thế giới. Nền tin học thì ai cũng biết thực trạng ra sao.

    Học một ngôn ngữ mới thì không khó, cái chính là sử dụng thành thạo nó mới là một vấn đề. Sử dụng một ngôn ngữ mà suốt ngày phải giở tài liệu để tra cứu các hàm thì đó chưa phải là biết sử dụng ngôn ngữ đó. Đây là một vấn đề hết sức quan trọng vì khách hàng không cho người lập trình thời gian để học một ngôn ngữ mới. Vì vậy ở các công ty, thường có các đội chuyên về một số ngôn ngữ lập trình nào đó, khi thiếu nhân lực cho một dự án nào đó thì ít khi chọn giải pháp đào tạo mà thường thuê hoặc tuyển thêm nhân lực cho dự án đó.
    ================================================

    Xin có một câu đố nho nhỏ:

    Bạn hãy phân biệt 3 khái niệm: Ngôn ngữ lập trình, Giao diện lập trình (không phải là giao diện chương trình), Môi trường phát triển. Hãy ứng dụng để làm rõ trong bộ Visual Studio.NET thì các thành phần nào tương ứng với từng khái niệm đó.

    =====================================================
    Riêng bác padkids, tôi không phải chuyên viên lập trình cũng không phải chuyên gia lí thuyết như bác nên chào thua các câu hỏi của bác, còn bác không biết thi quốc gia chưa, nếu đã có tự tin thì xin mời giải đáp các câu hỏi:

    Thế nào là class, một class có những thành phần bắt buộc và những thành phần khuyên có nào? Cho biết mối tương quan giữa các khái niệm object, class, namespace.

    Tại sao .NET và Java lại loại bỏ đa thừa kế? Họ đã thay thế bằng phương thức gì?

    Thế nào là mô hình request/respon (yêu cầu/trả lời) và mô hình event/driven (sự kiện/đáp ứng) trong mô hình client/server.

    Hãy nêu phương thức mã hóa (kiểu khóa) mà SSL sử dụng.
     
  3. taychoiboi3

    taychoiboi3 Youtube Master Race

    Tham gia ngày:
    5/5/06
    Bài viết:
    3
    Topic này là để người ta luộc ngô luộc khoai hay sao mà đau đầu thế.Không biết các bác đã làm được cái gì chưa mà to mồm này nọ thế.
    Các bác cứ up sản phẩm của các bác lên là biết tay nhau cần gì phải thuật toán,ngôn ngữ gì cho thêm đau đầu.
    @ to Whew anh giai dạy em món .Net với :D
     
  4. lamtacla

    lamtacla Donkey Kong

    Tham gia ngày:
    24/10/04
    Bài viết:
    340
    Nơi ở:
    City 17
    Chắc bác Padkids còn là học sinh hay sinh viên năm nhất.
    Thực tế là làm việc nó khác học trong trường khá nhiều, tùy theo nhận định của mỗi người mà cái nào quan trọng hơn.
    Có lẽ vấn đề ngôn ngữ và thuật toán - cái nào quan trọng hơn - khó mà so sánh, vì nó là 2 lĩnh vực khác nhau. Cả hai đều cần thiết để giải quyết một bài toán.

    Còn bạn nói chuyển ngôn ngữ chẳng có gì khó thì chắc là chưa chuyển ngữ lần nào, hoặc là chỉ mới chuyển bài giải ptb2 từ pascal sang c++ :;) .

    Quay lại vấn đề chính để khỏi lạc đề nhé, theo tui:
    + Viết game nhỏ thì xài NN nào cũng được, pascal, C# hay VB đều làm tốt.
    + Viết game mobile thì xài java hay C++ tương đương nhau.
    + Viết game lớn chạy trên Windows thì có lẽ phải xài C++.
     
  5. root1984

    root1984 King of the Elf

    Tham gia ngày:
    29/7/03
    Bài viết:
    1,120
    Nơi ở:
    Hà Nội
    Đoạn này không hiểu sao mà tương đương được. Java là Multiplatform. Còn C++ đâu có như vậy. Viết game mobile dùng JAVA thì tốt hơn chứ.

    Mình cũng đã thi OLP tin học toàn quốc. Thuật toán cũng rất quan trọng nhưng để làm ra 1 phần mềm đâu chỉ có thuật toán. (thậm chí nó chỉ chiếm 1 phần rất nhỏ thôi). Hầu hết các phầm mềm sử dụng kế thừa thuật toán từ toán là chủ yếu chứ có mấy ai ở VN này nghĩ ra thuật toán gì mới đâu.
     
  6. tutukun

    tutukun Mario & Luigi

    Tham gia ngày:
    15/2/05
    Bài viết:
    749
    Nơi ở:
    Singapore
    c++ dùng để viết cho Sybian :P
     
  7. lamtacla

    lamtacla Donkey Kong

    Tham gia ngày:
    24/10/04
    Bài viết:
    340
    Nơi ở:
    City 17
    Uhm, số game viết bằng C++ chạy trên Symbian cũng ko ít đâu.
    Tuy viết bằng j2me dễ hơn, chạy trên nhìu máy hơn, nhưng có lẽ viết bằng C++ có lẽ được những game hay hơn, vì nó can thiệp được điện thoại nhiều hơn mà. Cái này tui cũng ko dám chắc, vì có cảm tình với C hơn thui :D
    Một game hay không những phải có thuật toán tốt mà còn phải thiết kế mỹ thuật đẹp, âm thanh hay nữa.
    NNLT chỉ là công cụ thui, dùng C++ để code - cũng gần gần như photoshop để thiết kế nhân vật.
    VN mình sao chưa thấy ai phát minh một thuật toán nào nổi tiếng nhỉ?
    Còn một số thuật toán nhỏ thì ai code mà chẳng xài? Ta làm một game, AI game do ta tự nghĩ ra, thuật toán ta cũng tự nghĩ ra, tuy ko hay lắm nhưng vẫn xài được, chắc là có chứ nhỉ?
     
  8. root1984

    root1984 King of the Elf

    Tham gia ngày:
    29/7/03
    Bài viết:
    1,120
    Nơi ở:
    Hà Nội
    Ý mình là các thuật toán kinh điển có tốc độ thực hiện cao. Còn những giải pháp lập trình của chúng ta hoặc là dựa vào các thuật toán kinh điển hoặc chỉ mang tính kỹ thuật là chủ yếu. Ở đây có ai đọc hết 7 cuốn Art of computer Programming chưa nhỉ. BG có nói sẵn sàng nhận bạn vào làm việc cho Microsoft nếu bạn đọc hết 7 cuốn đó. :D Xin thua.
     
  9. ZeroCrazy

    ZeroCrazy T.E.T.Я.I.S

    Tham gia ngày:
    8/4/06
    Bài viết:
    516
    Nơi ở:
    hỏi làm chi ?
    Thời gian viết code chỉ bằng 1 nửa so với C++.
    Performance nhanh hơn C++.
    Chỉ có thể là C#.. he he
     
  10. lamtacla

    lamtacla Donkey Kong

    Tham gia ngày:
    24/10/04
    Bài viết:
    340
    Nơi ở:
    City 17
    Cái này nghe lạ à nha :-?
     
  11. buonnguqua

    buonnguqua Bị anh Tày dộng chày vào họng GameOver Lão Làng GVN

    Tham gia ngày:
    6/2/06
    Bài viết:
    8,266
    Nơi ở:
    Hà Nội City
    [quote từ như trên]
    Không biết lập trình nhưng nghe cũng hơi lạ ,
    MS cũng chưa hề thấy nói thế
    Phong Shading , nổi tiếng như cồn
     
  12. ZeroCrazy

    ZeroCrazy T.E.T.Я.I.S

    Tham gia ngày:
    8/4/06
    Bài viết:
    516
    Nơi ở:
    hỏi làm chi ?
    Ha ha..Chuyện này ngộ cũng mới biết thôi. Nghe các bác bàn tán
    Test 1:Chạy 3 vòng lặp
     
  13. ZeroCrazy

    ZeroCrazy T.E.T.Я.I.S

    Tham gia ngày:
    8/4/06
    Bài viết:
    516
    Nơi ở:
    hỏi làm chi ?
    Sorry... sorry
    Dạo này bận chuyện thi cử nên mình chỉ làm vài test đơn giản.
    Cấu hình thử nghiệm:
    Athlon XP 2500+ 512MB
    Window Xp SP2
    Víual studio 2005
    .NET Framework 2.0
    +Test 1:Chạy 3 vòng lặp
    C++:25s
    C# : 34s
    +Test 2:call method.
    Program: tính số fibonacci bằng đệ qui
    C++ 42s
    C# 12s
    +Test 3:Array
    Program: bubble sort
    C++ 16.8s
    C# 16.3s
    +Test 4: Math
    Program: tính sin ,cos,tan,căn..
    C++ 17s
    C# 12s
    +Test 5: render 1 tam giác bằng sortware
    C++ 69s
    C# 69s
    -Nhận xét:C++ chạy vòng lặp khá nhanh . C# vẫn thắng test 3 dù bubble sort chạy nhiều vòng lặp và phải gánh thêm phần bắt ngoại lệ. Các test còn lại thì C++ chỉ từ bằng đến thua. Không chỉ có thế, C# cấp phát thu hồi bộ nhớ cực nhanh, giống như việc đổ rác vậy,thay vì phải đổ từng bao rác 1 , ta gom chúng lại và dọn sạch chúng.Quá tiện..ha ha
    -Sở dĩ C# chạy nhanh hơn là vì no sử dụng kĩ thuật biên dịch trong thời gian chạy.Nhờ vậy nó biết khi nào sử dung 3DNow khi nào sử dụng SSE2. Chương trình của bạn cũng có thể lướt như bay trên con Athlon XP64.
    -Thật ra C# không phải là nhanh nhất .Thằng Managed C++ còn nhanh hơn nữa kia nhưng không được hưởng ứng vì code nó quá xấu. Bạn nào có máy 64 bit thử làm vài test cho anh em coi nhé.
     
  14. lamtacla

    lamtacla Donkey Kong

    Tham gia ngày:
    24/10/04
    Bài viết:
    340
    Nơi ở:
    City 17
    Biết xài tập lệnh SSE2 & 3DNow là trùm rùi... thay vì gọi nhiều lịnh ở cpu khác thì chỉ cần một lịnh ở cpu sse2 thui.
    "Kỹ thuật biên dịch trong thời gian chạy": ko hiểu là gì, vừa biên dịch vừa chạy phải chậm hơn biên dịch trước ra mã máy rùi chạy chứ nhỉ ???
     
  15. tutukun

    tutukun Mario & Luigi

    Tham gia ngày:
    15/2/05
    Bài viết:
    749
    Nơi ở:
    Singapore
    kỹ thuật dịch trong thời gian chạy? ý bác nói là interpreter à? dịch dòng nào chạy luôn dòng ấy
     
  16. ZeroCrazy

    ZeroCrazy T.E.T.Я.I.S

    Tham gia ngày:
    8/4/06
    Bài viết:
    516
    Nơi ở:
    hỏi làm chi ?
    Đúng thế, nếu có 1 chương trình mà mỗi hàm chỉ chạy 1 lần duy nhất thì C# chạy chậm hơn C++ nhiều. Nhưng MS nó có bộ biên dịch thành file native code, thường được dùng tăng tốc độ load form, gọi là precompile, cái này mình cũng chưa thử.
     
  17. lamtacla

    lamtacla Donkey Kong

    Tham gia ngày:
    24/10/04
    Bài viết:
    340
    Nơi ở:
    City 17
    Tui cũng ko hiểu lắm về cái native code này. Ai giải thích giùm cơ chế hoạt động được ko?
    Nhưng theo tui nghĩ: native code lúc nào cũng chậm hơn bytecode chứ nhỉ? Khi thực thi native code phải qua trung gian - còn thằng bytecode chạy trực tiếp. Thằng chạy phải thông qua trung gian làm sao nhanh bằng trực tiếp được.
    C# tui ko chuyên nên cũng ko rành lắm, chứ VB và java - tốc độ 2 thằng native code này chưa bao giờ qua được C++, nếu có nhanh hơn thì có lẽ trình độ người viết C++ yếu wá thui :D
     
  18. ZeroCrazy

    ZeroCrazy T.E.T.Я.I.S

    Tham gia ngày:
    8/4/06
    Bài viết:
    516
    Nơi ở:
    hỏi làm chi ?
    -Bác lamtacla nghe rõ đây : Native code là mã máy.
    -Java dùng mã trung gian là Byte code, còn các ngôn ngữ .NET dùng managed code.
    -Khi chạy thì byte code hay managed code đều phải dịch sang native code. Chương trình nào dịch mã tốt hơn thì sẽ chạy nhanh hơn thui.
    -C# chạy trong môi trường CLR (common language runtime), chương trình biên dịch của nó là JIT (Just in time).
    -Dịch trước (precompile) hay dịch khi chạy (just in time compile) tốt hơn là tùy theo trường hợp. Theo microsoft thì dịch trước chạy nhanh trong vài trường hợp như load form, hình như trong Visual studio cũng không có chức năng precompile thì phải. Dịch khi chạy không làm giảm tốc độ bởi vì đoạn mã dịch xong sẽ lưu vào bộ nhớ khi cần có thể đọc lại.
    -Tui cũng khẳng định luôn là dù không có 3DNow hay SSE thì C# vẫn nhanh hơn C++ viết bằng native code. Cho 1 ví dụ:

    int add(int a, int b)
    {
    return a + b;
    }
    ....
    z = add(x, y);
    ....

    -Câu hỏi là C++ và C#, cái nào chạy hàm add nhanh hơn.Các bác chắc sẽ chọn C++ vì C# phải ghánh cái máy ảo, còn cái nào thì chả return a+b. Nhiều dân pro cho rằng các ngôn ngữ hoạt động giống nhau. Thực tế là C# trong trường hợp này chạy nhanh gấp 3 lần C++ vì C# chỉ mất 2-5 clock để gọi hàm còn C++ mất cả chục clock. Các phương thức gọi hàm, truy xuất, tham chiếu trong CLR khác với các phương thức truyền thống, trong CLR có thể gọi phương thức ảo nhanh như gọi hàm static, get field chỉ mất 1 clock ...
    -Theo nhận xét của tui, mã native của C# đẹp không thua gì tự mình viết bằng assembly.
    -Tui chỉ nói đến đó. Bác lamtacla muốn biết JIT hoạt động thế nào có thể tìm trong MDSN của Visual studio 2005 mục .NET Development -> Articles and Overeviews -> .NET Framework deployment -> .NET general -> JIT and run và Writing faster managed code.
    -Hay vô tranghttp://msdn.microsoft.com/library/
    Mục .NET Development -> Articles and Overeviews -> .NET general -> JIT and run .
     
  19. lamtacla

    lamtacla Donkey Kong

    Tham gia ngày:
    24/10/04
    Bài viết:
    340
    Nơi ở:
    City 17
    Right, hix, tui nhầm 2 cái này tên hồi đó giờ. :'> :'> :'> =((
    Còn cái byte code hay cái managed code cũng y nhau thui. Chạy qua máy ảo.
    Ặc, nghe bác giải thích vẫn ko hiểu nỗi sao mà C# chỉ xài 5 clock cho cái hàm trên.
    Phải đọc thêm thui, hix =((
     
  20. anhchanghaudau

    anhchanghaudau Youtube Master Race

    Tham gia ngày:
    25/2/06
    Bài viết:
    51
    bà con nào cho mình hỏi VB.NET và C# cái nào tốt hơn???
     

Chia sẻ trang này