Knows Java and some other languages. Likes to pretend that he can make games.
Status update time! It has been around three months since my last blog post, so I might as well say I am still alive. I would have liked to post something earlier, but I put a bunch of effort into coming up with a topic to discuss. It makes it so I am not rambling... as much. Just haven't come up with much, but it has been three months...
Moving on! My current project (yes, I do bounce around a lot from idea to idea) is BlitzPortal. I know, both the name AND the idea are not original. The plan is to make a clone of Portal, but with my own style/ideas/etc. As the name suggests, it is coded in Blitz3D.
Right now, I only have a basic movement system, and the closed portal rendering. I have also encountered problems with the fact that I have no idea how to do the portal view system. I want to use a stencil buffer (like Portal) but I am not sure if Blitz3D supports one. Collisions are another issue. A solution would be to find another 3D engine, but I am limited with my choices due to my lack of knowledge in C++.
That's it for now!
What I have been doing this Decemeber? Absolutely nothing, that's what! Well, nothing when it comes to programming. So, what have I really been doing?
I have actually been recovering from a nasty viral sickness thingy that gave me a terribly soar throat. You probably don't know, but I sing a lot. I take a vocal class, and I'm involved in the Chamber Choir and Concert Choir at my school. We sang the Glee version of Don't Stop Believing for the school on the Friday before holidays, but I digress.
While recovering, I was playing this cool game called ZardWars. It was made by Artix Entertainment as a test of a second server, but is also a quite playable game. Unfortunately, you need to be a Guardian to play it, but... Anyway, I started making a site for it, since there was a lack of a site for guides. Here is a link: ZardWars Revival. I won't explain too much about the site, but I did all the CSS, HTML, PHP and layout graphics for it.
Yeah. That's what I have been doing. Just a little status update for those who care. I hope to do more in 2010, but we will see how things go when that comes around. Merry Christmas to you all, and have a great New Year!
Today, I managed to take a leap in 2D graphics. I managed to add full image translucency to drawing images in Blitz3D.
I know, the pictures aren't much..
It's been something I've wanted to do for a while. Unfortunately, it is not compatible with the 3D rendering of Blitz3D, which I was hoping it would be. I would have used it to spruce up my motion blur.
What I did was create a function that took the image to draw, the x co-ordinate to draw it at, the y co-ordinate to draw it at, and the alpha (or how translucent it should be). I locked the back buffer, the buffer of the image I supplied the function with, and the buffer of a new image to do the alpha blending on. Then, for every pixel on the image (the one I supplied), I checked the color of the pixel behind that image, and used a cool formula I figured out today to calculate what the new pixel should look like. After that created the new image with all the blending and alpha on it, I unlocked all the buffers I had locked, and used the standard image drawing function to draw the new image.
Did you understand all that? I sure didn't, especially now that I am typing it!
Later on, I may use this to make use of alpha layers, where every pixel has it's own alpha value, not the whole image having one.
I will probably put up the source code in the downloads section. Well, I was... until I discovered all the bugs with it.
Today, I tried creating some motion blur, and got a bit of success! This was done in a few hours in Blitz3D, and turned out to be something that works... sort of.
It is computationally expensive, very finicky, doesn't look the greatest, makes me dizzy, has bugs, and probably wouldn't work in a video game. However, I did this with little to no knowledge of how it is "normally" done.
The following is also explained in the video description on YouTube, but I will explain again. What I did was create a simple surface with 2 triangles, set it's transparency to "slighty transparent", and placed it directly in front of the camera. Every time the game code runs, it takes a picture of the backbuffer (something you don't see) and textures that surface. Since the surface contains a transparent view of the previous frames on a transparent surface, it becomes more transparent, thus creating a blur. Soon enough, it becomes so transparent that it is just written over top of, ending the blur trail. (I hope this makes sense!)
That's all for now!
I don't think anyone here knows me so, here I go. I have never had an original idea when comes to story line and plot in my life. EVER. Therefore, I make my own "copies" of game I like to: gain experience, keep me busy, and to make me feel accomplished somewhat. However, I have a short attention span, and this rarely ever happens.
On with the show! For the rest of the article to make sense, it requires a bit of history:
Ever since Portal came out, it has become my favourite game and probably always will be. It was Portal that made me learn of Valve, Half Life, Source, blah blah blah. Then I saw the portal gun in ExitE, which led to finding it in Garry's Mod 9 and 10. This led to a desire to create my own Portal game, because I was young and foolish.
Well, that idea came about... a year or more ago, and really, nothing has been accomplished on it. I started on it when I knew very little about programming, which may have been a cause of me not getting anything done on it. I created several runnable... uh um... demos, and then I threw that engine away.
After a few months, I tried again. I got farther, created a demo, and then threw it away. The engine was better, but had a few bugs, could not be expanded upon, needed new graphics, etc. This was my last major attempt.
Now, though, I have experience, a bit of a better attention span, and, well, experience! I am trying AGAIN. I AM going to finish it, I AM going to release it, I AM going to post updates on it, and I AM going to beat all those "downraters" with a stick. Expect updates on it, and keep your eyes open.
For the first time since I made the variable connection between math and programming (which was... sort of a while ago), I haven't found math class to be very helpful to my programming. Really, I don't think I have used polynomials once. I learned sine, cosine, and tangent on my own. However, this had changed!
I learned how to calculate the length of a line. This may sound very small, and one may be questioning why I am posting this. I am wondering that too, but it is really exciting to me. The formula is as follows. Note that since I have no idea how to write math equations on the computer, I will use functions instead. Sqr( ) is the square root of the number and... yeah... everything else should be readable.
length = Sqr( (X2 - X1)2 + (Y2 - Y1)2 )
Take the starting X and subtract that from the ending X, and square it. Do the same for the Y co-ordinate. Take those and add them together. Find the square root of the sum, and voila! You have the length of the line. C'est formidable, n'est-ce pas?
Why am I devoting an article to this? It is exciting, and my ideas may, just may, provide some sort of inspiration... in 20 years... never the less!
Possible applications: checking whether an object is in range with a point. Maybe you want to see if your character is in a blast radius. Take the character co-ordinates, and blast origin, plug them into the formula, and see if that matches a set radius. Also, if you have a trigger that checks if the player or enemy is in position. Plug in the player and trigger point co-ordinates, check the radius. Final point on this strand, giving the player indication of how far they are from the goal.
This next one is what I am really excited about. I have been thinking this may have use in a path finding algorithm, most likely in A* or the like. I have not written one (and I WANT ONE). If you want to read about path finding, because I am not going explain it, do a Google search for "a star path finding" or the like. During the process, one must check what "nodes" are closer to the destination, and those nodes that are the closest get priority during the path check. Use the above formula. It should do the trick. Then you can go about the other process and what not.
I hope this article has been informative. Have you been inspired? Otherwise, I don't know why I posted this. Have fun!
Today is my birthday! A birthday is not complete without a mini-game idea!
Here's what I have been thinkin'. You just baked a nice, moist, chocolaty, Black Forest cake, for whatever reason, be it a birthday, or maybe you beat Portal. Now to digress a little. If you just beat Portal, do not follow their cake recipe! I repeat, do not follow their cake recipe! Trust me, I have tried.
So you just baked a warm, moist, chocolaty, delicious Black Forest cake. What's the problem? You can't sit down and enjoy it because everyone else is after it and wants a piece! Now, if you have one cake and a thousand people, you could just mash the cake, instead of giving everyone 1/1000 of the cake, but then this game wouldn't exist, so let's not. Even some out-of-this-world visitors want a slice, because they picked up your cake on their deliciousness meter! You must take all of you foes out with your trusty zapper gun before these intruders can goble down all of your
I have some more basic ideas down on paper, but this is the basic story idea so far. It won't really make a good full-blown game, but it can make a nice little project. This will most likely be made in Game Maker 7, because I don't quite know how to use Java in this way. Yet.
That's all for now!
P.S. Black Forest cake was always my favourite. Even before Portal came out. Inspiration for this did not come totally out of Portal.
P.S.S Yes, I spelled favourite with a "u". Thank you very much, spell checker!