Hello friends. I am reviving my now morose and ancient thread with good news. Namely, my first ever, incredibly barebones tech-demo of a game idea is actually stable and playable. And if you'd like to take a look at it, here:
https://www.dropbox.com/s/5hfvngstsfvztx6/Lunkheads%20Zero%20-%20%231.rarThis makes the official Release #1 of
Lunkheads Zero, my alpha proof-of-concept for an alpha proof-of-concept for a theoretical game. A mere seven months after I made a thread for the purpose, and far longer than I'd care to think about since I first had the idea.
(Aq Fact: I have never been known for my good time-management skills.)
I haven't exactly been idle since then, I just haven't really devoted myself the project that I wanted to focus on. I've done a lot of studying in that time, and a lot programming my ass off at my real job, which is both great for training and terrible for my work ethic at home. I've made a lot of little prototype projects as well, although none of them are fit to demonstrate. And other shit like vacations, becoming a vinyl music snob, a month-long creative writing break, playing lots of old games for 'research purposes', my
Mercenary Kings addiction, you know how it goes.
(Aq Fact: There will be no elaboration on the above, so don't ask.)
I've finally been able to spend some real time building the game I promised myself I would, and it wasn't nearly the massive undertaking (so far) that I probably feared it would be. While this dead simple demo technically represents less than a week of effort, it's really the product of months of learning. Apparently skills require practice to build, and my normal job doesn't teach me anything like roguelike-coding. It's a welcome change of pace.
Anyway, I pared down my overall design to most basic stuff I would need to get started. When I decided what exactly I wanted to be in place before I started considering features, I had three very basic goals in mind:
1) Handle actions and objects in a halfway intelligent manner, instead of a Frankestein conglomeration of special cases.
2) Build a graphic user layer that won't inspire me to eat my own face any time I have to change it.
3) Control input and presentation through a basic console in a style akin to side-scrolling platformers, because nobody ever learned something cool from sensible plans.
In the process of fulfilling those three goals, I accidentally achieved a necessary, secret objective:
4) Implement a turn-based physics engine.
(Aq Fact: I am a wizard.)
I learned a lot in the process. Microsoft's developers really don't like explaining Interfaces. Imagining the step-by-step process of blast-waves is a powerful motivator. Multiple inheritence is as dangerous and temping as the Devil himself. Coding the distribution of momentum is far more interesting than whatever it is I get paid to program at work. And I don't know shit from Shinola when it comes to basic gravitational physics.
(Aq Fact: I have taught myself, in my mid-20s, that an angle can be horizontally reversed by subtracting it from 360 degrees. By waving my arms around in circles. I was far too amazed by this.)
For the curious, I've based my engine on a few assumptions. Each 'space' or 'tile' in the gameworld is about two meters by two meters in size, and each 'turn' in the game is about a second long. As it turns out, that and a mental protractor is all you really need to simulate crap flying through the air, as long as you don't care about wind resistance or dynamic collisions. Those are on the development list, I assure you.
(Aq Fact: The above assumptions produce a coefficient of gravity 2% stronger than Earth's 9.8m/s, give or take the length of one cycle. If I have my way, this will be the least of your concerns.)
(Aq Fact: When I implement mining (it's not in yet, don't ask) I plan to use a Dwarf Fortress-like convention where a reasonably skilled miner can dig out a space in about four 'turns'. With the calculations above, that means one guy with a pickaxe will hew out eight cubic meters of solid rock in under fives seconds. If you consider this an unacceptable break from reality,
Lunkheads will not be your bag.)
Of course this begs the question of why I even bothered building a physics system from scratch in a console game, when I don't know how to make stuff happen in real-time yet, and none of this explicitly has to do with my original goal of making a management proof-of-concept. Well, none of the stuff that I want to put in this game will really be worthwhile developing until the player can act within it the way I expect. I wanted an action-capable foundation to build from, instead of making a bunch of high-theory stuff and then trying to cram it into a granular game world.
More importantly, it just kinda came to me about halfway through building the interface that if I wanted to present the world to the player like a side-scroller, it would have to actually play like a sidescroller. I didn't put a single bit of thought into the engine until I realized it was necessary, and developing it was more fun, more informative, and even easier than I thought it'd be.
And now that I have it, it'd be a shame not to show it off. I need some sort of motivation afterall.
At this point you're probably saying, "You're a magnificent blogger Aquizar, but how does one play your game?"
For release #1 I have included a static map that lets you explore the terrain a bit and how to move around in it.
CONTROLS:
(Escape) - Immediately exit the game.
(F1) - Toggle between normal movement and Debug Mode. In Debug Mode, you ghost around the map in all eight directions unaffected by physics or collisions.
(Numpad 7, 8, and 9) - The jump keys, which fling you a little ways into the air. Left and right impart an angle so you should move two spaces up and one over. Naturally, you can't jump when you're already in the air.
(Numpad 4 and Numpad 6) - Walk left and right. To go up or down a staircase, simply walk into it and the little @ will climb up or down automatically. You cannot move through a diagonal space. You also can't move when you're in the air, unlike your typical platformer. That feature is still kinda up-in-the-air, ironically.
(Numpad 5) - Advance a cycle without moving. Note that all of the movement keys will also advance time if you can't actually move, it's just natural to have a 'wait' key in a turn-based program.
I'm not sure what exactly to work on next, besides polishing the physics engine. You'll quickly notice that funny things happen when jump around on stairs, and imparting more jumping power to the player-object than the modest leap you see here produces some weird effects. I keep having that nagging fear that I've coded myself into a corner where only my original test case will ever actually work as intended, but resolving a few math questions will help. After I'm confident that monkeying with the velocity on stuff produces the intended results, I'll probably work on tossing objects or something.
(Aq Fact: Funny things happening on staircases is an old and honored tradition in platformers.)
(Aq Fact: It's not polishing a turd if it was never digested in the first place.)
So yeah, this post is mostly just to get my first working version out there, to reassure the two or three people who care that I am in fact alive and working on this project. Y'know, finally. I do fully appreciate any feedback on the idea and control scheme so far, and especially hearing about any performance issues on different platforms since the program was made in C#. If you've got a spare minute, give it a try and let me know what sort of bells and whistles I should get started on early.
Download link again:
https://www.dropbox.com/s/5hfvngstsfvztx6/Lunkheads%20Zero%20-%20%231.rar