The VB.NET Game Programming Resource for YOU
  vbProgramming Home :: vbProgramming Forums :: Tutorials :: Contact :: Links 

Welcome To vbProgramming.8k.com. This site is meant for people who want to learn Visual Basic. NET. Tutorials on this site start from scratch. The focus of this site is "Game Programming" with VB. NET, although the topics discussed on this site can be applied to any area of Visual Basic .NET
You can also visit vbProgramming Forums to get your questions answered. If you would like to submit a tutorial, please post it on the forum!


July 16
ANNOUNCMENT -- vbProgrammers: Please read.
I'm not gone yet :). I decided to take a look back at this site again and reexamined the reasons for its creation.

It's all about giving back to the community. Information exchange is crucial in this world, and without it we woudln't progress. As programmers, we learn from our masters and our peers. Beginner programmers are guided by more experienced programmers (or resources they've created, such as articles, books, or websites). As these new programmers get more experienced, it becomes their duty to give rise to the inexperienced programmers. The cycle continues...

A month ago I decided to write a book, "Learning Visual Basic.NET - The Game Programmer's Path." The book uses the website's tried-and-true trial and error method of teaching. It quickly introduces the reader to Visual Basic.NET and progresses through game development. It begins with simple games such as tic-tac-toe, pong, checkers, tetris, brickout, demonstrating the development process and game loops. Then, the book moves onwards to introduce AI with games such as pacman, and space shooters. Advanced scrolling and level-creation is introduced with a game similar to Mario. Complicated event-driven concepts such as information storage (character stats, inventory, etc), optimization, etc. are introduced in a mini RPG. I haven't decided yet whether or not a section on 3D will be introduced or not.

Here's the dillemma I'm facing. Information exchange is meant to be free, right? Right. Well the flip side of the coin is: If I wrote this book I'd make profit, and have a major ++ on my college application. Problem is, books take months to write. I'm up for it, however.

Well, going back to the Information = Free idea. If I made a WikiBook (www.wikibooks.org) would anyone contribute? A WikiBook is an open-source book which anyone is free to edit (and features a History system that allows an article to be reverted to a previous version if it gets messed up). The key to such a project is a large fanbase, as you'd have many users submitting small bits of content at a time, which amounts to something. It's a shame, really - last summer (when I was constantly updating the site) if I launched the project I might have gotten this project rolling along quite smoothly.

I need some suggestions, please post your thoughts here.

August 11
Check out the Introduction to 3D Transformations tutorial. You'll make a very basic 3rd person camera, but we'll retune and refine this in a 'proper' 3rd person camera tutorial.

Next tutorial should be a Networking tutorial, and yes I'll include some information about port forwarding and you'll be able to talk to some of your buddies online.

For DirectX people there'll be a DirectInput tutorial, although it'll be short because it's a "set it and forget it" tutorial.

Any new ideas for tutorials? - Post on the forums if you've got ideas. I'm thinking of a Scripting (or Text Reading, for conversations with people) tutorial for the RPG Programming Tutorial Series. I'll have to work on that though... I did discover some sweet code while I was in India claiming that VB.NET has its own code parsing thing, so we don't have to invent our own scripting language :). We'll have to see though.

July 28
Got back from vacation (India) yesterday - it was super hot there, heh.

I typed up an Optimizations tutorial for the RPG Programming Series - check it out. I hope I wasn't being
too brief, I typed this up while still being in jetlag mode :)

Next up is a Direct3D tutorial. Introduction to 3D Transformations. You'll learn some basic trig (so don't worry if you don't have previous experience, and we'll program a camera class.

For you impatient folks, I've uploaded a class diagram for the Introduction to Direct3D Transformations onto the vbProgramming forums. It's basically just a scanned paper that shows how I thought about making a Camera (transformations) class - and I finished programming it in a few hours (successfully) too: Pencil and paper owns! I cannot even stress how useful pencil and paper is for mapping out your classes and methods, especially this camera class. Jumping right to code is probably not always a good idea :). Anyways, if you want to check out the class diagram: I beleive it's in the Math section, in a post called "FPS Camera" of vbProgramming forums.

Guess what networking folks? Next up is your turn. I'll have a Global TCP Chat tutorial out. I've begun experimenting with stuff and it works pretty well, and it supports basic commands such as /logout and all. Hmm, who knows? Maybe in the future this will be turned into the "Official vbProgrammer Chat Program" where all us vbProgrammers can get together and start chatting ;). Gotta love this place.

