About this blog
My attempt of trying to program a Game engine in DirectX and C++ :)
Entries in this blog
It's been a while since i last updated this journal, time constrains prevented me from updating sadly I have not been able to write any game related code myself. Up untill recently i had a lot of things I wanted to read and to use to get back on track but lacked a lot of motivation to get it going.
The biggest problem is doing something alone, not having someone to pay attention to your progress can be really demoralizing. I hope to get back on working on my game development related things. Its just not easy finding something you really enjoy. I was busy with a C++ guide but wasn't statisfied with the formatting and examples so decided to scrap it and rewrite it.
I hope to have more positive news soon, I had an idea to have a engine similiar to something Sierra made where you basically make an engine where you build the game from scripting. But doing it alone might be a bit hard. And learning maths sucks :D
I am going to be posting part one of my C++ tutorial this coming week...
For each chapter i will have illustrations and explanations. I am looking at around 20-40 pages. Hopefully it will help people.
A year orso ago I made a small post on how I made the "vyper" engine. And lately I have been scouring the Beginners forum again in my free time and noticed a lot of people are still wodering what langauges to use etc etc.
I have found most of the notes i took in the 7 weeks I made vyper and was curious if there was a interest if I made a small guide on some of the important things you need to know in C++ / game development.
Most likely I will write it in the 2 weeks im in switserland but we will see :)
Currently i am playing with DirectX 10 for fun, testing whats really different but i am more curious to see IF DX10 is actually faster then 9 if you write it in pure DX10 code.
Been having some issues with my PC again... Thankfully this time around I have not lost anything important.
I have been reading mostly the backlog of C++/ DirctX notes i made when I was working on the Vyper engine. sadly the people I worked with are all busy with school again so I guess we can say the game engine is really dead :) Because I like keeping notes and practicing code myself, I will most likely b posting some of my notes on C++ and DirectX aswell in the near future.
My biggest problem right now is keeping the C#/ JAva and C++ code all seperates from one another :) But hopefully I will be posting nice and usefull things soon!
Nothing much has been going on, but since I promised to be updating more often here is whats been going down:
I am currently trying to figure out how to optimize the Collision detection in the freespace 2 engine. Also I have been reading a lot of math courses because I realized a BIG struggeling block for most of my programming was my rusted up useless maths.
Some people I know say that maths is not important but when you look at the specific parts of things and specially at problem solving maths is neccesary. At one point I was talking to Easilyconfused and he was giving me advise on how to solve a problem by giving me mathematical formulas. Sadly because I was a bit out of work iwth maths i was overwhelmed.
Why do you need Maths?
Collision Detection: how are you going to calculate efficiently when an model hits smething and if it hits something?
Physics: how is an item going to drop on the floor?
AI: what is a computer supposed to be doing?
3D rendering: you dont just put a model in the screen you know ;) it involves matrices.
I have been very lack with my updates to gamedev, needless to say my RL has been really busy adn hectic.
I have thusfar binned most of my source code in an effort to start "new" . I also have 5 courses that i am currently following from the Game institute :
1. Game Mathematics
2. C++ 1 & 2
3. Directx 1 &2
So far the courses are great but the amount of time i need to study is more then i can spend on it right now. Work is killing :)
Hopefully I will be abvle to start posting again and more frequently. Currently I am looking for a good multithreading tutorial so I can mess around with that on my Phenom :) Again I am really sorry for the lack of updates :) But as a compensation and punishment I extended my GDNET+ to a year ;)
On the Vista side:
it took 2 mionths but all the problems are solved :)
Finally sorted out the stupid Vista issues, and since there is NO website detailing it i will just post my solution.
If you use Vista 32 bit you can only use 3.5 Gigs of RAM. If you want to use more you have to use Vista 64 Bit. The problem comes around here, apparantly there is a teething bug that comes around the corner when using certain DMA devices and Nvidia is a big problem in it.
Microsoft released a patch that people can download here:
Another thing people need to be aware of is that you use the X-FI Soundblaster cards there is a new update out that you can download that fixes "issues" with Vista X64 i am not aware of what.
Another update was also released that fixes Bugs in your Videocard concerning memory usage.
Result for me is that Vista runs except occasionally it just won't boot up until i restarted a few times and then its fine again. And sometimes my Bios complains about a Hypertransport flood during a boot. So I think my AMD processor might need a driver or its a piece of junk. Cannot wait till the Phenom is out ;)
On game development news:
I have programmed a small application that can read files and pack them Right now im spending most of my time making a DirectX9 engine with Easilyconfused for the Beyond the redline BSG mod hopefully this will be dragged to the firefly engine. The goal is to use DirectX10 aswell but considering my issues with Vista right now i am going to spend most of my time doing the things that dont require vista :)
Its great to be done with my bachelor!
Today I finally decided that after nearly a year of following Vista and hoping things would improve that i would hop back to XP. The reason your asking?
It just hogs so much space and lets not forget that it has its own special wishes at first i had written around 2-3 pages on this blog that made my feelings for Vista overly clear. The reason i posted this on this forum is because I just lost a lot of work because vista suddenly decided it hates my RAM and more specifically hates my frigging PC :P
i cannot install vista 64 bit when i have 4 gigs installed on my machine it will always crash at the same point when i remove 3 gigs it works fine. If i install XP 64 bit it wrks fine with the 4 gigs installed. I never seen something this dumb in my entire life why would something like XP64 install it flawlessly the RAM goes through the Vista RAM test its corsair and hell any memory test i chuck at it it works fine.
Vista is slow it requires 4 gigs of ram because it eats 2 gigs just so it can give it to people begging for it. You cannot even turn off the hinderance called Virtual Memory because Vista WILL crash if you turn it off even with 4 gigs of ram installed. In XP i could get away with it and it just meant my HD was less stressed.
DirectX10 I would love to learn it it was my main motivation for trying it but hell i was so busy at my internship that i had barely any time to work on it.Now Vista took a crap on it corrupted the files because my PC crashed while using Visual studio 2005 well THANKS! If i wanted chinese symbols in my source code i would install the chinese version of Vista because thats part of the ultimate package :).
The eye candy and the small tweaks in Vista made Vista pretty good in the sense it had a few good things. But come on the following things are just too glaring:
no need to explain it but lets just say BSOD has a new friend just as anoying.
Whoever thought it was good to make changing network settings in such a way it takes me longer to find my IP settings and longer to change something or heck when i go out of hibernation the damn thing crashed and i need to diagnose my network connection. Lovely!
I been using Vista for nearly a year now and I stayed with it through the bad and the good in the hopes microsoft would improve on it but sadly thusfar they are just hiding their fixes for SP1 and its dissapointing. I think i am going to give Vista another try in 4-6 months whenever SP1 is out and i can slipstream it to my DVD so the damn thing works.
And PLEASE do somehting about the performance the indexing right now is a performance hog and in the end its just slow at times and some games notice a framedrop of 10-20% :(
Either that or wait till i have barcelona with new RAM and hope it works then!.
Sadly most of my work including the work i was doing for the bank is gone now and its pretty depressing to say the least.
Been working at the bank for the past few months and have had 0 time to do anything constructive game wise. I had to program an XML Generator that could generate valid XML output for a Java web application. Ofcourse their XML Specification set just did not exist and I couldnt make something out of it. But thankfully the application is nearly done!.
This means my time is slowly becomming less packed and stressed. I also bought a appartment for myself so now im really broke;). Right now im trying to program a 3D renderer that either takes the D3D9 or D3D10 route. Sadly its hard to find good documentation on DX10. I guess its time to whip out the API documents from microsoft :)
Some models have been made for the game already so there has been some progress albeit not something to write about ^^ . If i find good DX10 tutorials I will post them here :)
Sorry for the period of no activity. I am currently working at a bank and basically its sucking up all my time. I am at work at 7 in the morning and leave at 5 so for me there is basically no real "break" to work on the engine. I have been looking for DirectX 10 tutorials but so far I have not found much.
I have recently bought a few new parts for my machine and now i am running this:
Windows Vista 64 Bit ultimate
4 GIG CL4 DDR800 RAM
Amd AthlonX2 6000+
2x 500 GIG hard disk
Ati Radeon HD2900XT
I have to say its pretty fast.
Sadly right now most of the group im working on the engine have "calmed down" mostly because i just dont have time to keep things going and well we all have jobs right now and I think after October things will be a lot smoother. Currently im trying to make a Stand alone DirectX10 renderer that I can implement in the Firefly engine. Ofcourse I canot find any good books or tutorials wich is sadly a shame.
I am sorry for the long silence, but since work has been going a lot beter now I can relax again and try to focus on C++ instead of the Java I am currently doing :)
As the design below implicated we have finally gotten the stupid Visual Sourcesafe 2005 working (sure pays off being a student!). Right now I have written some code that allows us to have "resource" files meaning that we do not need to give everyone individual files anymore for the sound and such meaning its compressed and also a lot faster. It opens the window to some future optimisations in any case :)
Currently this is what I ahve in mind to get done this week:
A small executable that looks for a Video file and loads everything on the screen that it finds in the file.
Lets just hope our multithreading is working :(
As some of you may know, I am currently working on a multithreading solution for my game. Right now we decided to make the Thread a class in itself to improve extendability. But also to ensure there is only one point where we have to maintain code.
As I am a relative programming novice I decided to buy a book about multithreading
A big issue I have with this book is that the theory written in it good. The problem I have is basically that the code written in this book is HORRIBLE for the eye. Yesterday I finally opened the book read the theory, flipped the page to C++ examples and the C++ code was not spaced, everything was crammed together
it looked like something like this
int void hello(int x, int y)
everything was slammed together like this, considering the book was not an A4 but an A5-6 you had a few functions with comments taking 2 pages . It was just impossible to read and understand at the same time. THankfully I could download the code from his site, but come on. Code convention is the first thing you should LEARN. People need to read your code, it shouldn't be a big pile of text.
Another problem I have is that the book focuses on C++,Java and Python. Spreading the theory over 3 programming languages is dangerous, most people require the most help with C++ as itd oes not have a native class of its own. C does have the required WIN32 API calls but its not OOP oriented. More emphasis should be put on C as it requires more time to get working properly. And specially now that most of the Games and standard applications are being moved to a multithreaded approach purely because nearly every PC you buy nowadays has a dual core in it.
OVerall the book is good, but only if your behind the PC using the source code, and not reading it from the book. Its THAT hard to read :(
Sunday I am hoping to release a first review of the C++ code we done so far, and how we have implemented our multithreading approach. Its good to know that things are finally going against :)
I am terribly sorry for the complete lack of updates on this journal. Its something I hope I will not have to do again soon. Firefly is now finally from the Design to coding, not much coding itself is done. But we have opted to go for the multithreading approach as an experiment the design we drew up is this:
BAsically we only will have a few threads running, an important reason we did that is to avoid deadlocking, we also wanted to use OOP to make the threads sow e can easily expand the code and also make sure we got one single point where we can check the threads for consistency and other boogey things.
We currently want these threads:
3D thread (rendering etc etc)
so around 4 threads for now... We did not want to make a seperate thread for each class as itw ould make it a nightmare and really prone to deadlocking. One of the goals is to have aroudn 700 fighters and capital ships fighting itout.
A fundamental reason I want this is because i personally hate the idea of only have "wings" jump in consecutive sets, when navies nowadays fight each other everything gets deployed and utilized. It is a design nightmare, but i know the hardware is there. It just means we need to optimize and use multithreading for example.
I already coined what I want to happen in the first level of the firefly game itself, but im not entirely sure on the lore yet for now all we are doing is writing code and preparing the engine to be used for the game itself :)
Hopefully the updates will be more consistent now!
nothing much to say honestly,
I have been chugging through a TON of theory on Multithreading but sadly I have as of yet not made a design of the firefly engine Version 1 as it would be called. I do have a few set goals I want to implement, and I got 2 very eager people waiting to join the fun and getting some real code out. The sad thing is that RL is messing around with me (like Easily confused a job hunt:p) And my friend who I wanted to finalize the design with has some personal issues I rather not delve into and out of respect I decided to wait for him to feel in the mood to start again instead of just paving my own way.
I prefer having teamwork and not an enviroment where its survival of the fittest so hopefully THIS weekend a big update on this site with tons of drawings :D
sorry for the lack of updates had a 10 day holiday and basically a few Reallife things happened to me, aswell as to other members in the team so sadly engine wise not much has been done yet except preliminary planning of the concepts and things we want to add.
I have bought a multithreading book which seems to explain the things i needed to know. So its still on my agenda, hopefully thursday we will start programming. Since we decided to pave our own path in development without using Battlestar Galactica IP and such we have concept "teasers" of how things are starting to look.
If anyone knows a cool name for this ship the human standard fighter post it down below, at first the idea was to call it a firefly, but maybe Apollo class, or Ulyses class would be cooler. Who knows! and if anyone knows how to get a green card to the US letme know! :P
Just a small heads up,
I am going on holidays for 10 days so my updates will be a little scarce now. I will try to update when I am in switserland but I think i prefer offline time. I have a few goals to make and 10 days is really noy enough for those ;)
Most likely my goals will focus on the following :
- Write a small 3D engine guide for beginners
- Small C++ introduction aswell
- Start on Firefly Engine
- Get sued in the process ;)
Basically I have a lot of books on my mind to read and i think i can finish them but it means a lot of focused work. My group has decided that the Firefly engine will not include Networking, or Multithreading. It is still a todo thing, but preferably we should do it after we gotten more experience. It is impossible to make a good engine if you put your scope on a too wide of an angel.
Personally I am working on the following things in the engine:
- Make the design (posted in a bit)
- Allocate jobs
- work work!
- try to attain goals
- spit more demands out ;)
I am glad with the group of people we have working, hopefulyl I can be of beter use this time around in the enhinedesign and building of it. I always seen myself more as a organizer but i am definitly sure I can be more then that :)
Is a pain to understand, there are not really good guides out there meant for games. I have read some of charles petzold's Programming Windows Fifth edition but it does not seem it gives a lot of idea how to resolve the problem of synchronization.
Furthermore the Xbox presentation does give an idea how to do it. But again the code on its own without the speaker can be quite scary. I am still a big fan of the multithreading idea, but looking now it might not be possible seeing our current skill. IS there any book at all that covers this area? Or should we just grab some code experiment on it and hope it crashes? ;). I found one tutorial, but realized this was a straight copy past from herbelt schildt his book:)
Hello everyone, some good news to report.
I have just finished assembeling a new group and we have decided on a name we will pass on as from now on :). I have been asking a few friends I have met on Gamedev to form a development team. To list the names of our group:
EasilyConfused - Programmer / sheep roaster
Mukkie - Programmer / Battlestar nurd! ;)
Amp'd and Loaded - programmer / website
Release - talker / Artist
Wijnand - Project Lead / programmer / freeloader
The group will be making a engine called the Firefly engine, I have also registered a .com called www.fireflyengine.com hopefully by tommorow we will have a small site up atleast. As I have a year subscription to gamedev, i am keeping this journal updated aswell ofcourse. I have been posting more often in the forums now helping others, still I feel I am not that good of a programmer yet, but hell some of my information might be usefull! :). I am currently writing another engine paper for the people who read my first idea and hopefully it will flesh things out.
We are all hobby programmers, so do not expect magical strivers and the latest groundbreaking technology. We have only set so far a few goals:
- Make the engine + game as modular as possible,
- Have tons of things fly around on the screen
- Newtonian Physics
- Basic AI
We are still in a design progress, I am currently writing a concept of a story line. THis will serve as our "demo" meaning one level just to taste how the game is felt by people, and if it generates enough of a buzz we can continue working on something a little more immersive :)
as some of you might have noticed on the beginner forum, I was having a good discussion with some people about Multithreading. After talking to the group who work on Vyper a couple of things have been opted for:
Vyper will be renamed to M.A.G.E the reason we have opted to do this is because we rather not come over as a copy paste group. First one who figures out what mage stands for gets a spot in the alpha testing ;).
We are opting for Multithreading because we the development team all have Dual cores and felt that it was a good idea to expand on this technology, especially with all the good presentations and people on the forum helping us out ;) The reason we want to do multithreading is because we want to be able to handle a lot of information and with this we can probably try to do a lot of tricky things.
Another reason for our project reboot is basically to implement Networking code, parts of vyper will find their way in MAGE but some parts won't mainly this is what we want to figure out. Again we stress that if anyone wants to join the group and has some good C++ knowledge to contact me, modelers are also more then welcome. The goal is to release a demo of a fullyworking game within the year, MAGE will be our engine which will be available for free and the game will be released as a full package :)
My only spoiler on how this game will look is basically think of a cross between battlestar Galactica physics in a game, and the action / capital action of Freespace 2.
Gamedev going down for nearly 2 weeks :s, we have been mostly working on cleaning up the code and I have been reading on how to implement DirectX. We have been thinking of adding Multiplayer but have not found a good guide on how to implement it. Other then that it sounds like its a quite complex undertaking as a whole.
Newtonian physics seems to be nothing more then horrible math equations (which i suck at!). Hopefully we have something to show within the month ;)
slowly but surely getting to the 10,000 mark. Did not think I would manage to do that so fast within a few months considering the scope of what it first was the project.
On the project itself, currently we are mostly just cleaning up the code, and getting ready to hand in the engine to the teacher for our final grade tommorow. Then we are going to commit ourselves to a real game. Vyper as a framework will ofcourse continue to exist. But we are going to also be working at the same time on a game that runs on it.
Somethings I do know that will be in the game:
- Space shooter ala Freespace 2
- Newtonian Physics
- Battlestar Galactica weaponry on the capital ships with a few beam cannons
- Completly different ships (no BG ships we want to but we will get SOED!).
I rather not divulge too much on the story, honestly I do not know if I am a good story writer, but i will ofcourse give 2 people the draft for review.
Now as for the technical bits, wea re going to add Direct Audio, I was going to opt for EAX but seeing as how Vista changed everything its a safer bet to use DirectAudio for now, and just make an abstraction for people who do have EAX. We have revamped the Entity class, added 2 interfaces that you can use to manipulate the code with. On the TODO list is ofcourse adding some form of resource file manager so we do not clutter files.
One last thing thats bothering me immensly is the fact some Windows XP machines refuse to run the Vyper program because they need to install a CLR thing that you get with .NEt 2.0 is there any way to kill this? its quite bothersome you need to install so much bloat :( I read you needed a bootloader to solve the problem. Most likely i will just wrap a installer around the game so these things just get added along.
The Vyper Framework from now on, will only come with .CPP files and the headers + resources. The reason is twofold:
1. Takes up less space
2. people can import them to any compatible C++ compiler, specifically the 2003 version
3. no Source Control errors + crapware.
I am hopefull for one final release, but we want to rewrite our heightmap first, and probably work on some things. I will again state that if your interested in joining the programming team, your more then welcome to just email me or send me a PM. My email is firstname.lastname@example.org
Here is a Release build of vyper for people who prefer seeing what we have done rather then snooping in the code :) You need to have all the files extracted right next to each other its nothing special but it does show what the game currently is capable of.
We are probably going to be releasing the source from now on without the project file so people can try to compile it on any compiler they want :) Hopefully we will have a lot of things to show soon ;)
to download click
for the people having a .DLL missing error, PLEASE download the latest DirectX Runtime (October+), that should fix your problems :)
Sorry for the long time of silence, but basically the group was a little tired and needed a small break to get ourselves a little more sorted, I have a resit for the exam next weds and hopefully I will pass it this time (really need to learn how to write Vectors out on paper).
Hopefully before weds we can post a new version and clean up some of the directories and have a release version that works (something with dependancies). Thank you for the advise on how to make your own file format, I will most likely try to figure that out so we can make all our data in one big datafile (or split them up) and that should hopefully make the program less error prone.
Another thing I am really keen on is writing each aspect in .DLL and getting multithreading working, most likely though I will work on getting DirectAudio working so we got some sound :) Its hard to pick priorities.
Nothing really serious to report,
We are going to try and release a new version friday that basically has the following changes:
1. KErnel.CPP becomes a Class aswell
2. Cleanup functions will function properly (memory leaks gone)
3. Fixed the heightmap (no promise)
4. some more D3D tweaks
5. A real Abstract renderer instead of a polymorphism solution.
Furthemore we are trying to look for a solution to a problem we are having
AS you might have noticed, we have the .X files and BMP files floating the map, preferably we want to put them all in one file so its easier to access, but also easier to zip and keep track of what we need. Does anyone know how easy that is to implement?
One last thing we are really struggeling with is we can make a debug version of Vyper, but a release keeps on giving linker errors, which is a pain in the ass.We need to add more library dependancies to make it work for a RElease build?
Sorry its a few days late, had to fix things and had some unexpected problems. Here is a release commented, cleaned up that should work nicely. Sadly the heightmap is still crap. Maybe someone can take a look at whats going wrong. Other then that we have a dynamic camera, a few rendered scenes. And it should look like this on your screen:
the code is here:
Thank you to everyone who hsa helped thusfar :) I will release the documentation shortly just need to fix some things and improve on it.
The Vyper group