Go download the code. Compile it. Run it. Enjoy the immersion in the game. Then read the code. Learn its under the hood secrets. http://neverball.org/screenshots.php
Neverputt Gameplay - Desura
Sunday, January 27, 2013
DigSim - Java Code from 1996
In my job as a Senior Software Engineer, I write C and C++ code for embedded applications. I have been employed professionally in that field for more than a decade now. I will describe the products for which I wrote software in some other post.
Lately, in my free time, I have been concentrating on studying various architectures and implementations for software that is open source. I think that it is essential that a software engineer steps outside of his or her own narrow product world to look around at other software that is out there serving a variety of purposes.
However, remaining current and well informed can become the bane of the software engineers existance. There is always some new thing to learn out there. While some software engineers maintain a life / work balance, there is always that temptation to swing over to the dark side and spent your entire existance eating and breathing software.
The key to survival is to know that no matter how many things are out there to learn, there are still only 24 hours in a day and that we humans are plagued with inconveniences such as having to sleep 8 hours of that day. Then there are such time sucks as eating, bathing, driving from point a to point b, exercising so that we don't die at 50 from a heart attack, putting time into making and keeping friends, finding a mate, rearing children to keep us from reading code 24 / 7.
To keep things manageable to improve your chances of success, you have to pick and choose your battles so that you don't end up being Jack of all trades, master at none. You don't want to be 'Software A.D.D', buying software book after software book and only reading the first 2 chapters of any given book before moving to the next shiny new toy. I have been Software A.D.D. before and it isn't pretty.
Applying this philosophy to my own life, I have recently picked a few applications to learn while putting others in the queue. Whether I will get through all the items in my queue depends on those incoveniences mentioned above. At most, I can pull 2 things out of the queue at one time and spend a little time on one and then on number 2. Emptying the queue will take years.
In a future post, I will talk about on gaming project written in C, using SDL and OpenGL that is consuming much of my learning time. The games are called Neverball and Neverputt. Go download them and play them. Download the code as well and be amazed at the code is as small as it is.
But for this post, I am going to talk about this fascinating digital simulation software called DigSim that was written in the Java programming language way back in 1996. It won awards.
I have held onto that DigSim code for more than a decade with ideas of learning its secrets. It finally popped up as the most recent thing in my queue. Yesterday, I recompiled the code and ran it on my Toshiba Satellite that runs Ubuntu Linux and it worked!! This is pretty exciting considering that the code is 17 years old. Yes. In 3 more years, it will be the 20 year old code that still works. To increase the learning, I am going to reimplement the application in some other language, possible Visual C# to serve my work related goal of becoming a Visual C# expert. Or possibly into Qt for Linux / Windows as I have also been trying to learning Qt. This will force me to learn every thing about DigSim. The requirements. The constraints. Refactoring. Code reuse. Idea reuse.
Why DigSim? Back in college, I used this proprietary software called B2Logic to draw digital schematics and I was always wondered what kind of under the hood coding was required to make the software work. Plus, DigSim is small enough to be digested by the mind of one individual in a reasonable amount of time.
Below are more photos of DigSim:
Subscribe to:
Posts (Atom)