Uh.... I do have some bad news. The site redesign is being delayed >_<. I'm not very creative at all, haha. I'll get to it later, I'm taking web design in school this year (I might fail the course beacause of lack of creativity, color, and graphics) -> so hopefully I'll learn a few CSS tricks here and there.

June 09
Back on track with a hot new tutorial - check out the Advanced Calculator tutorial. I originally programmed this in Java for a final in school.... now I turned it into a tutorial I guess (Hey SJ people, no cheating! You can't take this code and convert to java and turn it in as your final!!!).

Anyways, you'll get to learn how to make a calculator that does this (all in 1 line)
1 / Sin (90 * Cos (30 + Tan (3) / 2 ^ 2))
and give you the correct answer!

I'll be out for about a month due to summer vacation, by then I'll probably have my new site all good to go, thanks to Adam Coimbra for help with some insane graphics and layout!

May 29
Check out the new Direct3D tutorial: Loading A Mesh. You'll learn how to load a 3D Model and rotate it. Probably the most interesting tutorial yet in the Direct3D series. To move on in the RPG Programming Series, I have to release the API tutorials, which is what I'm doing next.

Quick update. Someone (who wished to remain anonymous) requested that I should put images for each tutorial showing what you accomplish. Great idea! This is generally what makes me angry when I go to other sites, and all I see is code... not the end result. I'll start working on that right away! Keep the suggestions coming guys.

My quest for finding a host has officially ended! I found a host that gives me 450 TERABYTES of space!
Thanks to Samm for telling me about this =D. No ads, no popups.

Although I'm in a slight dillemma. That host doesn't give me a domain name, which is fine. I'm not too sure what to do though. Should I opt for a .TK domain redirect? Any other alternatives? Also, how should I get the word out that this site is "old"? I mean, should I go around changing all my tutorials and say "This is the old site, go here for the new one"?

Guys, please post on the forum and let me know what to do. Meanwhile, I'm learning CSS .... heh. Yes, the site will look so much better than this one, I'll guarantee you that. Thanks to Adam Coimbra for helping me out with some of the images (sorry, I'm not very creative when it comes to art... or anything for that matter: this is why I like code. More concrete).

The new site will be unveiled once I finish converting all the tutorials to the new format.

May 06
Whoops. Sorry about not updating you concerning why I've been out. Well, to cut the story short, I was preparing for the APMEH (Advanced Placement Modern European History exam) - which I actually took today (and did ok - my brain is not exactly working right now... I wrote 3 pages on how Russian Communism didn't live up to the expectations of Karl Marx, and a couple other essays), and my final exams (which I'm taking in a few weeks).

Well, I have a tutorial for you guys - "Direct3D.Sprite" - good stuff.

Future Plans:
I ought to start 3D in Direct3D, however, being a High School Sophomore my math isn't all that great. Heh - any help with the "Technical" details will be appreciated. All I can do is give you a basic understanding with some working source code - I'd really be happy if someone took the time to explain it in depth. I'm not exactly sure what I'm going to release next in the 3D tutorial.... possibly just an introduction to 3D and correct Matrix settings (it's not too difficult, despite how it sounds). And after that, a "Loading a 3D Character" tutorial for sure - now that'll be fun. The issue I'll definately run into is definitely when I get to "Programming a Camera" - this is where my math will fail me. Never fear though, I'm reading (right now actually) through a bunch of books, mapping out stuff on paper and trying to figure out how things work, through my crappy limited knowledge of sin and cos - I'll get it one day.

Meh, Networking isn't looking too well though.  Unfortunately I don't have internet in my room (long story) so it's quite difficult.

I'm actually not very sure what to do concerning the RPG Programming Tutorial Series. I haven't programmed in so long that I completely forgot where I left off. I remember planning on doing something for the next one in the series. I think it was something about (hint hint hint) "Dialogue Scripting". To do that, I'll have to introduce the API tutorial section, as we'll be using INI files (good stuff).
Still dunno though, I gotta take a look at my code again, been a while.

That's all for the updates.

March 10
Well as some of you know, my CPU overheated. Fortunately I ordered a heatsink (Zalman 7700-AlCu) and fixed all my problems (it's a very long story, cut short).

Now I understand that there's been a problem recently about the source for the RPG Programming Series not working. I couldn't upload this source to the forum (size limit), so FadiXP said he would host it for me. If you're reading this, thanks man. But unfortunately, he... disappeared. So all the files are no longer there. My message to vbProgrammers is:

Post on the vbProgramming forums if you know of any good file host that lets you upload files over 1 MB. I've looked into things such as HostCubix, which is great (Thanks elNerdo), but it requires you to constantly post on their forum. Anything that requires less "maintenance" would be appreciated. Thanks.

Meanwhile, I've uploaded it to http://www.vbprogramming.8k.com/temporaryFileStorage.htm

However I'm really running out of space here (for files, tutorials are small... around 5 kb each; but source code is large), so this will only be temporary.

I've begun to take a look at my site statistics (really useful feature) - it seems as though most of the crowd likes the DirectX section. I'll remember that, and come out with some new tutorials.

Anyways, I felt kind of guilty on not having updated in about 2 months, so I decided to look into Networking and create some tutorials for you guys. Special thanks to elnerdo, a member of vbProgramming forums, both of worked hard on this together. Eventually, we got to the point where he could send me a message from his computer and I would be able to receive it. Trial and error is awesome.

So, I present to you the Mutlithreading tutorial. Multithreading, as you'll read, is a very important thing when it comes to Networking. Basically it lets you run a sub on a separate thread. A thread is a process that can run concurrently with others. We'll be dealing with infinite loops, where a server or whatnot constantly checks for messages being received. But that loop would hang the system, if not for multithreading.

Also, check out the Basics to TCP tutorial. It'll explain the differences between the TCP and UDP protocols, and let you set up a basic (local) message server. Note: You will have to create two projects tutorial.

Remote servers, servers that allow you to connect to other computers through the internet, will be discussed in the next Networking tutorial.

January 24
Check out the Event-Driven Programming tutorial.
Here's a brainstorm of what I think I'll add to the RPG Programming Series (these are not in any particular order, I'm just writing what comes to my mind first)
-Flexibility (ex: Files don't HAVE to be in certain paths....etc)
-Creating a DLL from the Engine
-Creating an installer file for the game.
-Playing Music
-Buildings and Warps (ex: "If you walk near the door then enter the building")
-Map Editor
-The Battle Engine
-Everything else I mentioned in the syllabus

I gave a lot of it away actually. There's a lot more I plan to do, and frankly there's no stopping point :). It just gets better and better as we go.

Uploaded a "Smart Key Movement" tutorial to eliminate the delay you see when holding down a key.

Uploaded an "FPS" tutorial (no, not first person shooter, Frames per second) - you can finally see how fast your game is, and make it run the same speed on all computers (as long as they're not too slow).

The "new look" that FadiXP gave to my site uses ASP files (I think), but I don't think 8k supports .asp files - I'll check it out.

JEEZ I keep forgetting about the Section II source code.

Three tutorials in one week, 5 in 2 weeks. Not bad. I just got lucky with snow days (no school, nothing to do, stuck at home ... nowhere to go becuase of the snow...etc) and I don't have any new games to keep me preoccupied. So once I get Half Life 2, don't expect tutorial mania :P. HL2 will keep me quite busy.

Check the Tutorials section for a list of tutorials I plan to come out with.

January 16
2 New tutorials. Finally, in a long time - a new tutorial in Section II - "An Alternative to Arrays". New RPG Programming Series tutorial, "Loading NPCs." The next RPG Programming Series tutorial is finished in code, I just have to write the tutorial for it. To do this tutorial, please take a look into the AddHandler tutorial. To do the Event-Driven Programming tutorial (not out yet, coming after this), please do the Alternative to Arrays tutorial.

FadiXP has generously given his domain name to me for keeping files. He also (very kindly) gave me a new design for this site, expect changes soon. Thanks man!

Thank you vbProgrammers for notifying me of errors in my tutorials. I'll try to fix as quickly as possible. Most of these errors are wrong links, misinformation (I said an integer was 64-bit but it's 32) and spelling errors (I probably won't bother with these though.....ulnlses t'is psleld ilke htsi).

Pretty much it. School's been keeping me busy. I'm at a somewhat constant rate of one tutorial per two weeks. Hope that's good enough for some of you :).

For those of you who still don't have .NET - look for Microsoft Visual Basic.NET Express 2005. It's a beta, and it's free(it was when I tried it). Just google it (Since when did google become a verb?), it'll be on Microsoft's site.

Hey sorry for those of you who have 56k and want to do DirectX programming, but can't download the SDK. All I can say is - see if you can download it at a friend's house who has broadband or something. I thought that you could ask microsoft for the CDs (US only), I guess not though.

January 03
Update: DirectX 9 update is out! Visit www.microsoft.com/directX and get the December update.

January 02
Happy new years all you vbProgrammers.

Check out the latest tutorial: World Space vs Model Space. It's mainly a direct3d theory tutorial, but nevertheless an important tutorial.

In addition, I've finished the next tutorial in the RPG Programming Series, Loading NPCs (Non Playable Characters). However, I'm unsure of myself if I've taken the correct approach to this tutorial or not. Therefore, I'll wait till I finish the Event Driven Programming tutorial and then finish this tutorial out. Sorry guys. I just don't want to mislead people with bad code.

If you've noticed, I've put up a few Miscellaneous tutorials out there. Check out the latest one - AddHandler.

I might start putting up a few APIs up there too (One that lets you check for multiple keypresses at the same time(I forgot the name), and mciSendString - an API that lets you play sound). Actually, I should really create an introduction to APIs tutorial first, or I should create a section specifically for APIs. We'll see as time goes on.

It's really time for me to start working on the source for Section II. I'm so absent-minded. Anyone want to do me a favor? If you've taken one of my Section II tutorials and if you've done the source can you please send it to me? Here's my email. Thank you.

You know what? I'm thinking of redoing my hello world tutorial. Wow I've gotten a lot of questions regarding that tutorial. I guess some people have a hard time starting out. I reread the tutorial (I made it a while ago), yeah I can understand where it gets rough for you people.

Anyone have any links/book recommendations to learn some networking? It's something I'd like to get started on.

December 16
Uploaded 2 tutorials, one in the Miscellaneous section and one in the Games section. The Miscellaneous tutorial is a "Do you really want to quit" tutorial, and the games section is the second tutorial in the RPG programming series where you'll learn scrolling, collision detection, and how to change screen resolution. It's time for me to get to work on the source code for Section II. Besides that, next up is a tutorial on DirectX - "World Space vs. Screen Space" - The Concept of Transformations. " Meanwhile I hope you enjoy the RPG tutorials (no they're not all done, I've only got two done so far). I'm not 100% sure what the next tutorial in the series will be; a quick guess is something along the lines of making the RPG more Event-Driven, a very important thing for games. I might also sneak in "Smart Key Movement" too - you'll find out soon.

November 24
Two tutorials in one day! Check out the Changing Screen Resolutions tutorial in the Miscellaneous section (very short).

November 24
Check out the first tutorial in the RPG Programming Series (be sure to view the syllabus as well).

November 20
Been a long time since I've updated. Sorry guys, just been busy with school. Anyways, check out the new Transparent Sprites tutorial. Next up in the DirectX section: "World Space vs Screen Space"  (Scary? Nah not really). I found an old GDI+ RPG Game Engine which I made quite some time ago (it's sort of incomplete), so I'll create a "Making an RPG with GDI+" tutorial in the Games section.

Sepember 25
Source for Tutorials 5- 8 in Section I are uploaded - these include the big ones such as Tic-Tac-Toe and the Calculator tutorial :). Only 8 or 9 more to go!

The Matrices and Transformations tutorial is out! Learn how to move stuff in Direct3D - the correct way!

August 27
Source for Tutorials 1 - 4 in Section I are uploaded.

Sigh, yet another download problem - you can fix this with a few tweaks. For some reason the thing downloads it as a .php file, to fix it do this:

1) Right click the download link, hit Save Target As
2) When you download it, be sure to RENAME the file to:
3) Extract the files

