Warning: Wall of text.
During my usual 2AM or so argument with myself about the benefits of going to bed at least some time during the AM hours versus continued consciousness via caffeine, I saw an old picture of what Exile originally was. This one, specifically:Yes. Exile was 8 blocks being rendered with my Minecraft Texture pack… So I began to think "How did I arrive at Exile from that?". And from there, I started thinking "How the hell did I get to that in the first place?"So after much thinking, my output buffer is now full, and I need to flush it.This is going to be how I started graphics programming. Focusing mostly on the 3D side of things, though obviously the 2D aspects are the foundation I built upon.The real beginningI remember telling everybody about how I started learning Pascal about 10 years ago, and that it was my first foray into programming… well, I was wrong. But who can blame me for forgetting?My first programming language was C64 BASIC. In 2001. Before you start wondering how, I'll just say that my uncle had a lot of old machines lying around (He even gave me a C64 in it's freakin' box at some point… The power supply burnt out though). And the library still had a lot of those old "Game" books. You know, the ones where you laboriously type out an entire program listing and type RUN at the end to play a simple game.Being an intrepid 9 year old at the time who wasn't afraid of ripping things apart to see how they worked, I modified and tweaked and eventually 'understood' what was going on. SUBs still confused me, but I could get things to draw on the screen. Of course, I didn't have much time to do anything, and we didn't have any convenient blank tapes lying around for me to use as storage.But fortunately, somebody gave us an old 486 PC (Complete with ancient dot-matrix printer that used to make our whole apartment shake when we used it…) with Windows 95 and a defunct CD-ROM drive.It didn't take me too long to discover QBASIC and it's help files. Soon I was pushing pixels around on the screen, drawing simple shapes and trying to move them (Flickery fun). All of this was pointless from a modern perspective, but that's what jumpstarted my programming. Without discovering QBASIC, I wouldn't have had the slightest idea as to what the .PAS files in the one folder were (They were similar to .BAS, so of course I opened them… >_>)PascalWhen I discovered Pascal, my first thoughts were "This is a mess". That was because I was used to typing out very linear programs with only a few SUBS here and there. Functions and structures were beyond me.Eventually, I figured things out and started to love the layout of the language. My only problem was the fact that there didn't seem to be a graphics library (This gleaned from days poking at source code files.) So I kept on mucking around in QBASIC until I got my hands on Turbo Pascal, almost two years later.When I finally did get the compiler, I dove right into the help files and documentation and started looking for ways to get the graphics mode out of "DOS", as I used to say. Eventually, I found what I was looking for. The Borland Graphics Interface.My first program in the new system was a very buggy graphing program that has since been lost to time/space. It drew a white background, used a bitmap font that looked vaguely like the Win98 system font, and drew a simple 8 point graph on a grid. I was proud of that.It's interesting to note that, while I had Turbo Pascal at this time, I also had Turbo C and Turbo C++. But I ignored the others as being "rubbish" and "inferior". I never change, do I? :PFirst forays into 3DI'd seen many a 3D game by now. Duke Nukem 3D, Quake 2, several PS1 games (Some superbike racing game was my favorite, and Spyro the Dragon 3…)So of course my ego dictated that I, the fledgeling programmer who jumped right into the graphical side of things and still ignored such important things as data structures, would create a popular 3D game in a single day…And that was the beginning of my eternal frustration with 3D programming. I already had the idea that each 3D object was made up of simple shapes. Polygons, basically. So I decided that I could store each point in an array. Now, at this point, the Z axis was non-existent to my limited knowledge of geometry. So I called my Z axis the D coordinate, for depth.Soon I had a copy of the Windows 98 Starfield screensaver running in a measly DOS box (320x200 pixels, I believe). The next logical step was a 'real' object… so I tried a cube and immediately hit into something: Perspective. No matter what I did with my code, the wireframe cube looked wrong. Eventually, after much hackery, I accidentally figured out the linear interpolation formula for basic perspective… Looking at some of my old code (Most of which is lost forever on floppy disks I can't read, but a few fragments remain on some old CD backups), I did something more or less like this:int tx = x+(d/100);
int ty = y+(d/100);
He's still at it.
I thought they were the same person.
Huh.I love how the crosshair for the fps in that video is the Windows loading hourglass
I'm drooling :3
New site challenge:
All competition participants must go back and finish at least one of their entries.If you've already finished one or have never competed before, you must start a new one.We need a competition to finish previous competition entries.
A competition to go back and finish someone elses competition entry
I'm totally hosting this competition.
EDIT: This derail is all my fault.When in doubt, roll your own.