About this blog
This journal may contain languages not suitable for minors and some occasional swearing.
Entries in this blog
So, as I mentioned in my previous post, I have launched my very first serious trialware application, Explore++. This project was my first ever in C#, before doing it I had only glanced at what C# code looked like.
Now, I'm not the kind of guy that gets into what language is better, C++ or Java, Java or C# and so on.. to me that's a waste of time. You find the most appropiate language to solve a problem and you use it. With that out of the way, let's continue...
I really liked a lot of things about C#, and I also disliked a couple of them, but not enough to make them worth mentioning. I liked how (relatively) straightforward it was to do almost everything, I liked making a custom control and having it appear on my controls toolbox then dragging that into my app and bam! it works. That was cool. With MFC it always felt as if I was fighting VS to get what I wanted to work, with C# most things just kind of worked like you'd expect them to.
Interoperability stuff took me a bit longer to learn, although when I figured it out I realized how not terribly difficult it is, just well, not what you're used to doing with C++.
I released Explore++ two days ago, and I'm pretty happy with the amount of downloads it has received so far, I'm sure that number will go up once it's posted on the cnet network of download sites.
Now that my first application is done, I'm planning my return into games. I'm thinking of making a simple 3D game using managed directx whenever I feel I need a break from working on SGE.
Speaking of which SGE deserves a post of its own, I'm tired of how incredibly difficult this architecture is proving to be when it comes to dynamic rendering of stuff, so I'm seriously considering ditching the deferred renderer and switching to an immediate renderer instead... but I'll post more about this later.
So I pulled out my flash powder and *poof* vanished for a little while. (sorry, wow reference there)...
That does not mean that I have spent every waking hour playing warcraft, although I have played some, my warrior is at lvl 56 and I'm pushing to get to 60 soon (and before my bro! the fool, he will never catch up!).
Anyway, I haven't been too busy at work, which is nice, except for most of this week when I was having the most annoying, most frustrating, enfuriating problem ever. Visual Studio was closing itself on me... no error message, no crash, nothing! it would just disappear, not even using "End Process" kills programs as fast as VS was disappearing, and of course, any unsaved work would go bye bye.
So, after looking for spyware, viruses, even getting my computer swapped with another identical one, the problem persisted. I tried it on our lead's system and the same problem. And all this time I thought it was my system.. damn it...
Anyway, long story short, I uninstalled Visual Assist X and did a painful "Rebuild All" (without Incredibuild) and the problem finally went away.
I miss VisualAssist, but I'm happy that I'm not entirely lost without it, the only thing I truly miss is that thing that lets you open a file quickly by typing in the name of the file, that and the button to open a corresponding .h/.cpp file... everything else was just a cherry on top.
Oh yea, and for the record, DirectInput's force feedback code is crappy and poorly documented... I'm really surprised MS never released a small library of commonly used force feedback effects. Something like "bullets", "idle car", "chainsaw", etc. Instead I gotta sit here and try to mathematically come up with what I think an effect would feel like... great fun.
Ok, now let me explain... hehe
I've kept working on my mobile stuff which I've codenamed sgeMobile. I've done some pretty good progress in very little time, and for that I'm pretty happy. Although I haven't gotten to the 3D part yet, I'm getting closer.
On the screenshot you see a few things, the number way up top is the framerate, 52fps... if I remove the window on the bottom right which is just a dialog (or the first iteration of one) it shoots up to 70, so I gotta look into that, but I'm not too worried, since the 3D and 2D stuff will remain somewhat isolated from each other, except for a few HUD elements.
The text stuff is pretty cool, I wrote a small tool that allows you to convert any windows font into a compatible format that sgeMobile uses and renders it exactly as it should be rendered once in the game.
I think I mentioned it, but the two sprites you see, Link and a Delorean are both animated, just looping over 4 or 5 frames.
Finally the blue box there is a button in an unpressed state.
So, that's pretty much it, that I can show at least, I also have all the framework setup to receive stylus input, buttons, detect memory leaks and all that fun stuff.
Oh, the sprites, I downloaded from somewhere on the net (search google images for sprites) and I'm only using for testing, they have nothing to do with the game... at all. I'd credit the authors, but I forgot to write that down... oops.
For reference, this is running on PocketPC 2002, the screenshots were grabbed directly from the hardware, not an emulator =)
I wonder if using LUA is feasible on the PocketPC... does anyone know the memory footprint of LUA? I don't know what I'd use it for.. yet, but perhaps it could allow me to make a pretty good game framework that allows me to code all the game using LUA, then I wouldn't have to compile, and upload a new executable each time, just a smallish text file and run it...
of course I'd lose some debugging abilities, but if the framework is stable enough, I could have a small script validation run on the PC that will look for syntax errors and such to prep the script for download to the PPC...
Just a thought, I may give it a shot, but after I'm done with the more important stuff.
Ok, so I mentioned a couple posts back that I had worked on some shaders, truth is, I only finished one of them, the other one is in progress, but it was put on hold.
After much struggling with my current rendering architecture, I decided it was time to bite the bullet and refactor it. The new architecture is somewhat similar to what is more commonly used, somewhat like OGRE in that you can create projects and derive the application class from a set of base classes. This will allow me to prototype different things without having to pollute the main namespace with test code.
I'm also refactoring the renderer to something similar to the one in this book:
3D Game Engine Architecture, First Edition
So far it's going good, anyway, here's the screenshot of my high resolution fighter with a cloak type effect. It looks a little soapy right now, kindof like a bubble, in part it has to do with the cube map I'm using, but I think with some good textures, the ship would look a lot less soapy and a lot cooler.
Click here for full size
So, last night I got the urge to start fiddling with some networking code... sadly, I didn't get very far, in fact, I never got into the networking stuff. My first idea was, I'll make the networking library a DLL, then I'll make a small test bed application in C# and I'll get something going in no time. Boy was I wrong. All the hype around C# made me think that using C# with C++ (unmanaged) libraries was straightforward. Perhaps it's just that the information I found is not accurate. But it's something like this:
// Import the creation function with standard calling convention [ DllImport( @"MyDLL.dll", EntryPoint = "??CreateMyClass@@PFWR@Q", CallingConvention = CallingConvention.StdCall ) ]
public static extern IntPtr CreateMyClass();
Which is not too bad, although I do find it very annoying that I need to specify the decorated function name myself, this is something that the compiler should figure out, I guess it'll get better in next versions of the language (there's some talk about it being real easy in VS.net 2005), regardless, that part was annoying, but more annoying is that I apparently need to create a static function in my DLL called "CreateMyClass" that all it does is call new on MyClass and return it.
So, I found all this to be an insane amount of work for such a simple standalone test bed program, so I ended up going for a really simple Win32 app.
So I'm looking forward to going home tonight and just getting the Win32 stuff out of the way so that I can start playing with some net code.
And now, it's time for lunch.
Early this year I started working on a game engine on my spare time (yes, a game and and engine at the same time... *gasp*), however I mostly concentrated on the technology for now and have not worried much about game design, now that most of the pipelines are in place, I will start designing a game, but I will continue working on the engine all the way through.
The engine is pretty cool, it has a really fast renderer that I have yet to bog down with tons of assets, currently I only have one shader pair for normal mapped objects, so I'll need to write a few more, do some reflective stuff, some cool transparent stuff, and I need to implement a good lighting solution.
The engine uses LUA for scripting and I have a very nice implementation that makes it easy to expose functionality to script. I also use LUA for configuration files, for example, when I export models from 3D Studio Max, I have a set of material files that you can choose, these material files dictate the shader pair to use and other relevant material information.
I could go on and talk about it for a long time, so I'll just let screenshots and videos do the talking for me:
The past couple of days have not been as bad. Though progress has been somewhat slow, the progress I have made is good solid stuff. Just a few more things and I'll be able to switch gears from getting stuff working to just fixing bugs as they come up.
Always have a macro or function that converts from game units into other commonly used units, such as meters, feet, etc. In the long run it saves a bit of time, and there's no point in having to do these conversions as needed all over the place.
Man.... lots of work lately, but it's getting there. We're racing towards the finish line, and although it's still a few weeks away, it feels like it's almost upon us. This explains why I haven't updated this thing in a while... and why this is such a short entry, gotta get back to work.
I'm tired. Very tired. Tomorrow is saturday, but that makes no difference.
Yay, I'm coding again... it feels live I haven't coded anything since Dec. 1st. I took a whole month off from work, it was real nice. I was missing it though.
I'm playing around with some HDR bloom effects, pretty interesting stuff.
Also been playing World of Warcraft too much... damn Blizzard for making such a fun game. This is the first MMO game I play too, I never really liked any of the other ones (I tried a few).
Anyway, I'm going to get back to it...
Not a very good day today. I pretty much think that everything that could have gone wrong did. Not coding wise really, just stuff. A good friend was let go today, they didn't tell us why. This morning he made us waffles, by noon he was gone. So yea, I'm upset.
Other than that... because of the long weekend, I didn't have all my shit together, then we had a review and nothing worked. Bah.
So, I'm looking forward to going home and if I'm lucky, play a little WoW... but more likely I'll go home, watch TV for a bit then go to bed. Exciting is the life of a game developer... eh, I'm just bitter, it usually is a lot of fun, but there are bad days.
All I can say today is. Bah.
Anyone know how to enumerate a joystick's buttons using DirectInput in C#?
I can't seem to find a way...
Screenshots! - no comments all day... I'm sad
Here it is, the first software rasterized, 3D rendering of a textured rotating quad in sgeMobile!
As you can see, it's very inaccurate, and not awfully fast either, but it's quite a start and I'm very pleased.
I can't really take all the credit for the rasterizer, I'm using the affine texture mapped rasterizer from www.fluidstudios.com which worked really well, at least as a starting point, now I'm going to research a bit more about the subject and try to write a faster, more accurate one myself, otherwise, I learn nothing.. hehe
Additionally, my friend has been working on a 3D rasterizer parallel to my more general game library efforts, here's a screenshot of what he's got so far, in all honesty, I think his results are far more accurate, but he doesn't have texture mapping in there yet, so it's hard to compare, here's a screenshot:
Wow, I just noticed there's some sort of closure thing going on... is it a strike? is there a gdnet developer journal writer union I was not invited to join?
I'd close mine, but quite frankly, with all the good ones closing, it can only increase the popularity of mine, I guess I'll have to start producing screenshots more frequently to keep people entertained, that is until people talk bad about the screenshots, then the screenshots will delete themselves out of sadness and this journal will wither and die, thus completing the cycle of life.
Ok, enough about that... Actually, if they don't make a version of GDnet with a damn BLACK background sometime soon, I may just end up closing this journal for real and install word press on my site and take it from there... this REALLY hurts my eyes, it's 3am and I'm sitting in here in complete darkness, except for the incredibly bright beacon of gamedev goodness that is GDNet. C'mon guys... I already wear glasses, I don't want to 'up' the Rx on 'em.
This holiday season has got my spirits down a bit.. I should've done a ton of things, but I've felt no motivation to do them at all. January is going to be real stressful and I'm already feeling the anxiety about it *sigh*.
I just want to make games... sometimes, it feels as if it's too much to ask. Oh well, I have high hopes that something good will happen in January, but if I learned something in the past 6 months is that the higher your hopes, the bigger your disappointment. It gets hard to keep your head up at times... and yet, somehow I manage...
Ok, enough rambling... hopefully next update will have a screenshot. cya.
I'm taking a week off from work to visit family and spend time with my wife. I decided that whenever I got a few minutes to myself (since I'm not at home and don't have access to my code, or even VisualStudio) that I would work on my website.
So I've been doing a little ASP and html, but the weird thing is... I can't think of anything I'd like to add to my site, I mean the site itself is pretty good (IMO) and could only benefit from having more content.
I fixed a couple of small bugs that I had never gotten around to fixing, but they were in the "members" section of the website (which only has 1 member, me). It's really cool, a while back I wrote a nice little system that allows me to update my site from anywhere just by logging in to it.
I asked a buddy of mine, who is pretty good at doing web stuff, and he suggested I tried one of those CMS (content management systems), which basically let you create your site just by customizing some things. Sounds cool and all, but it kind of takes the magic away from it. I'm very proud that I've always made my own website by writing every line of code myself (except of course for those few copy/pasted from somewhere else).
One thing I'm a bit curious to try is using C# in a website, I'm not entirely sure what I would do with it though...
Yea, so that's about it, nothing terribly exciting, hell, I'm kind of falling asleep as I write this.
Oh yea, and it's my birthday today... I'm 26 now, only 4 years left to become a millionaire before my 30th birthday. It's on now.
I'm getting the exact same problem using flexporter. For the life of me, I can't seem to be able to load in UVs anymore...
Why is this wrong?
for ( uint16 i = 0; i 3; ++i )
uint16 v = mesh.mFaces;
uint16 tv = mesh.mTFaces;
vertices[v].u = mesh.mTVerts[tv].x;
vertices[v].v = mesh.mTVerts[tv].y;
Am I missing something? does 3DStudio export UVs in some particular way I'm not aware of?
At least I didn't spend all night working on this, I set up the actual texture loading, so now any texture I specify in max gets loaded and set when the model is drawn. Except, of course, the UVs are wrong.
This is annoying, and I'm too tired to start looking at it.
The first screenshots, and a video of the stuff I've been working on have been released. Here's a cool screenshot of it:
So, I've been a bit away from posting on my journal lately, it's not because I haven't wanted to, but I actually took a brief break from working on my engine and I've been extremely busy working on a small program I plan to release as shareware and hopefully get a trickle of income from it now and then. I'm really close to finishing it, I think I'll have RC1 sometime this coming week, I'll have a few friends beta test it for me and hopefully it will be online by week's end. I'll share more about it when it's done, hopefully it might be of use to some of you guys, I know I'll be using it a lot =)
I did post some screenshots on the image of the day gallery, it's pretty cool, I always loved the concept of IOTD, I love seeing what people are doing and wondering "how the hell did they do that?" or thinking, "man, I gotta get off my ass and do something like that".
Especially when I see stuff like Ysaneya's which is just breathtaking, Harry Kalogirou's entry is also very impressive.
So anyway, as soon as I'm done with my little pet project (hopefully a little money tree), I'll get back to my engine. Next on the agenda is a particle system. Half of which is already in the engine, since I can easily add dynamic geometry with as little as 5 lines of code and all dynamic geometry that shares a material gets drawn in a single DPC. I figure the "hard" part of the particle engine will actually be the authoring side of it... I'll post more about when I begin working on it.
Anyway, I gotta get back to work... I want to finish at least one of my 4 final tasks on my list tonight.
I posted this in the comments on someone else's journal, but I think it's worthy of being a post here as well. It's about the whole thread of posts that's been going on about writing your own game engine and why you should or souldn't.
Here it is:
I recommend that anyone working on their game engine read the EULA on the code from books they buy, for example, I don't remember which one of these, but probably both:
3D Game Engine Architecture : Engineering Real-Time Applications with Wild Magic (The Morgan Kaufmann Series in Interactive 3d Technology)
Game Physics (Interactive 3d Technology Series)
the EULA states that you can use the software, for commercial or noncommercial purposes, provided that each memeber of your team owns a copy of the book, and as long as you dont redistribute the source.
Which is great, for the price of the book, you get a really complete physics library, that you just need to plug into your engine and use, no need to write your own.
That's what I'm doing =)
Reminds me of the old DOS days, programming on Mode 0x13 or Mode X... writing software rasterizers...
I just had a phone interview with the development director of a company I want to work at... I think I did OK, but sometimes I feel like I talk too damn much and that only hurts more than it helps. It doesn't help that I get nervous when I do stuff like this...
Now I got a tech interview coming up in a few minutes, and I'm still nervous from the last one...
Man, I really hope I don't screw it up, I really want to work there.
Well, next time I update this, I may have a new job in a great place... we shall see, I really hope I don't screw up.
Well, the game I was working on is finally out and I can now rest. It was a long project, but it was so much fun. I truly grew as an engineer and am now a lot better than I used to be, even though I used to think I was pretty good. It was amazing working on a team with scuh talented and smart engineers. I feel comfortable saying that I learned more about software design, engineering, math, graphics, AI, networking in this project than I did in 4 years of school. I am a firm believer that you learn by doing a whole lot more than you do by studying, this is why I had such a hard time in school.
It's satisfying to play our game now. For a long time I only saw our game in snapshots, small parts... there's a bug in a level, you go in, you fast forward to where the bug is, you find the problem, go into the script or code, you fix it and you move on to the next thing... never really playing. Now I get the chance to see all the fantastic work that our designers and artists did with the technology we gave them. Even if they complained about it all the time ;)
I'm really happy with the game we made and I can't wait to get started on the next one.
The only thing that kind of bothers me, but not enough to give it much importance is how reviewers tend to root for the underdog, even when the top dog has a clearly superior product. But I guess it comes with the territory.
And now that I've had some time to play (these are all my opinions, if you disagree, then we must agree to disagree, I won't be convinced that a game does not suck, if I feel that it does).
WoW is cool for an MMO, it makes me hope they make a Diablo3 soon.
Prediction: Half life 2 will be overrated, but good.
Counter Strike Source: I was never into CS, I tried this and didn't find what millions of other people did... feels like if I was playing an old game, like quake 1... not too bad though.
Sims2: Just like the first one, it was entertaining when I used cheats and made a big ole house with all the cool stuff in it. It got old soon after that.
Finally, the games that I'm looking forward to play are:
LOTR B4ME... coming soon.
HL2 - will probably not look as good as their videos ever did, even on my high end system at work, I hope it's fun.
Prince of Persia 2: The first one was just awesome, best console game I've ever played (this console generation, of course).
And I think that's it... man it feels good to be back to normal.
I hate them.
That is all.
So I took this weekend off and drove up to San Francisco, took the 101 all the way (it's the scenic route). It's such a nice drive, next to be beach, all the vineyards along the way, and just nice scenery all the way.
I do wish I could afford a laptop, our hotel room had free DSL hookup, but I guess we all need to be unplugged for a while and just enjoy the outdoors and small vacations.
So yea, no programming post right now, maybe tonight if I get anything significant done, but I think today will consist of figuring out where I left off and picking it up from there.
So, anyone get a PSP? does it live up to all the hype? I probably won't get one, just like I never got a gameboy, gameboy advance or gameboy advance sp... even though I always said I would... I just don't really have time to play portable games, the only time I could actually play, is when I'm driving home, or to work, but there's one problem... I'm driving. I rather have a beefy laptop.
Ok, for a non-programming related post, this is getting too long. Cya.
It sucks, SUCKS... It seems intent on ruining my life... GRRR.