August 24
Check out the Rendering A Sprite tutorial! Kind of tricky and weird, but interesting.

I'm going to take a 2 week break from the tutorials to work on the source code for the tutorials in section 1 and 2 (err, I had someone coming up to me asking for the code to the Hello World tutorial recently...so I thought "wow my explanations must suck" so .. yeah I'm uploading the source o_O)

Anyone good with networking want to help with the Networking section? I actually might consider adding an ADO.NET Section. Oh yeah - look forward to seeing XML tutorials (mainly Serialization/Deserialization), heh nifty.

Wow its been a crazy summer (MAJOR site fixes, lots of new tutorials..etc)

Since its been about a year, anyone want to post comments about my site (so that I know what are the strong points, and the weak points about my site that I need to improve on).. I haven't gotten many negative comments :). Thanks guys - but please be honest, because negative comments will only lead to improvements.

August 18
I'm happy to announce (and you'll be happy to hear) that I'm uploading source code for the old tutorials. In the next few weeks, you'll see changes in the forums, the source code will be attached for all the tutorials. The code will be in VS.NET 2002 format - VS.NET 2003 users can easily click "OK" when it asks to convert :).

DirectX tutorials will (depending on the source) have a 9.0a equivalent and a 9.0c equivalent(9.0a is for 2002 users, and 9.0c is for 2003 users - MS dropped support for 9.0b and 9.0c for VS.NET 2002, but don't worry - I'll have the source code for both if they are different).

