As you may know I was thinking about putting MalykAI up for now and moving to a different project. Thanks to a talk with Raymond however, I've decided that I'm going to finish it and instead of trying to come up with a project that's fun to make, I'm going to (try to) make a game that's fun to play.
So, one of the things I've been having problems with is extra content. I can't really give you an awesome weapon after you beat MalykAI (since there aren't really going to be weapons) and I can't think of any new items to hand out afterwards. So, I've shifted my view to a different type of extra content - extra levels. There will be about 5 extra levels available through the first run of the game. These will actually be the development/test levels that I'm going to be making over the months to come.
On the second run through, however, some of the original levels (excluding the test levels) will have a secret level. The extra levels won't really add much except for extra score or maybe secret-level-only items or modified versions of the regular items that are longer/don't run out.
Just a quick note on this. I was originally going to have a warp-whistle style system, but I decided instead to tie the level select into the gameplay. In the game the point of each level is to make it to the end, log in and shut down that quadrant of the system. While in the system you'll give yourself admin access and thus unlock the level allowing you to return and play it at any time (I'll figure something out for secret levels, but I'm thinking the test levels will have to be reached manually each time.)
Ok, I really need opinions on this. I was originally shooting for a Super Mario Brothers style game, but I don't really have anyway to add to the gameplay (nor should I. SMB1 and 3 were awesome and I wouldn't change a thing.) However, with a shooter game I could add tons of features. Different guns, modifiable guns, different suits, modifiable suits, vehicles, etc. The thing is I think I'll end up overdoing the simple gameplay and end up ruining the game [disturbed].
Although, maybe that would be a good thing (not the ruining of the game, trying to fit within the simplistic gameplay.) When I get into the industry (yes, I'm optimistic [razz]) I won't always be able to do what I want and I won't always be able to put every feature I want in. So, maybe forcing myself to stick to the simple gameplay will be good for me. I planned on doing a shooter platformer sequel when I was finished with MalykAI anyway. Yea, I think I'll do that.
Anyway, I have to head back to bed. I'll try to get a new demo out soon (or at least a movie), but something seems to be wrong with my map system. I feel like I missed something [lol].
So, I'm still not sleeping lol. Just been checking my engine for issues. Now, before I go into brag mode I want to note that I know not everybody is going to think my engine design is as cool as I think it is. However, I think it's really cool and it's making things really easy.
By far my favorite part so far is the input system, especially within the state and game classes. For example, I have the system setup to load the test map, update, and render it. Well, obviously I'm going to want to move around the map (to make sure it looks right and whatnot.) With my old design (the design I was using before my last design) I would have to catch WM_LBUTTONDOWN (to detect a drag start), WM_LBUTTONUP (to detect the drag end), and WM_MOUSEMOVE (to detect the actual dragging.) Then, in my WM_MOUSEMOVE code block I would have to calculate how much I've moved (first to make sure that I'm actually dragging and that the user didn't just click and move a tiny but, but also to see how far I need to move.) Or I would override OnLeftClick(), OnLeftRelease(), and OnMouseMove(), but it would be the same thing (last engine design.)
However, with my new design I added:
bool OnDragUpdate(const dft::Input::DragEvent &Event)
Camera.ViewingRectangle += Event.Offset;
And my camera can now be dragged and moved around. Setting up the editor will be easy as well since I'll just have to check Event.Objects for objects that need to be moved.
Another nice thing is that states are automatically added and removed from the input handler when they're set as the active state and a new state is set.
Oh, and I have decided that I'll just make a special set of GUI elements for the editor for this. It'll kind of be a tab system. There will be a floating toolbar and when you click a button it's page will open/close below the toolbar allowing you select/do what you want to.
Back to bed now; I've got to be up in a few hours for work lol.