I'm temporarly using RPG Maker to make games (Back then I never thought I would use it, I had so much disregard for RPG Maker hehe)

but in reality I am working on my own game engine which is going to be flexible. Consoles is my chief goal. My engine should be ready during 2011. From time to time I'm sharing articles about my devs on my blog, so feel free to bookmark it.

Anyway so right now I'm working on a statless RPG. How does that work? Good question. Here's one idea I'm toying with though.

It has roguelike bump-to-attack combat, but attack results are entirely deterministic and, additionally, the player, monsters, and NPCs only ever have one HP. That's it. Any attack that lands is an instant kill attack. Thus the focus is moved to finding ways to indirectly deal with enemies, attack from a distance, and to acquire artifacts that ENSURE that you attack first and that your attack hits. Additionally you can also learn "skills" which are just flags that give you new abilities (like negotiating with enemies to get them to not attack, or to join you and basically be meat shields) and affect your attack order/chance to hit.

What do you guys think?

Logged

o/` I do not feel joy o/`o/` I do not dream o/`o/` I only stare at the door and smoke o/`

That almost sounds like you're "zooming into" the battles/gameplay with those minute details, but actually you're "zooming out" since you're reducing a drawn out hit for hit battle into one of it's inevitable outcomes (either you win, or you lose).

You also mention turn order and meatshields... If your goal is to focus on setting up the environment for a particular battle, then I think the 1hp thing is a pretty good idea. Perhaps an enemy at a cannon has a pile of cannonballs that you can steal to make the battle winnable? Stuff like that, right?

Essentially! Although in this case it'd be a matter of killing the power supply to some laser thing.

My goal here is to define objects not in terms of stats but in terms of behaviors. How this will ACTUALLY work is sort of hard to say.

---edit---

Specifically addressing your example.

A. Creature fires at the player.------------------------------------------1. Player enters the creature's line of sight, trigger a LOSEntered event on the creature.2. The creature runs the LOSEntered function in its Behavior script.3. This function triggers a Used event in the cannon.4. The cannon runs the UsedEvent function in its Behavior script.5. The cannon places a CreateInstance(Bullet) event in the GlobalEventHandler.6. A bullet is placed on the map beneath the cannon, with a flag being set indicating its direction.7. As per its Default Behavior, the bullet keeps moving south.8. The bullet collides with the player, triggering a CollisionAsObjectEvent on the player and a CollisionAsAgentEvent on the bullet.9. The bullet triggers a HitByProjectileEvent on the player and then dies.10. The player bumps back the bullet and checks to make sure that it's not a creature and that they don't get an attack of opportunity on it.

Now, a few things can happen.

11. The player has a flag set indicating they are wearing reflective armor.12. The player puts a CreateInstance event into the GlobalEventHanlder.13. A new bullet is created, which moves north till it hits the cannon (specifically, this bullet dies on collision, even if the enemy is reflective. Why? Otherwise, we'd end up with ping pong).14. Same as above, only the cannon isn't reflective and dies.15. Possibly place an CreateExplosionAt event in the GlobalEventHandler to take out anyone near the cannon.

Or.

11. The player dies.

« Last Edit: November 27, 2009, 02:18:04 AM by MeshGearFox »

Logged

o/` I do not feel joy o/`o/` I do not dream o/`o/` I only stare at the door and smoke o/`

if the 3rd bit of the 2nd byte was the reflective armor flag, you'd AND the value 00000000 00100000 00000000 00000000 against the character's "stats", and a non-zero result means you have reflective armor and can route your program flow accordingly. I see you wanted to use boolean logic, and this would be pretty straightforward.

When it comes to bit logic my head always ends up spinning because I start getting things backwards in my brain... I wanted to say you'd OR the values together for some reason, but I don't know why. AND would be right, right?

I think so anyway. You'd use OR to set your character's "stats". If you pick up an item you already have, the same OR operation will keep the 1 in that spot and no extra checking will be required.

if the 3rd bit of the 2nd byte was the reflective armor flag, you'd AND the value 00000000 00100000 00000000 00000000 against the character's "stats", and a non-zero result means you have reflective armor and can route your program flow accordingly.

I was actually just going to use if statements but your idea makes a lot more sense. Also I'm not sticking THAT rigidly to boolean logic (especially as the gameplay is being more developed).

Basically I'm addressing several flaws I see in RPGs:

* Arbitrary stats.* Inconsequential combat. * Enemies that all behave the same--they just have different stats.* Equipment obsolescence.

Logged

o/` I do not feel joy o/`o/` I do not dream o/`o/` I only stare at the door and smoke o/`

Right now this thing's sort of on pause until I get my dist-learn.ru stuff caught up.

---edit---

Actually found a shadowcasting FOV library that should work really nice with the existing architecture I had in mind (where there are various global/quasi-global maps that store data about collision, visibility, position, etc...).

The fovlib looks like it does angbandish style fov stuff. No idea how it works.

I had to like, switch some stuff in my code based on VARIOUS MISUNDERSTANDING about how things worked in C++. Dealing with that, I got rid of stringstreams because they're a bitch to work with. finally, having dealt with THAT, I ended up rewriting a small portion of the STL algorithms library because I was tired of being its bitch and decided to make it MY bitch and now it's my bitch.

Logged

o/` I do not feel joy o/`o/` I do not dream o/`o/` I only stare at the door and smoke o/`

With windows/direct x, I made a class to handle all of the rendering and boilerplate BS, and in that class was a windows handle, which I'm assuming is the same as your global screen object. I would make one global instance of that class in main, and would set the handle in that object equal to the main windows handle created in the main code, and it worked as if they were the same (they both point to the same thing apparently). From there, that global object always had access to the main window, which was important because Direct X functions almost always need a pointer to the windows handle.

As for storing stuff in arrays, are you talking about saving files to the HD? Obviously saving pointer data won't work because the memory won't be allocated to the exact same place in memory the next time you run the program... I'm still not 100% on how I am going to handle saving dynamic data... I was considering having 2 different files... one being a text file with the dimensions of the 2nd file (for initialization purposes)... god, I can't even remember.

I'm going to spend a few days making a bunch of artwork before I start coding hard. Having artwork motivates me to bring it to life, and therefore finish the program.

SDL. Also it was actually in an issue with me defining a destructor to free the SDL_Surface without defining a copy constructor that would, er, ensure that the SDL_Surface was getting passed by value instead of by reference, so that when the destructor ran, it wouldn't delete something in use.

However I'm not sure if you can pass SDL_Surfaces by value.

Quote

are you talking about saving files to the HD?

No.

Logged

o/` I do not feel joy o/`o/` I do not dream o/`o/` I only stare at the door and smoke o/`