• entries
  • comments
  • views

Programming Portfolio

Sign in to follow this  
Followers 0


I decided to use this entry as a surface for showing my programming experiences and portfolio in a brief summary for anyone who is interested. I know it's not the professional way to do so, but my profession is mechanical engineering anyway.

In advance, here are some links about some stuff I did and do:

Youtube channel

Paper modeller blog

My latest hobby: self-made technical Lego models

Gamedev.net Journal

The story

I am proficient with the C language, we started with it in the University. I coded on DOS platform and now I code on Windows. I tried some other languages and made things with those, but I stayed with C. Programming is a hobby for me, but a very important one. It's on a par with my profession.


The story begins in the University (Faculty of Mechanical Engineering and Informatics,
University of Miskolc) in 2004, in the first semester, "Computer science I." course, C language.
I fell in love with programming. My first graphical homework program was one of the best in the course.

From now, I will only list the programs that I made outside the few courses we had. Most of them are learning projects, but there are some programs that I actually use or used a lot.

My first own program was a prime number searching text program, that automatically made a little log file and printed some statistics when its execution was aborted. When the program was launched again, the counting continued from the number in the log file, and the statistics were also loaded from it. A percentage indicator showed the process during execution. Basic input (the highest number, to which the program should check the numbers), input validation and file usage.

3rd Semester, Computer Graphics. That started my 3D and graphical "career".

Tank Wars
This time, I started my first big (and longest lasting) game project, which I actually finished and polished. It is a Scorched Earth clone, a 2D turn-based artillery game with complex AI ("bot" type), graphical menus, color themes (256 color palette graphics), team play and free-for-all mode, mouse and keyboard input, in-game console, save/load game, popup windows, multiple weapons and shopping, cellular automata, effects, complex scoring and money management, and so on. The terrain is generated with random Bezier-curves.
I had to make two tools for the development: a graphical 16x16 bitmap sprite editor and a color palette editor.
I worked on this project (with pauses and other projects) for almost two years. We played with this game with friends for many hours.

Meanwhile I was exploring the 3D world with a small wire-frame display program with hard-coded vertex and edge data; and a 3D Bezier-curve editor. 4 viewports, one of them is 3D. The user could rotate and zoom the view, move one of the fixed number control points with simple keyboard interface.

Ray-casting program
Another "big" (learning) project parallel with Tank Wars was ray-casting. I could only use the 256 indexed color mode then (VGA), so it was limited. Anyway, everything came from my head, I reinvented everything apart from the rotation matrix. It has texture mapping, shadows, alpha mapping, Phong-shading (I didn't know what it was called that time), specular highlights, reflection and refraction. There was a static scene, where the user could "fly around" and make renders when pushed a key.
All the texture data were hard coded, but the models was generated by the program (sphere, cylinder, some boxes). Most of the features couldn't be applied to the same surfaces, because of the very limited range of colors.

This was a long lasting project too, so I made other stuff meanwhile. Some of the noteworthy:

A graphical minesweeper clone with mouse input. I made it mainly for learning, so the gamplay was polished and there was a very simple start menu, and save/load field features.
3D Rubik-cube manipulator. The sides could be rotated, rotating view, keyboard input.


I'm not sure when I was engaged in assembly programming, but it didn't last long. I needed that for speeding up my DOS applications. I didn't know that time, that assembly itself won't speed up my stuff...
Anyway, I made a small text viewer with the very basic text formatting features, like tabulator and newline, breaking wider-than-screen lines. It had a primitive syntax highlight feature: highlighting C++ style comments (//blah blah). It was only usable for small text files.

Windows and OpenGL Era

Rubik-cube program
My first program outside the class (well, my homework for my class was again one of the best: a revolved surface editor, where the user could place the points, then press a button, to generate the revolved surface from it, displayed in wire-frame mode), so the first OGL program was of course the Rubik-cube program. The user could manipulate the cube (turn the faces). It had a small pop-up menu, 2x2x2 and 3x3x3 modes, planar shadow, mouse input. Simple, but finished (uses GLUT).

Tank simulator prototype
At first, it started to be a small learning program for texture mapping. It became a bit more... I started using GLUT, but soon I dropped GLUT because of it's limitations, and moved to Win32 programming.
It focuses more on physics than graphics.This stuff uses the Fixed Function Pipeline, but implemented some advanced stuff with it, like cascade shadow mapping.

Read the descriptions on Youtube under the videos about the features.

There were several small programs for trying things out, like environment-mapping.


We were introduced to this program on the "Numerical Methods" curse. It was very high-level for my "experiences" with other languages. It was extremely useful for me, it gave me a new, higher-level viewpoint of how applications work in a higher-level environment. This new experience led me to Win32 programming.

Outside of the class (well, my homework was far more than a homework again...), I made a small image viewer program, with zoom, pan, menu, etc.
I made a lot of small programs with it during the university, many of them were used by my classmates too for speeding up monotonous design tasks.

I liked Matlab very much and I'd be happy to do some serious work with it in the future.

Back to C, OpenGL and Win32:

Minesweeper game.
This is a small, polished game, where you can scroll and zoom the large field. The windowed user interface was programmed from scratch.

Using the minesweeper "engine", I made a small game prototype of a game that looked promising when I fantasised about it. It turned out to be not so promising...

A little algorithmic exercise for the problem arisen a few times in the forums. See for example this.

For a little exercise, I made common beginner programs: Tetris, Snake, Breakout and a board game ("Brain Vita"). It was like a race, I was curious how much time it would take to make working prototypes. Well, Breakout and Tetris took about 5-5 hours, the other two took 1-1 hours.

For my job (Phobextools Ltd. 2011), I needed a Graphical CNC editor program. This program is very close to being finished, but my contract ended, so little bug-fixes, small improvements and the proper release never happened. Anyway, I actually used that program in a daily basis, so most of it was polished, and it just worked and did it's job. Other employees still use that program for work, and that is the most important. The application had to be too specific for the machine anyway.
You can read more about it in this Journal, for example here.
I didn't update the Journal about the project, above is an image of an earlier version (it has debugging info displayed, win32 status bar was added later).

Finally, the biggest project I'm working on:
the Paper Modeller. This is a modelling software for making paper models from 3D data. Paper modelling is one of my hobbies and this program is to aid it. I plan to release this program, because I found that most programs are either very expensive or aren't suitable for serious paper model makers.
I'm talking about the features, implementation, thoughts, etc. in this journal (http://www.gamedev.n...mmers-programs/).and this blog.

For a more focused version of my portfolio, click here!

Thanks for reading and feel free to comment!

Sign in to follow this  
Followers 0


There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now