About this blog
The ups and downs of a self taught programmer.
Entries in this blog
So I have been working on a server system for a couple of guys. I wrote a backend game server, a node.js/socket.io middleman client agent server. And then I wrote all the socket.io network message code in the browser to make life easier on the client/webpage guy. It took about 2 months and I worked my ass off. We did our first test and the server kept crashing, I fixed those problems. second test again (UGH!)... third test no crashes but they didn't like the flow. So the client guy and I reworked the flow and did one last test.. game worked perfectly and the guys backing the idea LOVED it.
They were all about the project. But I get a call today saying they want to redesign a lot of things and are going to put development on hold and that they will call me back when they are done with there design phase and they didn't see a need to renew a programmer's contract during this phase.
I have this odd feelign they are going to take my tech demo I made for them and go somewhere else with it. I know it was good experience and all but I was just looking forward to taking this to the next level with them. Oh well life moves on I guess.
Today Iam having fun trying to figure out a way to hide the implmentation of SDL in my engine while still being able to make it so my game uses my engine and not the other way around... I shall figure out a way soon i have no doubt but its still a pain
I also forgot to mention with all the stuff going on around here.. On Nov 5th 2006 my daughter Haylee was born. A healthy 9lbs 1oz baby girl.!!
So I finally finished a game on my own. It is a very simple concept of hang man modified to be more kid friendly. The game is called Word Game for now. The game starts off showing you a plane game with a couple UI buttons. And unfolds through a UI driven interface to play the game.
I really learned a lot on this project. Mostly on staying focused and having a plan. Before I even started i setup a very simple "Design document". Something I have only played around with in the past. I followed this document the best I could. The idea of having a plan really helped me to stay focused on the goal of completing a game. It also helped me know where or what I needed to go to next. It is a step I doubt I will skip again.
I gave myself 2 weeks to make this game. The first time I have EVER done that. I didn't meet my goal of 2 weeks. It did take me almost 2 months because of normal life issues and some slacking off. Thanks to not hitting my timeline though I learned a lot of lessons on time management. Also a few lessons on not getting discouraged.
I know this game is extremely simple but I had a lot of fun doing it and watching my kids laugh while playing it has been awesome!
I struggled with a few things.
It all comes down to this, I finally may have a interview for a game company working on mobile games here near my home. The owner of the company is going to be calling me in the morning. I am so scared and nervous even though I feel I am ready for the challenge.
- UI - I had never really done UI before so I struggled with getting it working right at first. Also I still don't quite have the scaling down for multiple resolutions.
- File I/O - Having a high score screen was a must for me. The topic of File I/O has always been sketchy for me(maybe because I don't do it enough). So it took some google but I got it to work but I feel I don't have a deep enough knowledge of the topic and I don't like that.
- WWW/PHP requests - Even though I didn't learn any theory on how it works, especially the WWW stuff in C#. I was able to get it working to save/load the high score for the web player version of the game
- Texture tiling - I have never really done much with graphics that was not super trivial and the concept is odd to me. So it took me quite awhile to figure out how to tile one image across 4 blocks without having to create separate texture files for each block. I didn't want to have 4x textures saved for every word in the game.
This project has re inspired me to brush up on my math and get to the level I need to be in order to understand the more in depth concepts that I am interested in. I am hoping that my next project won't be as trivial and that I can work towards a simple 2D RPG.
I have the code on github and would love if anyone with time on there hands would like to give me some pointers on the code. I don't have many programmer friends and so I don't get code reviewed often. I feel like it is a huge learning tool though to be able to get the input of someone with more knowledge then you. Here is the link to Word Game Github
You can try the game out on the WebGL version I have setup: Word Game WebPlayer
-WebGL is in a preview phase on Unity and has a lot of quirks. It may take a long time to load. It also will not work on IE.
You can also download the game from my webpage: Word Game Download
I hope to have another game up soon. I plan to to post development journal entries now that I am more comfortable with what I can do.
Any and all feedback is encouraged!
It is going to be a complete life change for me that I have been working on for almost ten years now. Currently I work as a crane operator for a sub company of General Electric. I travel all over the US and this is what I know as I have been doing it since my wife got pregnant in college. Easiest choice was joining the union with my dad and make good money. I have worked since then on my programming skills so one day I could do what I love and stay home with my family while I do it. But as this is all I know it is really scary to me to change so much of what I am doing on a daily basis. So lets hope I don't mess this up and I can finally make my move to professional developer.
See you on the other side. And thanks for reading my rambling here.
Well today was my birthday and so I decided to play some World of Warcraft with my bro and I went out with family... anyway back to work tommorow and time to get back to my game.
Iam getting into the middle of working on my GameState Manager and I get called out of the room to do something and come back and my laptop had been pulled off the table and the connector to my battery pack had been broken.. Currently dont have the cash to go buy a new battery pack so I was so pissed that now Iam not going to be able to work on my stuff cept on paper until I get a few more weeks of work in to get some extra cash.
Then I remembered that I had stored all my source code on my wifes computer because my laptop has been acting up.. (the pcima and cdrom died... as well my ethernet port died and a wireless adapter got messed up...)So now I just need to put my compiler on my wifes computer. This is the first time I ever backed up any data of mine and it has really made me think of its importance...
So moral is always backup on a regular basis.. especially when you have a 2 year old son who wont leave your computers alone for anything..
Well as is my current career a seasonal job I start today again. this job is 6-10s with sundays off(atleast its not 7-12s) so my programming is cut down majorly.. I was thinking about taking some paper and pencil to work and on break writing code and such but I dont know. We shall see how it goes hopefully my engine development still goes smoothly as it has.. maybe it will give me a chance to clear my head each day and I will be able to see new things I didnt see before. well Iam out gota get ready for work
Well I cant belive I wasted this time. I finnally broke the addiction called MMO's these last few weeks. Thats no joke I look back on the things I have acomplished in the game and the things I could have of accomplished in programming and game development and it makes me so mad at myself. I could have completed my first few games by now probably and be onto something I would be really intrested in. Anyway Iam pretty sure I have kicked it been almost a week and a half and I havent even desired to play WoW.
But on a better note I sat down and did some programming today and I got my first sockets program to work without a tutorial showing me exactly how to type it out. That makes me excited as network programming is what I want to do. So moving on with that and learning some gfx programming I should have my hands full. Also I got a new Ipod nano, that thing is sweet(kinda hard to get use to at first). So now I should have more moblie music to go around with me and I dont have to keep it stored on my laptop.
Well anyway time for sleep and work. Glad to be back and hope I can keep resisting any urge to play WoW(thinking about it, its really sad how it actually is addicting and I as well as many others have to fight to not play it).
The transplant went great my dad's new kidney is working awesome and my wife is getting out of the hospital today. So all is good and its time to get back to work!. Thank God that is over and all went well. more to come
Was reading one of my C++ books at work today and found something that would help me a lot.. handt noticed it before but now that i have a firmer grasp on things it helps a lot to see stuff i didnt see when i knew nothing.. Its funny I was trying to think of a way to do this and it was a simple keyword lol. this is why programming is so great.. you always learn new things. well iam out to conquer more obstacales of my engine take it easy
[EDIT] haha VC++ 6.0 wont complie it
here is an example
static SDL_Surface* main_window;
Dunno if its VC++ 6.0 or iam not implmenting the static member right i dunno its late and i just worked all day ill get my book outa my truck in the morning..
What the book says static does is make that static member the same for all instances of the class which is great for making a min window in a video system class for SDL... but it wont compile.. ill re read teh section in the morning. night all
Well I didn't get the job with the game programming company. So I'm back to doing my own thing. Hopefully soon I can be a part of something bigger in the software industry. But for now its back to working on my own stuff, which includes a heart game for the Droid and something network [...]
Well I didnt do any programming yesterday. I did think about the event handling system a lil bit but I think I cracked it
I just need to setup a stack/vector or something to hold all the diffrent interfaces that have events.. like menu - playgame - character and all that jazz.. But I figured out a way to hide the implmentation of SDL and still have it work well... Ima think about putting a bind system in so you can bind keys to the diffrent events.. we shall see.
I owe thanks to the event handling article. though iam not doing it the exact same many things taht have been made are modeled after what it did...
I dont want to give up on anything i start with programming cus that just lets me take the easy way out. But I just dont know how revlevant making a event system is to wnating to become focused on network programming. It is probably fairly invloved but I dont know. I want to get into the network programming and such and work on that but I dont want to give up on what I have set for my goal as of right now... just dont know what to do... maybe take a break and work on the network stuff for awhile then come back to this? I dunno any advice would be great
I have probably brought this up before. But I feel the need to share my updates on it. First a little background. I have been trying to get better at math, especially math that pertains to video games and 3D. I kept getting snagged and it was always at the beginning before anything really complex happened. Something was missing, I didn't have something I needed to grasp this. So I decided to backwards on Khan Academy. I started all the way back on his early math section.
I went through early math like a breeze. Got it to 100%. and got it in my head "maybe this is too far back". So I tried a more advanced subject again. Again I was stumped. Then I went through his arithmetic track to 100%. I knew most of it but I also found my major flaws in a lot of my fundamentals of math. HUGE gaps. So I was flying through arithmetic and gaining knowledge now. Then something crazy happened that I wasn't aware that his site would do. It stopped letting me do mastery challenges when I got more then a couple problems wrong. It made me practice. Which at the time I thought was dumb. But then I did I practiced since I had nothing to do for the rest of the day and I didn't want to jump forward again. I learned a lot of concepts about even multiplication and division I wasn't aware of. I learned how to deal with fractions properly. But I felt this was all superficial. I thought ya sure I "knew" this and was just not getting into it. Soon later I mastered this section.
I then started on Pre-Algebra (this was a subject I always loved in school). It was going well and I got to the part on exponents and radicals. Then I started getting scared so I watched a video on negative exponents(a video i had watch awhile ago and it was baffling to me). I watched it and boom it clicked I knew what was going on I could solve this. And I worked through it and it was going well. Same thing with square roots, cube roots, lcm, GCD. They all seem fairly trivial now. I kept wondering "Why does this seem so tirvial now?"
So I sat and thought about this. All that practice on the fundamentals I had done recently had really taught me what I was missing. My roof wasn't leaking, my foundation was cracked and the ground water was coming through. I am not saying I am a master but I am saying that I have a lot more confidence in myself now and I am glad I swallowed my pride and went backwards to even lower math then my kids were doing.
So my TL:DR is go don't be afraid of looking stupid for going back to your foundation skills and fundamentals. If your having problems be honest with yourself and go back as far as you need to it will only help you in the long run.
I am having a ton of fun now and am looking forward to geometry, algebra, trig, calc, linear algebra. And I owe it all to Khan Academy. The way he structures it really forces you to learn even if you feel like maybe it is just letting you blow past. When I was doing early math. I could master 6 subjects from not practiced in one mastery challenge. Now at pre-algebra I am only able to go from "needs practice" to "level one" in a single mastery challenge. It is forcing me to go back and learn and take time. and missing a mastery challenge question really means something if I can't burn through it while also having my challenge locked out. It really does make it feel like a game. I hope anyone who is struggling with math will check out Khan Academy
Well this is the first screen shot of Fantasy Battle. its not much but its the start of things to come..
Eventually the next day on random chance I tried to copy paste my first message(that worked) to the code block I was trying to send my message at. It worked. so I looked, the ONLY diffrence was the len variable the first message used a variable that had a sizeof(message param) summed for all the parameters being sent for that message. The next one had the len hard-coded. So I did the same with second message. IT WORKED!. I had no idea why to me the two should have been identical. I thought it had to be something in the buffer.writeUInt() function provided by node.js.
Being happy I finally fixed my issues I called my wife in(no one else around to talk too about my code). And showed her the issue... my code was as follows.
[source lang="jscript"]message.writeUInt16LE(8, 0); //this was the bad code[/source]
[source lang="jscript"]var len = 2+4;message.writeUInt16LE(len, 0); // this code worked.... [/source]
And my wife replies. "In what world does 2+4 = 8"... DOH! I spent all that time because I was trying to pass 8 instead of 6 as length for the variable. I did the math in my head and was just flying through stuff I thought I was a no brainer. It snagged me for far too long. This problem produced no errors or crashes, and everything reported success in sending/recevivng... I thought it HAD to be something buggy in node.js.
So a little annoyed at myself. But happy I fixed it. I figured I could help others remember that sometimes you need to slow down and check EVERYTHING you did even if you don't think it could possibly be the problem.
Whoa been a long week. Wife is 9 months along now and had a couple false alarms. Cant wait till the new baby actually gets here. It will cut down even more on my programming time.. But o well.
Anyway on to other things I got a lot more work done with a test server and client(cant really do much yet) got it going on my PC tommorow ill move it onto my network with all the computers in my house then ill try and find some people that want to mess around and try and connect to me from around the world. should be a fun week. Maybe Ill have a working chat by the end of the week. who knows.
More updates to come.
Well work is tiring but I have started taking my C++ books to work and reading them on breaks. I have gotten to understand pointers a lot better which Iam glad for because i remember reading somewhere that passing pointers to functions instead of the actual type is faster cus it transfers 1byte instead of 4(for a int). Iam going to try and find that again and clarify it.
Anyway work goes as normal on Engine. slow until works over but Iam trying to get some done. Still havent had time to actually tackle the coding of my event system. thinking about how exactly i want to do it. I think iam going to read through all of the SDL docs for events this weekend and then go from there. well take it easy eveyrone
So I didn't really get any code done last night. Which leads me into my cool discovery last night. I was browsing the forums on gamedev.net lat night and read a post where someone linked Stanford Engineering Everywhere. So I talked to my cousin about it and he told me that MIT was doing something simliar so I had to check that out as well. So after checking out both sites I began to watch some of the online lectures and was really surprised. Even if it is just the introductory classes in the CS departments it really is useful to someone like me who has been programming a long time but did it all self-taught. It starts to give you that perspective of a engineer that is hard to teach yourself by just reading books and coding your own random projects.
So along with working on my game and doing the math videos/exercices at Khan acadmey I will now be following these lectures and probably joining the study groups they offer. Hopefully it all works out and helps me with my ultimate goal of getting into the game programming field. I do want to clarify this does not replace a degree and I know this. However with someone in my situation who works 7 12s for my real job and is trying to find a way to work on this dream myself, this puts me one step closer to the goal of getting some kind of 40-60 hour a week programming job where im not traveling all over the US. And at that point I can go to a actual college around my house and get my CS degree and have the piece of paper.
I do recommend to anyone who is trying to teach themselves all they can to be a software engineer and make a real career out of this to check out the two links at the top of this blog as well if you need any help with math, Kan Academy is a GREAT resource for math. Especially with the way the site has been redisgiend and has excercies to test you and a whole achievement system to give you that "game" feeling that we all love.
Well my time is up, the kids are waking up time to go start the day.
Well good news! I made it past the programming test and now I am on to the phone interview. The process ended up going a little slower then I had anticipated but Im getting closer. It has been such a fun experience and Ill keep you posted but wanted to let you all know I have almost broken into the industry.
On a different subject my android hearts game is coming a long nicely. The whole game logic is there right now the 4 AI's will play a full game against each other. Working on a couple bugs and deciding how I am going to do the gfx part. I hear there are some good android engines out there but haven't really looked into them yet. In the meantime while I make up my mind there and work on my couple bugs in the messaging system I am implementing the human player and the interaction so it can be more of a "game" then a A.I. demo lol.
Hoping to know more about my future by next friday. I would like to give a big thanks to the gamdev community, even though I haven't posted a lot you have all helped me so much in just reading the forums and the articles on the site. I owe a lot of my success to this site and hope to be a bigger contributer in the future.
P.S. for some reason spell check isnt working.
Well its been a couple months since I was active. When I left I was in the hunt for a job developing games for IOS and Android. It came down to me and 1 other person and they selected the other person due to the fact he had the degree. I don't blame them I understand the importance of the degree and I don't feel my portfolio is strong enough to be able to ignore someone else's degree. Life moves on though and I keep working toward my goal.
I recently was in the hospital for suspicion of a heart attack(I am 29 and not in horrible shape or overweight). This was a major eye opener for me though on the importance of health. I have a much stronger drive in my life now understanding the fragility of life and how quickly it can all change. So it has inspired me to not only work harder on my goals in life but to make sure I enjoy all the moments in life with my children and family.
(Now off the personal not and back to what this blog should be about)
My android game I am working on is taking shape and progressing quickly now. I have rewritten the core systems to function more like a multiplayer message system. This way I can push out a version 2 faster that has multiplayer support with a client-server system. So now the *clients* and *server* pass messages back to each other as if they were all separate entities even though they are part of the same system. I also need to find a good "engine" for droid because I don't really want to do it all by hand if i don't have to. I know about Unity Android but I don't feel like this project is worth the 400$ out of my money at this time. Overall I am a lot more excited about the project then I was at the beginning of the project. Soon I should have screenshot and more details on the project.
Made it through the phone interview got the email yesterday, one last in person interview. I am almost there. It has been a hell of a ride now to keep my head in the game and prepare for the werid task of writing code in front of people. I dont understand why it scares me so much and stresses me out it can't be much different then writing code on a screen in your room. So over the next couple weeks it will be time to write small techinical programs to just help get my head in the game and thinking in the right place. Anyone with any advice on stuff ussally covered in a in person tech interview would be greatly appreciated.
This has been a crazy process, Im not use to waiting for ansewers about a job. Having to wait for a e-mail or phone call to tell me if they liked my interview is rough.. It has been a great expeirence... Thanks to all of gamedev for your support.
Finnally got a linux distro on one of my computers.. now I should be able to have some more fun.
Ya wife gave me her computer because she hardly uses it and my laptop is dead now.
So I threw a second HD in it and installed Linux. Time to go explore the OS
Well my wife is giving my father a kidney and the surgery is tomorrow. I have been sitting here all day and been browsing around so I figured I would come here and post a journal entry.
This surgery has really opened my eyes in my life to show me how short it is and can be if you sit on your butt and don't work for your dreams. I have the same disease as my father and this is a reality check to me to see this process and to see my dad in the condition he is in. So in the last few months I have really picked up on my efforts(I never stopped just was messing around a lot) to get a portfolio and start getting towards working as a programmer. And it has gone very well. I have been working on my math skills(which are in dire need of help).as well I have been not only working on programming theories and syntax I have been working on making sure that I use good style and clean code that is reusable and portable. And I actually have been programming A LOT in both C++ and python. Started working on network programming in unix and windows. So I am very excited for the future. Actually right now we are working on a project for my cousin a spaceship 3D shooter, and its coming along nicely. After that we have decided to work on a game engine for the practice and for our portfolios. I will be keeping this journal more up to date on what we are doing with our projects. I hope to get some good feedback and maybe even help some people.
So keep checking back in and read what I got. I may not have all the savvy programmer terms for stuff and it may seem weird how I describe things but I will still try and keep a log and journal of my adventures for your amusement.