• ### Announcements

• entries
68
57
• views
41436

The ups and downs of a self taught programmer.

## Did I just get played?

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.

## Pay attention to your math!

So this week I have been working on a JavaScript node.js server for a project I am working on. In our project we use socket.io to handle the connection to the web browser(So far best cross compadabilty) and then use a node.js tcp socket to talk to the back-end server. This server acts as a middle man message director between the two. Well I was working on some messaging and I could not get the node.js socket to send a second message for the life of me(or so I thought). I spent hours looking around the web and found nothing similar to my problem.

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.

Thanks guys,

Eric R.

## The struggle continues.

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.

Eric Ranaldi

## Moving forward

Well I had a opportunity to program a game server for a small start up. It was a simple prototype to prove that the concept could work. It was great working full time being home with my family. We got it done a couple week late but it was done. It WORKED and it worked good after a [...]

Source

## SWTOR, work, and programming.

Well SWTOR has been out what a month now? It's been a fun ride. My Juggernaut is level 50 and in full champion pvp gear. I have had a lot of fun and met some new friends in the process. With engaging quest system of SWTOR I hope to have a long run with this [...]

Source

## Life moves on.

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 [...]

Source

## game engine fun

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

## well...

Well time sure can fly by when you dont think to much about it. I went to take a lil break to play some WoW with my bro and friend adn man time flew. I realized today that I have spent a lot of time not programming and I wish I hadnt now. Oh well now that iam out of my stupor of playing that mindless game I should get some more work done. Screens and demos to come I hope. peace

## Update

Ok an update on my engine.. its a simple one and I want to keep it that way to make making the simple games easier.

Video/rendering - SDL
Surface Class
Can set transparency with ease.

Video_System Class
Can Init the SDL video system
Can Draw to the screen
Can set Resolution width and height
Can also set programname and icon
Can updatescreen and clearscreen
The Video system as it stands right now is just a bunch of wrapper functions to hide SDL and make things a easy one call.

Plans for the Video/rendering
I plan on intergrating SDL_ttf in the same way as the surface's to make creating and writing text a simple call. not sure about anything else right now

Sound - SDL_mixer
Effect Class:
Can load a sound effectt
Music Class:
Can load a music file
Sound_System
Can play music/sound effects
Can init the sound system
Very basic set of wrapper functions and I dont think i will get much more into it but we shall see

Event System:
This is a variatey of classes that make the event system not bound by the API but by a defined list of events.
Right now its very primitive and the keyevents have to still be set but the game code is not in the Message pump instead hte message pump dispatchs events to all registered interfaces. Those interfaces then check there list of events and see if they have something defined for that event and if they do they perform the event.
As of right now I have 3 problems Iam working on. Right now each interface is sent every event so say if someone uses the up down left right keys as movement in there game interface and then want it to do something in there menu interface like scrolling the options it will try to perform all of those.
I also want to setup a keybinding system so that the events bound to a key can be variable and change at a glance without going into the engine code.
And the 3rd problem is tied directly into the second in the fact that each event is hardcoded to a key and I would like to change that.
This is where iam working right now and will be for awhile and Iam actually having fun here.

For the future
In the future I plan on adding a mapping system. My goal would be to make it versitile enough to have a simple map that can be used as a board for a board game and it will also be able to do a fairly complex based tile map/Isometric tile map.. we shall see

Also as I learn more about it collision detection, animation, physics as I will eventually be making a RPG or shooter or something that requires atleast collision detection..

A Timer system for the various issues of timed abilities and FPS counters and all that jazz...

As well give the engine file i/o capabilities for the maps and settings of keybindings and whatnot... in the end i would love to go from a simple engine that can do things like tictactoe and conect four to do a RPG..

With this approach iam hoping to be able to be able to change to say OGL or D3D or something in the future with very little changes for the games...

This my friends is the Legacy Engine. As soon as I get off work ill make up a lil demo so you can see it (even though it is so simple)

As well Iam making a hangman game with what I have right now.

## Day off

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.

## IT WORKS!!!!!!!!!!!!!!!!!

omg I actually got a work event system HELL YA.. woot... omg I feel good... I have a werid screen update issue with it but thats fine i just have the video at the end of the handle event update screen instead of the system loop...time to do more testing

