Making a game

Posted by Mega on Sept. 19, 2015, 7:03 a.m.

I'll do the usual thing and keep a running log here of what I'm doing.

So, I dub this competition "MAG64", because I can. And as per usual, I'm biting off more than I can chew. But yeah, copious free time and stuff.

I've been wanting to create a very specific kind of game for a while now, but never got around to starting it; other projects need finishing first/work/etc.

But this is a fun little comp, and I'm needing a break from my main project.

The game I'm trying to create is essentially Eye of the Beholder with freedom of movement.

I guess you could call it a 3D RPG.

In the original games you were stuck to four cardinal directions and could only move ahead one "tile" at a time. The interface was mostly point and click (and tedious). Click on the Eye icon, attempt to click on the pixel you're trying to examine, repeat.

That's my backup plan, essentially: Create that kind of game (Pixel hunting may or may not be included).

On the other hand, I want to make a 3D game again on my latest branch of Exile's Engine.

So I got started with that:

Plenty of HUD space. Player status is going on the right, as well as a simple representation of what you have equipped.

At the bottom I'm going to have a message box for game messages ("The bat slapped you in the face with a trout").

Interface wise, I want things to be simpler than the old "3D" dungeon crawlers: Less clicking, more exploring. So items are going to be proximity based instead of "Find pixel, select Hand icon, hope you hit pixel". A little overlay text near the cursor will allow you to search around your feet for items by pressing a key. This'll bring up the Inventory screen where you can click on items to take them.

Enemies will "Freeze" the game, switching to a very basic turn based battle system. Depending on time and how well I'm drawing, I may just cheat my way past having to draw enemies by switching to a screen for a turn based battle, make it mostly text based or something. I'll have to see.

Adding these features is easy, each taken separately.

Adding them to the engine, and making them interact?

Let's just say I'll probably be somewhat more insane by the end of this.

Challenges and Obstacles

> CodeBlocks and CodeLite can't handle the project file. Too much source, too much spaghetti… I dunno what, but they inevitably crash. I'm building with CodeLite, but can't test the project that way (I'm using the command line for that so I can see my debug output).

> 50% of the code is Midnight C++ and I have no idea what it does.

I'm avoiding most of the Mystery code, focusing on areas I do remember. Fortunately, most of the gameplay related stuff was rewritten to be cleaner and actually works. Things like Entities, spawning, map loading, etc.

So, will I finish this? Probably not. But I'm going to try make the best damned 15 minute Demo I can.

UPDATE 1:

Bloody hell, I've run into the mother of all evil bugs in Exile that I'm not about to spend time tracking down. Changes made to parts of the project are cascading and causing certain types of textures not to load… which is pretty serious, and weird.

I'm going to take the resources I've made so far and go for Plan B.

UPDATE 2:

Ignore me, I'm the world's biggest derp.

Let's just say that I hit CTRL-Z with a bit too much vigor sometimes, and certain folders I recently renamed from New Folder didn't like it.

UPDATE 3:

Buried up to my neck in hastily made UI code. Exile had nearly nothing for UI, but I really need it now for the inventory screen, HUD, character sheet, menus, etc.

I can't even really implement items properly until I've got the "loot" menu up and running.

Fortunately, UI stuff is simple when you're in a rush. I'll clean up the code later. Along with the rest of the engine I said I'd clean up 3 years ago.

UPDATE 4:

Work on the inventory so far:

Got a bunch of features I probably shouldn't have worked in.

Background is probably going to change to a solid gray/blue combo for ease of reading.

If all goes to plan, the character equip slots will go on the right (Showing what you currently have equipped), and the middle of the screen will be used to show stats and info for the currently selected item (As well as options to Drop/Equip/Use).

Biggest problem I'll face sooner or later is page overflow: Basically what happens if you pick up more items than fit on a "page" of the screen. I'm planning on just having Left/Right buttons at the bottom to page between items if necessary.

UPDATE 5:

Rushing the rest of the inventory. It's a bit of a chicken/egg scenario. I need the Item representation to fill the inventory up, the inventory needs the items for testing, etc. Almost done with it though, and quite happy with the result; I think it'll be decently usable for future games if I clean it up a bit.

My plan for dealing with items on the floor, chests and such is to have a separate list of "Floor containers" that hold items. If you drop an item and are standing decently near to an existing container, it'll drop the item into that container.

If you aren't standing near an existing container, it'll create a new one.

Floor containers will render a billboard of the latest item dropped in the pile.

UPDATE 6:

Items can now be dropped and "used" (Context based. Will equip armor pieces/weapons). Dropping them currently drops them into /dev/null, since I'm still in the middle of implementing item containers.

Comments

twisterghost 8 years, 7 months ago

Mega 8 years, 7 months ago

I suddenly feel strangely motivated to do it.

Nopykon 8 years, 7 months ago

A 15-minute RPG sounds like a good goal for a game made in a week. Almost a bit long if it were me making the game, but your Ludum Gauntlet-clone I think I played for more than 15 minutes. Good luck!

Mega 8 years, 7 months ago

Yeah, that's pretty much what I'm aiming for.

And thanks!

On another note, I'm doing something I never usually do and using some Public Domain textures/cursors from OpenGameArt as bases for some of my UI stuff (Backgrounds, cursors) because I'm in a rush.

I've almost finished the inventory screen; will show screenshots soon. :P

death 8 years, 7 months ago

well this looks like fun. good luck on it. be sure to share the link if/when completed. I love retro styled RPG's and the thought of it being a little more modernized in terms of controls and user-friendliness is always a nice one. with the low resolution you can probably get away with some really simple enemy sprites that are just still images. no need for animations, especially if you got a text box to display everything. though some basic hit and magic animations might be nice.

Mega 8 years, 7 months ago

Just about done with the whole of item management.

All that's left to do regarding them is a container for floors/chests/whatever else can hold items.

Not seen in the above shot is the ability for the item description to display an image; there isn't one there, because I'm putting off drawing that kind of thing until I have time (So it might not happen).

Might just draw simple pixel-art representations of the items to display there.

@death: Yeah, I'm going to be using some effects (Screen shake, flashes, etc) to help give hits a visual cue.

Mega 8 years, 7 months ago

Ended up spending way too long messing with inventory code. Fun was had. Back to serious business now.

Mega 8 years, 7 months ago

Ran into a big-ish engine snag. Because I was halfway through moving the render code over to Modern GL, some of the important code involving Billboard sprites is stuck in Fixed Function code.

I've decided, instead of rewriting everything, I'm probably going to move my resources over to a Unity project I have waiting in the wings.

I've modeled a few things already, and was going to use them with the current engine, but then I found a flaw in my OBJ renderer that involves world transforms and I'm not in the mood to try figure out what I borked there.

Nah, I'm not giving up on my engine so easily… put too much work into this so far.

Cpsgames 8 years, 7 months ago
Mega 8 years, 7 months ago

Got everything cleared up, and billboards are rendering again. Basically, I had a very big toolchain problem. Just deleted my MingW installation, replaced it with TDM-GCC-32, recompiled my own libraries for it, and everything "works".

The billboard problem was specifically the newer 2.3 version of SFML. It tends to create an OpenGL 4.5 context on my machine, which doesn't have some of the old fixed-pipeline stuff I still have in place for billboards.

2.0 still supports a "legacy" context, so I'm going with that. I want to finish rewriting the engine to exclusively use Modern GL, but that's going to take a long time.