August 18
The Initializing the Device tutorial is out! Check it out.  I fixed the "Corrupted Source Code" problems :). Uploading it as a RAR file rather than a ZIP seemed to fix it - look forward to seeing some source code.

August 17
Introduction to DirectX tutorial out! This gets your computer DirectX ready and immerses you in the world of DIrectX

August 16
Major annoucement!
I'm going to do Direct3D tutorials as requested by many people. Don't worry - I'll definitely have some more GDI+ tutorials, but I will also work on the D3D tutorials as well, in sequential order from easiest to hardest as usual. I am thinking of wrapping up the GDI+ section, and programming a battleship game(without AI..lol, AI tutorials will come don't worry). The only inconvenience of this tutorial is that it won't involve networking - you cant play battleship with 2 people on the same computer :). Thus, after the DirectX section, I will be creating a networking section once I learn some. A number of people have requested a game section. This will come after the DirectX and Networking sections, but not necessarily time-wise. 

By now you guys should know enough Visual Basic code, so you don't have to learn DirectX before you do Networking..etc, becuase of this, I can do them in different orders. Basically, it's not going to be like earlier, where you needed to understand the previous section before going on to the new one - this time, you know enough code to figure it out (don't worry I'll still explain my code like I always do), you can apply it to whatever you want.

