Mega's Competition Dev Log #5 Posted on April 20, 2014 at 14:15
Yesterday, I was looking at the other dev logs. Some really high quality work you're doing guys. Really high quality.
Made me feel a bit down, actually.
So I stopped giving a damn; I'm not aiming to place well, or finish a game. At this point, I'm just aiming to make something and have fun doing it; so I'm doing whatever I feel like. At this point, I feel like remaking something of mine into a high-speed 3D game.
At this rate I'll either have a small demo of my platformer, or a demo of this out by the end of the month, but it's fine by me; I don't have that much time on my hands anyway.
Anyway... Screenshots. Lots of them.
The game has the probably temporary name of "Project Phoenix", based on my old game Tunnel Space. In that game, the player controlled a ship that was moving along an endless stage with various obstacles moving down the top of the screen; you had to dodge these, and the game got progressively faster.
My original vision for it was that the game was about a 'space bridge', essentially a huge tower with magnetic rails that specially designed ships could use as a launch guide.
I'm having this take place on the ground at first. I want a huge tower to be looming in the distance, and once you reach it you'll ramp up onto its surface and progress to the next part of the game. Eventually, you reach space. From here, I have a plan for a boss battle.
On the way, enemies and obstacles will spawn, and you can dodge/shoot them.
I'm working in Unity, and so far the process has been easy. The modeling has, likewise, been easy; I've had enough practice with Blender that I can get around pretty quickly.
Made the ship model in about an hour, drew the texture in a couple of minutes, generated a normal map from that and used Projection Painting to map the texture to the geometry. All told, about 2 hours total work, perhaps, for what is basically the highest level model I need to create (Especially considering that you'll be staring at the back of the ship for some time).
Also, it just suddenly hit me how easy this all is. I already have a ship racing at breakneck speeds through a canyon.
Dark Souls stuff
This, basically. Was having a bit of trouble with Ornstein and Smough; reached them on my offline profile first, and had no humanity. So I couldn't summon Solaire. Nor could I defeat that prick Lautrec at first.
So I ran back to Firelink Shrine and started exploring areas I was having trouble with before.
In summary, I destroyed the Hydra, and then Havel. Likewise with the Dragon on the bridge in Undead Burg.
Went back to Anor Londo and basically ran up to Lautrec and introduced his back to a Crystal Halberd a couple of times.
Then, I summoned Solaire and fought Ornstein and Smough again. Solaire actually survived until about halfway through the second phase of the fight, which is a far cry from the battle with the Gaping Dragon (He lasted all of ten seconds there).
Took out Ornstein first, then danced with Smough for about ten minutes (I was being extra careful).
So yeah, I did it. That was the most satisfying victory I've had so far.
Mega's Competition Dev Log #4 Posted on April 17, 2014 at 12:03
So, I changed plans last week (as mentioned in my last blog), and started working on a platformer idea I had on paper, then took that and simplified it (to a point).
I've been working on it throughout the week (Though literally every single time I've sat down to work on the project for more than ten minutes, I've been getting calls for computer repair work. Four days straight now. :<)
Managed to get some animations and the basic game mechanics done. Went for a movement system kinda like Hunter, added in some Megaman, and am throwing in some Metroidvania. So Megavania? Megavania.
Have a (slightly choppy) video:
Youtube doesn't seem to like playing videos back at 60FPS for some ridiculous reason.
A couple of notes on various gameplay mechanics:
The dash/slash move
This is going to be something you find in one of the early sections of the game, and can use to navigate tricky areas as well as attack enemies with a bit more force than the arm cannon provides.
It's called the Plasma Lance.
I have a couple of upgrades planned that do things like:
- Allow for dashing in at least four directions (Up,Down,Left,Right), possibly eight.
- Extend the range and power of the lance (The version in the video is basically full range).
- Increase the number of consecutive uses before a cooldown is activated. (At the moment it's unlimited, but I'm adding a Power bar that's going to limit the number of times you can use it like this to about two, with upgrades allowing it to reach around five bursts before it needs to recharge).
I'm planning on a basic Megaman style system where you'll be able to steal boss weapons after defeating them. No charge attack, but that's what the Plasma Lance is for.
I've got a somewhat mid-length set of maps planned out, with a few visually distinct areas that I'm going to aim towards completing for the competition. I want this to be something of a mix, as mentioned before, between Megaman and Metroid, so I want a bit of exploration, and items that help you progress. I'm probably not going to have too many 'forced' items, allowing players to make a Minimal run of the game if they wanted to.
And that's enough of that. I'm feeling exhausted after all this running around fixing computers left right and center.
Mega's Competition Dev Log #3 Posted on April 07, 2014 at 12:26
One week in and 23 days to go.
Most of my work has been on the engine, unsurprisingly, though I have taken the time to work on some art for the game.
My next challenge began this morning. It involves this:
These enemies are all static placeholders in the game; I have yet to add their AI. And on that topic...
Designing an AI system
With the original game, I was rushed. I'm rushed now too, but I just happen to have taken a hint from the last time that the copy-paste enemy code reuse in Exile was bad. It got to the point that, while I was working on the old improvements before I lost them, I just deleted all Enemy related code. That also happened to trim 5000 lines of code from the game.
In the original 'system', every type of enemy inherited some virtual methods from the Enemy class. And that's where the natural C++ code reuse ended.
One of the things I copy-pasted frequently was the billboard drawing code. For each enemy I had copied the same 100 line segment and pasted it in. Collision code? Same thing. Movement code? Same thing.
This time, I've been taking bits of code that I know I'm going to be reusing and adding them to the base class. The update method for my Fallen Knight enemy contains a single line:
For each of these I'll create a method in each derived class to handle these states (Or ignore them and change state to something that class can handle).
Then, using the methods in the base class, I detect and change between states.
I'm envisioning something like this:
void EnemyFallenKnight::ai_idle() // Starting state
// Wake up, we can see the player
this->state = AI_FIND;
// Find a path to player if possible
path = findPath(this->pos, Player::GetPlayer()::pos);
// Move towards path.front(), then pop it and
// continue on to the next point, until we're one step away from the
this->state = AI_ATTACK;
Some pseudocode, though I have a few of the methods implemented already.
Should have this done by tomorrow, if I can get a few hours of solid work in tonight.
On another front, I added in some better 2D editing to my editor. Box selection, which you can fill/set the height/flatten/fill with lights. Pretty easy, though reliant on keyboard shortcuts.
One last screenshot, then I'm back to planning.
Mega's Competition Dev Log #2 Posted on April 04, 2014 at 18:16
I've been disconnected from the net since early this morning... or was it yesterday? Can't remember.
Either way, when that kind of thing happens, I get stuff done. And things get stuffed up too.
I added two weapons to the game. The first is one that I wanted to add in Exile, but was too afraid to attempt to draw back then:
So yeah. Crossbow. Yay.
And then there's the gauntlet I'm working on:
This is going to double as both a fallback melee weapon and the primary spellcasting tool.
On the topic of stuffing things up, I kinda screwed up a part of my editor; the bit that allows me to change the height of floors/ceilings in 3D mode. I had a buggy bit of raycast code that was testing where the camera was pointing, and decided to replace it with a simple two-pass color based test.
Works (in a broken kinda way) like this:
- Render visible scene in solid colors. Each unique object to be considered gets
a unique color corresponding to its location on the screen.
- Get pixel from mouse location (Or crosshair location in this case)
- Use color data to determine what was selected and where it is.
And this works. Perfectly. I can get the exact x and y coordinates of the tile I'm pointing at with pixel precision. So I happily go and replace the raycast test with the results from this? My editor does something funky to the coordinates and decided that no, I'm pointing at the square at a 45 degree angle to the right and slightly away from me, if I'm lucky.
Probably a rounding error, but I'm too tired right now to track it down.
Well, enough of that.
Still playing. Still dying. Just dying a bit less frequently now.
Faced the boss of the Depths, and nearly defeated it on the first try. So close.
And I've now gotten to the point where I have a large number of places I can go, but I have no idea where I should go. In most of the new locations I discover, I peek around a corner and see something nasty and just Nope it back to Firelink shrine.
Well, that's all for now. I'll post more progress as I have more to show.
Mega's Competition Dev Log #1 Posted on April 01, 2014 at 08:23
Original blog in hide tag below.
Got quite a bit done today. Streamed for a while not too long ago (Archive footage here).
Managed to fix several bugs that have been with the engine since RPG4D 2012. The biggest one being that damnable 'stretched sprites' thing that was happening with ATI cards.
The difference between then and now is that I own an ATI card of my own, so I was able to stomp the bug.
Bug details (Show)
The general technique I'm using to create an axis aligned billboard is to get the view matrix with glGetFloatv(), which works fine (I originally thought that this was the culprit).
I did a bit of brute force cout debugging, and eventually pinpointed the location of the problem: my calls to glVertexfv().
What it was, after a bit of prodding, is that ATI cards handle the W parameter of a vertice in a slightly different way than nVidia cards do. I really just needed to blank out the w parameter, and everything would be fine. And everything is fine.
Here's a couple of screenshots from today's work:
And a shot of the icon for the game, which pleases me greatly for some reason:
And with that, I'm off to rest a bit before carrying on tomorrow.
Part one of the blog (Show)
I'll probably do a couple of these over the course of the competition, though not too many.
Anyway, I'm working in C++ for this one, using the old Exile engine. Fear not, there's no remaining game code; most of it was rendered useless between 2012 and present day, since I keep on changing map formats and the base Entity class. :P
As for the game, I spent a great deal of time last night thinking about what I wanted to make. My idea was, and still is for the most part, to create a game where magic is the primary weapon, and allow the player to 'create' that magic in various ways (Think Magicka).
Originally this was going to be a nearly pure puzzle/adventure game, but then I decided to cave in and do something I've been meaning to do for a while now: A 'sequel' to Exile.
So I present, in its current form, Exile 2:
And here's a comparison to the original (Not too long after I submitted it. Had already changed a few things, but the old lighting system remained).
Might look a bit odd at first, but that's intentional. I created a shader to essentially limit the available color palette for the game; it actually has the interesting effect of making the textures have more 'depth' to them as the light plays over them, with the darker parts of the texture 'darkening' first, and the lighter parts changing hue and brightness. Difficult to show without motion, but I"ll be livestreaming later, so I guess you'll see it then.
Basically, all I've done so far:
- Turned stock camera-view code into a 'player'
- Created three base textures
- Written and tweaked the shaders
Right now I'm thinking about what to do next. Maybe make a single enemy and a weapon I can start walloping that enemy with. I might take the chance to redesign my old enemy designs from scratch, possibly with a higher resolution appearance, and a darker feel to them. And less nose-punching/face-palming.
I've more or less decided, in this lead-up to the competition, that I'm going to be attempting a 3D game again. I have a somewhat lengthy design doc for it already, since I can't really act on anything yet.
But yesterday I hit into a roadblock. I can make some decent models, and animate them with little trouble... but hands. I can't model a decent looking hand for the life of me. And in the game I have planned, the player's hand needs to be visible for various reasons. And I can't have the player staring at a horribly mangled hand throughout the game, can I? Well, I could... but that's beside the point.
So I turned to drawing hands. And then I remembered that I'm going to have to animate them slightly (Due to another game feature). I nearly scrapped my idea at this point, deciding that it was going to be too much work, and I'd basically just have "Mime Simulator 2014" by the end of things if I didn't find a way to speed the creation of these buggers up.
And that's when I remembered the way Doom was made. They photographed and painted over their own hands (Holding toy weapons and such). So I sat down this morning and took a few test shots of my hand, and started plugging them into Exile's engine.
First result with minimal processing (Aside from the cutout and some basic color reduction):
Advanced Hand Technology! (Show)
Then I started playing around with scale, colors, alpha, etc.
Advanced Hand Technology (With Blast processing!) (Show)
And then I decided that no, I'd need to a bit more work. So I spent the afternoon playing around with various techniques, and finally settled upon a system of Posterization, painting a detail map in grayscale based on the original image, Multiplying the color and detail map together, and doing a bit more work.
Advanced Hand Technology (With Blast processing AND Reticulating Splines!) (Show)
So I've decided that, with a bit of care taken with the details and such, this method will be the perfect way to get some hands into the game.
And I started thinking, "I wonder if this can be improved upon". I grabbed some paper and started sketching down a few ideas. Different gameplay modes, challenges, puzzles, etc.
I sat thinking for a while about what set of tools would be best for this little project, and decided that Unity was a good choice.
Two days and a lot of swearingconsulting the manual pages later, I managed to build a very limited prototype:
This isn't what I want the game to look like; I'm aiming for a 3D style game board with some hand-drawn textures, a saturated toon shader, etc. Decided to see how far I could go with it.
Having a ton of trouble with Unity though; the coordinate system, and the way they set up the camera, frustrates me. I'm used to working in a simple Right Handed System where I've mapped the 'space', and it's easily manageable.
So yeah. The 'simple' game project I was going to pull off over the weekend has turned into a looming reminder that I need to find some learning material for Unity at some point.
Anyway... putting my 2048 clone on hold for now. I've got a competition to prepare for. :P
No new music; haven't spent much time composing since I haven't really felt inspired recently to make anything new; I'll probably be cured of that once I need some music for my competition game.
On the art front, I drew up my avatar the other day. Based on a character I have filed away for a type of post-apocalyptic setting I was thinking of a while back; robot's name is Decay, and in the setting I had in mind, was a last piece of machinery stalking the main protagonist. Note that I'm intentionally not calling this a game idea; I was actually thinking more along the lines of writing a book eventually based on this world of mine.
And then there's my banner. I made two very low-res bitmap fonts, one that uses single pixels in various combinations to make 'glyphs', and the other one a standard alphabet. And then I created a few scripts in GMS to get the effect you see up there.
Otherwise... I've been feeling a bit depressed. No repair work for nearly a solid month, and it's somewhat stressful; as a result of that, I've been applying for jobs left, right and center. Haven't received any responses to my applications yet, but I'll keep hoping.
Until then, I'll be working on the competition. I fully intend to win, or come as close as possible to winning; no point entering if I'm not aiming for the top :P
Well that's enough out of me. I've got to prep for the competition :3
Shinobi Playthrough Posted on March 12, 2014 at 14:59
I come from afar to bring tidings of carpal tunnel syndrome, frustration and evil game design. I come to bring you Shinobi, Sega's classic cash-cow in the arcades of the 80s.
There is a lot of dying in this video. If my mic had been on, there would have been many disturbing pained noises and possibly some swearing going on too.
I used to play this game on an actual cabinet back in 2000/2001 (Probably a bootleg, since this is South Africa, and I'm pretty sure that Sega wasn't shipping units to this country). It ate money like crazy, and that's about all I remember.
I also used to dominate the scoreboard, but most people didn't play for long.
Anyway... time for a review of sorts. Because I'm that pissed off with this game.
Shinobi is basically Ninja Gaiden's spiritual predecessor. You play as Joe Musashi, a generic ninja off to stop terrorists who have kidnapped a bunch of children.
Can't fault the plot. Because really, who cares about the story in an arcade title? :P
Anyway, the first level throws you right into the action. You soon learn that this game hates you, hates your family, hates your guts and wants to destroy your sanity.
One hit kills are the first thing you'll run into, and this is where a lot of my old friends used to give up. Shinobi is all about memorizing enemy locations, patterns, etc.
And when you're paying for each set of three lives, you're not going to be feeling like doing much memorization.
Luckily for me, I'm using MAME. So the only thing this is costing me is time (I seriously spent all day getting a usable run out of this game).
Later on, you start noticing some really evil level design. At one point in Stage 3, you jump into a little 'well' between two pillars, and four blue Ninjas spawn on either side of you. These buggers leap up (And are invincible while jumping), and try to hit you on the way down (They track you). This part alone took me a ridiculous number of tries to get past. And I had the fortune of not having to pay for this.
Now, using the South African costs of the old machine (5 ZAR, around a Half Dollar), and considering the number of continues I went through in my first playthrough earlier today (Only up to Stage 4 on Normal difficulty), I would have spent around 800 ZAR ($80) on that single (And incomplete) playthrough.
As mentioned, my first playthrough saw me getting to Stage 4. I was playing on Normal difficulty (More enemies in nastier locations), and had 3 lives per play. Unlimited continues.
And then you hit Stage 5. Guess what Stage 5 does? It doesn't allow you to continue. Now imagine this. You're a kid, you've just heroically mashed your way through the first four stages, you put in an extra credit on Stage 5... and then the game tells basically tells you "Haha, start over from the beginning sucker!".
Because that's what it does. So yeah, holy shit. I was getting tired of starting from the beginning in the vain attempt to memorize the patterns of the enemies in Stage 5. So I enabled the "Free Play" switch. This is basically an infinite lives mode built into the game; and even then the game felt unfair. I nearly ragequit on the final boss.
In the video, I cut around 20 minutes of me flailing around trying to figure out the pattern required to defeat it.
Anyway, faults aside, Shinobi is a solid game. The controls are fluid enough that you can respond to many split-second situations (With some exceptions), and the graphics look great for the time.
The music was interesting... for all of two minutes. Then they kept reusing the same tracks over and over, and it got really boring.
All told... I'd recommend that anybody who hasn't tried Shinobi, try it. And learn; as game developers, we need to steer clear of bullying the player like this. I understand that it was a 'necessary' business tactic in the arcades, but let's keep this type of design well away from home systems. :P
Well, I might record some more games. Already thinking of doing Shinobi 3 (Mostly because the music in that game is great, the controls are better... generally speaking, the game is better). Other suggestions welcome (I can record mostly anything, besides Minecraft).
EDIT: Oh, and a friendly Damn You to Visor for convincing me to play this again :3
Contra Play-through Posted on March 09, 2014 at 13:53
Was bored. Decided to try playing through NES Contra again in one sitting, with no Konami Code, no save-states, etc. Which is the only way I've ever played it :P
My brother and I often used to play this on our NES when we were younger (Along with Super C and SMB3); he isn't that great at dodging bullets, and he'd often end up eating into my lives after losing all of his. But we still usually beat the game pretty well.
And no, back then I had no notion that the Konami Code was even a thing. :P
EDIT: Oh, and this custom AMV thingy I found earlier:
A little blog Posted on February 19, 2014 at 05:57
Just decided to write a little blog about a few different things; I've been very busy recently so I haven't got much news on the development front, but I have other things to write about too. :P
Well, I did do a bit of animation work; I wanted to create a simple 16x16 character that had two movement animations (Walking and Running), as well as two jumping animations (For the ascent and descent), and the result was pretty decent:
Besides that, I have some billboard code to write/rewrite for Exile.
By night I'm a programmer/procrastinator, by day I'm a computer repairman. And business has been picking up recently.
I've now got a deal with one of the computer stores in town that does repairs whereby they will hand all callout jobs to me, and all I do in return is get all parts from them if the job requires new parts.
And then there's another deal I have with a small office in town; I'm basically their go-to guy for support, repair work or consultation. So things are shaping up.
I basically decided earlier this year that I'm not going to focus on 'making money' from my games, programming, art or music. Instead, I'm going to let the repair and support work be the 'work', and let my hobbies remain hobbies.
If I ever happen to make a little money off my games, or music, I'll consider it a nice side-effect of me doing what I enjoy doing; the second I turn it into a 'job', it becomes something I loathe. So no more of that. :P
And the other work
I'm still taking EdX courses like crazy; the one I'm working through at the moment is CS50x by Harvard, which is basically an introductory Computer Science course that uses C as the primary language, and touches on some interesting and practical subjects (Cryptography, Steganography and Compression being of particular interest to me), and I'm hoping they bring CS61 (The advanced programming with assembly and such) to the EdX platform later this year.
I'm also auditing a course called "Paradigms in Programming", and another called "Effective thinking with mathematics". Really interesting material so far.
Oh, and as a bonus for being a part of the CS50 course, I got a free 5GB extension for Dropbox about halfway through week 4 :3
I really haven't been sitting down and playing that many games recently, even during my free time. No wonder I was feeling stressed as heck over the past two weeks.
The Minecraft game on the weekend was the first time I have just relaxed a bit. I decided afterwards that is important to take a bit of time for relaxation every day instead of just working on my projects during my whole waking life.
Anyway, Dark Souls. I've been slacking off. Picked it up again last night and progressed my offline profile to where I was with my online profile. Why do I have an offline profile? Because I was getting really tired of being invaded and just wanted to progress a bit.
On that note, I have a huge list of games I still have to finish. Here are some I'm particularly interested in finishing/playing (Again, in some cases):
- Dungeons of Dredmor
- Skyrim (Doing a modded Hard run)
- Fallout 3 (Very Hard run)
- Fallout New Vegas (Hardcore mode and Medium run)
- Half Life 2 Episode 2 (I'm damned slow, aren't I? :P)
- La Mulana (Remake; practically finished the original)
- Magicka (Need to get my brother back to help finish it. Co-op is fun :P)
- Metro 2033
- Sonic and All Stars Racing Transformed
- Star Wars Jedi Knight II (Want to do a hard play)
- Starbound. NEED TO PLAY MORE STARBOUND...
- Minecraft. I still need to finish my fortress of doom in SSP, and at least build [i]one]
machine on the server...
Also, I just bought Humble Bundle 11. Got Dust: An Elysian Tale, Giana Sisters: Twisted Dreams, Guacamalee and The Swapper. They all look interesting, though specifically the first one and the last two. Giana Sisters looks a bit bland gameplay-wise, but the others look like interesting combat orientated Metroidvania style platformers.
EDIT: Was just killed by the elevator from the Cathedral back to the Firelink Shrine...
I only realized after I got on that the DSFix readme said something about physics and elevators and death...