Also i fixed the updatescreen issue.. Seems during my editing trying to get things to work I deleted my updatescreen call from my main loop...so thats fixed

All i need to do now is have each class register itself automatically.. Iam sure I can do it through the class constructor... not sure though.

## YES!

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.

## New Baby!

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.!!

## A "finished" game!

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.

• 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.

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!

## Sleep

Days at work are getting longer and longer... hopefully I get some more done tommorow.. well good night

## In a time for math!

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

## No code but cool discovery.

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.

[color=#339966]E Ranaldi[/color]

Source

## Nevous today.

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.

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.

## Coming along

Well this idea is coming along... Its a slow process as I have been really tired after work these last few days and when I wake up in the morning Ive had to fill out a lot of paperwork. The paperwork is done so now work should pick up a bit before I go to work which should be good.. well good night all and good luck programming/drawing/watever you do

## Site redesign and update.

Spent a lot of time today updating the site with a new theme and adding more content to it that I had not added before. Work with hearts has been coming along necely. I am at a stage now where it starts to get fun, a lot less of the boring part of the development [...]

Source

## I love finding something new

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
class test_class{    private:        static SDL_Surface* main_window; // here is the error   // the rest of my crap};

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

## Long week

well my cousin and I have been working on a 3-D space shooter for a little while now and we have really started focusing on it in the last week or so. we now have a enemyship that flies around trying to fly towards you. You can fire you main cannon and the bullets collision is setup. Then today we added the ability to fire missiles and cycle through your different missiles.

Its going great and its a blast. Next we are working on a 3D sonar system for the cockpit and a "holograph" picture of your current target. As well as get more levels loaded and what not.
here are a couple screenies

More to come

Peace
Eric Ranaldi

P.S. we are using python and Panda 3d Game Engine

## I think its time

Well I have a working video/sound/event system. I think its time I make a simple game like hangman or something to test it all out. So now I will be working on hangman using this simple engine. After that I will do some more work on it then probably make another game.. What iam hoping the game will do is show me my desgin flaws so I can change them and fix them.. well thats all for now

## LGE

Well my engine's state system moved forward today. The event system I made while I was working on this a year ago just looped through every current state that handled event and sent it the event. The problem was if two diffrent states used the same key for diffrent things it prossesed them both. So now I have adde some ID's to each of my event handling interfaces and make a CurrentID that is static among all the interface classes so each knows which one is in scope and then the only one that recives messages is the state that is in the focus of the program.

The event handling class:
class Event_Handler{	protected:		 int STATEID;	public:		virtual void HandleEvent( Event e ) = 0;		void         SetID(int tempID){ STATEID = tempID; }		int          GetID(){return STATEID;}		static int   CurrentSTATEID;		void         ChangeSTATE(int TempSTATE){CurrentSTATEID = TempSTATE;}			};

The main game loop and state manager:
class STATE_System {	protected:		std::vector STATES;		std::vector::iterator iter;			public:				void DispatchEvent( int Type, int Arg1 = 0 , int Arg2 = 0 );			void RegisterSTATE( Event_Handler* Interface, int defaultstate = -1 );				void ClearSTATES();								void Run();				};

and my DispatchEvent():
void STATE_System::DispatchEvent( int Type, int Arg1, int Arg2 ){	Event e;	e.Type = Type;	e.Arg1 = Arg1;	e.Arg2 = Arg2;	for(int i = 0; i < STATES.size(); ++i)	{		if(STATES->GetID() == STATES->CurrentSTATEID )		STATES->HandleEvent( e );	}}

I dont know if its VC++ 6.0(I know I need to update) but for some reason it dosent like iterators that much.. maybe Ill play with them later. but for now Iam just indexing everything.

## All moved in.

Well we just got all moved in, and what I mean by that is I just setup my command center in my house for the first time since I moved here 2 months ago. I have been traveling so much its nice to finnally get a minute at home to relax and be with my family. It has also given me the chance to clear my head and get back to my computer and programming. Right now I am working on a game for the android phone that will hopefully be released in the near future.

I have lost a lot of focus recently and need to get it back. So here we go again I'm heading forward with my project. I know a lot of people dont like it but I finnally found a black background IDE layout that works good for me and Im loving it.

Well back to work

Eric Ranaldi

Source