The next thing you got to do is look into API's and look into the other aspects of VB.NET. This is where you apply VB.NET to other stuff (again, like DirectX, Networking, and of course - games!).

I figured out why Dreamweaver was making a huge fuss over the font  - it's mainly becuase of the SquishyWare Syntax Highlighter. From now on, i'll try to either do my own syntax highlighting (to keep HTML clean), or just space the code accordingly and change the font color to black.

You will see an Introduction to DirectX tutorial and a Device Initialization tutorial soon.

August 7
Check out the scrolling tutorial. Please bear with me on this font problem!!! Its driving me insane!!! It might be easier for you guys to uhh.. paste the entire tutorial into Word and read from it.

July 29
Sigh.. AI Tutorials delayed!  Sorry people. I'm looking for help on those tutorials
1) AI "Thinking": Tic Tac Toe
2) AI :Smart Movement": Path Finding
The next tutorial will be Scrolling! I'll get back to the AI tutorials later.

July 1
Wow, a tutorial on the next day! That's a first. Check out the Reading and Writing Text Files for loading/saving games tutorial.

June 30
Check out the Bit String Flicking tutorial - i tried to keep it simple!

June 22
Fixed the TileBasedCollision tut. I realized it had a ton of errors Gonna get my new comp very
soon. The free VB.NET offer is over. Next up: Using Bit String Flicking for Collision

May 23

Hey guys! Check out http://msdn.microsoft.com/vbasic/atthemovies . They're giving away VB.NET for free! Don't Beleive ME ! Check it out for yourself. All you have to do is watch 5 short movies and rate them and they'll send it to you! For those of you using VB.NET 2002 or using SharpDevelop - this is your chance to get VB.NET (For a limited time only "until supplies last").

I havent gotten many tutorials out because my computer died - And im editing this page from NOTEPAD at this moment!

April 25
Check out theTile Based Collision Detection tutorial

April 11
Collision Detection finally up. Check out Proximity and Bounding Boxes collision.

March 25
Check out the Tips and Tricks tutorial

February 32
I got the animation tutorial up :-D

*Ahem*.. February 22

January 18:
OOP tutorial uploaded. Next up: Animation

December 27:
GDI+ tutorial uploaded - check it out!
Next: OOP - the long awaited tutorial

November 26:
Finally! Your first game! Tic Tac Toe Tutorial finally uploaded - sorry for the delay!

September 16:

Gotten settled, I uploaded a calculator tutorial called Event Handling

August 25:
I finished summer reading - now its time for school. After I get settled ill upload more tutorials.

August 7:
I uploaded 2 tutorials - which I've been working on for a week. They teach you the Basics of Animation and using the Toolbox.

August 1:
I'm taking the files from my Geocities account and I'm converting them to make it took better for this site.  I'm almost done catching up. I'm behind on a lot of stuff.

July 31:
Finally, I got so frustrated at finding a "free" editor, that I bought myself Microsoft FrontPage. Summer Vacation is almost over. I'll try to fit in as many tutorials as I can before school starts.
This time I promise, I'll update frequently.