About this blog
You are in a maze of twisty little passages, all alike.
Entries in this blog
Hi! This is my first journal entry. Ive been dieing to get a journal for sooo long. Finally I got one! Ive been a member for a while but im sure hardly anyone knows me.
Im a sophomore in high school and have been programming for a few years now. I usually use C,C++, or C#. The two kind of projects I usually work on are either games or compilers/interpreters for my own programming languages. But latly ive started to get more and more into gamedev so I thought this journal might help keep me motivated. Ill post some things about my game/engine, which I have a working prototype for the engine, but im rewriting it and switching from OpenGL to DirectX. Lets see how it goes, Ill make sure to post again tomorow!
I found some wrestling pics a photographer was taking at state. Heres a pic of me wrestling :
(im in the red btw)
Scroll down for pics and download link!
My first game, start to finish. Use WASD to move and either hold space to fire (slow) or you can tap M to fire fast. Once you run the game, give it a few seconds to load, sorry its so slow. Also forgive me for the large download size, the sound files are all mp3.
Tomorrow I will give details on my little adventure of making this game and some very good advice for other game developers working on their first game. I will also reveal my next project that is much more ambitious.
Tell me what you guys think! Flames welcome. :)
Download link: Hypertac
EDIT: Changed the bmp's to png's. Sorry steve :)
I have made much successful progress on my new game, Lask.
I know my journal may not be as entertaining as other journals but im really trying to get this one going. So please leave me feed back!
Id love to write up a nice post that goes into what exactly my game is about but does anyone out there even want to know? Please leave me feedback and tell me. :)
If people care, I'll also start posting a day-by-day update of what I did to the game. I know I love reading that stuff, even the small inner working details, so if you would like me to start posting that kind of stuff,
Here is the main character:
See Lask walk.
See Lask run.
Button Not Pressed:
If youve been reading my journal the last few days, I decided to dive into the land of electronics and microcontrollers. My ultimate goal is to get a keypad wired up and use this simple 8 bit "computer" to learn more about Operating System design. Tomorrow or thursday hopefully I will have pictures to show off a simple game using my single push button.
So this is my second post! Since I probaly wont beable to post a pic of a demo of my engine till this weekend, or get started on rewriting it really, I guess I will post some stuff other than that until then.
Heres some info on a language I wrote a while ago, it takes a lot from C and uses Lisp's Lists. Heres a hello world and list example:
print ("Hello, World!")
// Example of a list:
list1 = (5,3,'a',"hello")
list2 = (main@, list1, 5) //An example of everything is data..
} //see the main in list2? Thats a function we defined above but everything is data!
Everything is treated as data in this language. Variables, functions, code, are all the same. All functions take 1 parameter, a list. There are also no types and in the interpreter I wrote for this language, I also used a bignum datatype lib I wrote. (if you dont know, bignums are virtual variables that allow for virtually any size, limited by your memory not by the processor's built in sizes).
Let me know if you want to see more about this language or more about my other languages. Tomorow I will probaly post about my raytracing optimization idea that I had, though I havnt implemented it. Doubt I will, I dont know that much about ray tracers but I want to see what you guys think about it.
Sorry for the lack of updates, ive been working a lot and am now sick. I have also been working on the engine for my game a little so hopefully some screenies soon.
I just finished taking an official IQ test, I am in the top 95.2 percentile :/ Not as good as I had hoped!
Thanks for the feedback guys.
I need some comments on the problems below.
Read this. Then gimmie feedback.
Ive gotten a lot of progress on the game but first let me tell you a little bit about the game!
Its a 2d side scroller with very simple graphics. You control Lask. The game is unique because
it will have an 'Action' button like in Resident Evil 4 and many other games that lets you
interact with different objects in a certain way.
I want the 'Action' button(s) to basically be the main aspect of the game. I already have a
lot of sprites of Lask doing all sorts of different actions. You may only see certain animations
once in the game.
I want each level to be very unique and be different than all the other levels in the game
as opposed to most side scrollers such as the mario or megaman games where you play the same
way in every level throughout the game. Each boss will also be completely original in terms
of how you fight each individual one. (think Shadow of the Colossus)
You can sit idly.
You can walk.
Theres a transiton sprite for changing from left/right.
You can run, by double tapping the left/right key.
You slowly speed up when running. Once you get to max speed, which doesnt take long, you will
skid if you stop or change directions.
I'll worry about getting the animation speed just right later on.
I wish I had someone to do the graphics for me, I always imagined a simple stick
like figure, but I also wanted the animations to be VERY smooth.
#But my main concern at the moment is should the player skid when he stops running?
#Should you auto run and not even have a walk?
#Should you gradually go from walking to running or should I keep it how it is where you have to double tap the button to run.
Please give me your opinions!
A lot of stuff is still up for debate and just about nothing is set in stone for the game just yet.
I'll probably put up the current build for you guys to try it out within the next few days.
Im not sure what im going to work on next, but im not happy with the movement system so ill probably go tinker with that.
Edit: I made a help wanted post for this game. I need a 2d artist, a designer, and someone to do the sound/music. Clicky
I have finally finished typing the 34 files of code found in Appendix A of the latest edition of the Dragon Book. All the files compiled just fine. So tonight I typed up the last package, parser, which is the longest file at 207 lines long. I get 3 errors, one of them was just a typo so I recompile. 3 errors again. I look at the errors and it seems they are NOT typos. :(
Which really sucks because I typed all this code up just for there to be errors in the code that was published. It really sucks because I dont even know Java so its going to be a pain to try to fix it. It looks like the errors that are coming up all have to do with the parameters not matching the function declarations. I will post the code so anyone who wants to look at the compiler can attempt to fix it. I will give you a cookie if you do!
EDIT: Here is the link to the zip containing all the code. Please note that this is not my code, it can be found in Compilers: Principles, Techniques, & Tools, Second Edition. I tried to type the code just like it was in the book, but I still need to go back and add in all the comments. Here is the code:
I have taken on a very complex project... improving the C++ language based on my knowledge and experience. This will help me learn more about compilers, more about C++, and possibly create a language that SOMEONE will use.
The primary goal of the language itself is:
Create a more coder-friendly language.
I have a long list of features that I want to implement such as turning C++ into a more pure OO language. I will post all the features at a later time.
Many of the features are based on C#, D, Java, and my own experiences/thoughts.
I am implementing the compiler in C++ using boost::spirit; the code is compiled into C++.
For now, I am going to call this language !C, more as a satire of the naming conventions for languages than anything.
NOTE: Remember, this language is designed as my project... for me to learn for the most part. I am not an expert on compilers or languages!
...or that is will what it will be called for now.
Ive spent quite a bit of time just getting the sprite system set up so nothing really to look at just yet. But heres an in game pic. In the mean time, im going to bed.
More info/pics soon!
There is not 1 good python ide out there! This has driven me to the point of making my own! How come there isnt a python ide out there just handles making projects and listing all the files in the project? Wing IDE is just horrible, Eclipse is a monster, and Eric cost money for the windows version. :( All I want is syntax highlighting and project listing!
As you know, im quite interested in PL design. Apoch has been bringing up some good ideas and now others are even getting into it, so im hopeing everyone here thats interested can try to design a pure "real world language."
Ive been trying to write the "perfect language" for a long time but ive realized there is no perfect, just good, just better than whats out there. Ive also been looking in the wrong places, advanced OOP I dont think is the future, functional I dont think is the future, academic languages I dont think are the future. So what is the future? If I knew I wouldnt be writing this right now. But what I think the future is, is a language that gets things done in a very secure manner. Contracts and restrictions on existing variable types I think will be a very important feature in languages in the years to come. For example:
That guarentees the value of foo will remain between 1 and 10. What if it goes over? Im thinking an exception would be thrown or something, I havnt gotten that far.
Ive told Apoch to open a forum for the discussion of the language, heres the thread that he opened about it for anyone who is interested:
Oh my, ive actually been designing a little bit of the game before rushing into it!
Ok actually, AFTER I already rushed into it. As a result im going to have to basically redo most of the code since its messy and buggy. But ah well, I think I can get it working RIGHT and be done with this section of the code after this..lol yea right.
'W' jump, double jump, go up ladders
'A' run left, dash left
'D' run right, dash right
'S' go down ladders
Left Click fire
You can "dash" by double tapping 'A' or 'D'.
You can double jump by pressing 'W' while in the process of jumping already.
You fire in bursts.
You CANNOT move left/right while firing. You can jump though.
You use the mouse cursor to point in the direction to fire.
ANYWAYS, when I get back from Bama in 3 days ill redo the code and hopefully the movement will be bout done. :)
If you havnt tried out my game, Hypertac, please do. Scroll down for pics. Play through all three levels and beat the boss. It shouldnt take you more than a few minutes! DO IT! Hint: Tapping 'M' allows you to shoot a lot faster than just holding down the space bar.
Now on to a bit of a summary:
Hypertac was my first game that I completed from start to finish. The reasons I think I actually completed it are:
Its very simple.
I designed everything out first. This goes for gameplay aspects and internal code.
I made a todo list and worked through it.
Most people could probably make a game like mine, but 100 times better, in a single day. Well, I cant.
And neither can a lot of other beginning game developers. This feels like such a big achievement for me
and I hope other people trying to get into gamedev are reading this. So I have a few bits of advice for
anyone working on their first game:
Plan out how the games going to work internally, the more detail the better.
Know exactly how the games going to be, design before diving into implementation.
Break things down into tiny bits and get them done, one at a time. Make a very detailed todo list.
In other words: Plan, plan, plan, and plan some more.
But dont think everything went smoothly, oh no. I had originally planned for there to be basic background effects, like possible scrolling stars or a simple scrolling image. I kind of just left that out without even considering it. I also had planned for there to be 5 levels and there being 2 different types. One type being the Kill X Number of Mobs (which is what the whole game is) and also a Survive for X Minutes. I scraped that after some reorganizing and thought it would be too difficult and that my current implementation wasnt flexible enough to easily add in another level type. The only other thing I left out was a few details with the boss. I wanted the boss to fire at you (but instead I made him spawn more mobs) and also to "dive" at you in an arc. That I deemed too much work for what the game would gain from it.
I used to dive into a game, thinking I would design it as I go.
This is a definate nonono and is probably the main reason I have never finished a game start to finish.
Why is this so bad? You need to know how your code is going to be setup, for example your object heirachy
or even your basic game loop. Not knowing how my game was going to be, often left me with a feeling of not
knowing what I should add next, which ultimately led to me dropping the project. Also, not breaking down
the features/tasks into small pieces can cause you to feel overwhelmed, which is very easy to do. So plan
and get it done.
P.S. Backup your files :D
Like I said, im turning this more into a megaman-like game.
I just spent 6 hours on redoing just about all the code over and over.
So now you can run and jump and it animates it just about right.
Problem is when you land, it looks as if you bounce up a pixel or two then snap back down.
Im not sure where the problem is coming from. The code for the "gravity" and such is a bit of a mess and redundant but it may also be coming from the sprites, but who knows.
Im tired of looking at the code, I cant seem to fix it.
Im leaving for Alabama tomorrow morning til monday so that means no progress from me. :/
I first planned on working on the compiler today and maybe dabble with a net meeting like program that lets you view other peoples screens.
It turned out I worked on a key logger and making a class for the keyboard hook. Which I also used so that when I press SHIFT+CTRL+ALT no matter what window is active, my command line pops up.
Ugh, will I ever get anything useful done??
So I got bored and made that card at the top of my journal...ill end up taking it down in a day or 2, can anyone tell me what that is in the image???
PS Ill be adding stuff about the language and WebOS soon!
I am either too much of a loser or just too dumb too code anything else (or both), so I have been working on an emulator for a VIRTUAL cpu that I made up. It is extremely simple. It has a 8-bit wide data bus and a 16-bit wide address bus. It is based off of the virtual CHIP-8 (without the game aspects) and the infamous Z80.
Yes, this is 100% useless..but I have my reasons. Anyways, I have completed the majority of the instruction set. Including basic math ops, control flow, and bit manipulation. There are no interrupts or input/output instructions as of yet. Also almost all of the instructions act on 8-bit data and there are no 16 bit registers, that is something that still needs to be worked on. There are 16 8-bit registers, R0-RF.
The reason for this project is to setup an enviroment, though its virtual, that will allow me to work on Operating System concepts on a very simple 8-bit system.. and to hold me over until my AVR that I ordered gets here.
I will probably finish the instruction set, add some 16-bit registers, and then have the emulator hook any JMPs to locations in the first sector of memory, as to simulate a BIOS call. That way I can get started working on some OS stuff.. or what will more likely happen: rewrite the emulator after I find all the nasty stuff.
Can you say useless? :)
I am about to make the third revision to my virtual cpu, Fathom. This last one should support just about everything that I plan to add to it and there shouldnt be any more major changes after its complete.
But there are some design decisions I have come to, specifically about the instruction set. The Z80, IIRC, uses up to 4 or 5 bytes for certain instructions. But I orginally wanted Fathoms instruction set to use only a single byte per instruction, though thats impossible if it has a 16bit address bus. Now, I could squeeze most of the instructions (such as all of the variations of the LD instruction) into a single byte, if I cut down on the number of registers and such. But I didnt like that idea, nor did I like the idea of having to do something like
LD R0, 5
LD R13, R0
Instead of being able to do:
LD R13, 5
So I guess what im going to do is only have the core instruction in the first byte. What I mean by that is, LD RX, RX will have its own instruction and be expecting the next byte to specify which two registers it is acting on. I could also go somewhere in the middle of these two choices, some instructions fit all of the variations in the first byte, while others expect a byte after it.
Does anyone get what im saying? Or even care? :)
Well I didnt get any code done with the game for the contest. Dont know if I can finish it in less than 2 weeks! Bur ill try. Ill add more to this once I get home!
BTW: Did no one let my ray tracing idea (see the post below) because no one commented on it!