Author
Topic: FB RPG with RPGMaker GFX (Read 24865 times)

Back at it. Added a scrolling chatbox. Should be able to do cool things like different colors and fonts and cool looking text borders. Need to add buttons to it for conversations, vendor choices, etc.

Thinking of adding a bit of combat functionality. Probably going to go with direction and range based auto-attacking that registers damage in the chat box every few seconds.

At this point my vision for combat is close to Ys with a few differences. One, combat will take significantly longer per enemy. Two, you'll aim range attacks and spells with the mouse. Three, it'll be significantly more complex. Four, it will incorporate rock/paper/scissor type mechanics. Five, it will emphasize and reward preparation and tactics.

I intend to have ranged attacks and spells fire at a certain trajectory, based on the direction of the mouse. Some will track or move randomly but others will fly in straight lines, requiring aim.

With this system the most complex thing I'll need is A* pathfinding, which should be doable.

"Things like Basic and Free Basic provide much-needed therapy and a return to sanity and a correct appreciation of people. The arrogant folk really hate a word like 'Basic' - fine, and good riddance." ~ pragmatist

AI Modes – I have the following AI behaviors; Wander (random movement), Attack (move toward player and turn on attack when in range), and Dormant. I haven't made Flee yet; I need to be able to identify safe zones. A shortcut would be to just run from the Player.Party Members – technically there is a party system in place. It doesn't work well, pretty convoluted. However, at this point party members won't attack themselves, and will follow each other in a line. Maybe.Particle System – improved this quite a bit. Particles can be spawned by any NPC (although for some reason the first NPC seems to get the lion's share of new spawns...), can die via timed expiration, distance from origin, or collision, and have full collision checking with NPCs and terrain. I can now do spells and effects; one use is to have gathering nodes (which are technically NPCs) spawn particle effects, like glittering fireflies or something.I need to work out where particles spawn when created; should be at X distance from spawning entity, along the angle it will head. Should be easy.Teleporters – only need a bit more work. So far they teleport any qualified entity and start an effect that can be changed, and will be eventually. Got a nice fade in now. One problem I'm having is determining the destination of the teleportee. I need to make a “search area” routine to find a viable destination. So far my units are being teleported atop one another I've made them quite efficient, fps-wise. The collision detection on teleporters is going to have to be very efficient, since there may be hundreds on each map. I've made them able to be rectangles, so I can cover the entire map edge with just one teleporter. However, since they have to check each NPC every frame, it's still pretty expensive. I need the collision detect rate to be pretty high, since it's annoying to have to stand in one for a second before it teleports you. Depending on the ratio of NPCs to Teleporters, it might be more efficient to have each NPC check all Teleporters when they move instead of every frame. At this point, I've got a system that limits teleporter checks so we'll leave it at that until I have a fully functioning map, with relevant amounts of each.Entity Editor Panel – rudiments are up; I kind of need custom buttons here. This panel will be vital for testing and creating content, especially combat. Ideally I'd like to be able to monitor a unit's AI decisions, etc, live while playing. As well as create/destroy/edit entities.Chat Window – got this up and running nicely. Not a lot of flexibility yet, though. Still need to implement being able to display pictures (non-text) stuff in it. Something like a progress bar, or whatever. Perhaps icons for items. Also need to get custom buttons working, so I can have choices here; i.e. dialogue.Problems & Projects

Scope – turns out I've been a horrible programmer this entire time Scope problems abound; I didn't fully understand what people meant when they say, “global variables cause problems.” I've been using variables within subroutines that are also used in both the routine that called it and in routines it calls; leading to many shenanigans. Fix is work in progress.Buttons & Menu Structure – back when I was playing World of Warcraft I got a sense of just how complicated interfaces can get. I underestimated. I'm currently working on a parent/child system to allow buttons to identify each other, allowing simple dialogue boxes atop other windows, etc. Otherwise, I'm going to have to go super simple like Ultima style menus. That's not bad, I suppose.Unit Radius – I'm using 24x32 sprites. That leads to a natural radius of perhaps 6 for small units, and 12 for big units that touch the edge of the graphic. However, the inclusion of variable sized units throws huge wrenches in multiple systems. Not sure if I'll be able to retain variable unit radii.User-Defined Type Conversion – I failed to find a way to convert one custom Type into another custom Type (without explicitly listing each separate variable). This is going to be a pain when dealing with integers and singles; both of which are used frequently (Integers for mouse coordinates, tile coordinates, etc, singles for timers, NPC coordinates, etc).Currently I'm simply doubling up my functions, naming them appropriately; IsPointOnScreenInt and IsPointOnScreenSng, etc.Valence Points – I need a good solution for NPC walkability, pathfinding, etc. One idea I had was Valence Points; a set of points at certain locations around an NPC (or Teleporter, or whatever) that can be Occupied/Empty. So for example when enemies are surrounding you, they will seek out these Valence Points rather than simply moving straight toward you, arranging themselves in a circle around you naturally. It will also help AI, for example when determining what strategy to use to attack; range or melee. If all nearby Valence Points of your target are filled, use ranged. If one VP on the other side is empty and you have no ranged, use Sprint. This also works with store keepers (wait in line since his one VP is filled), Party Members (escort mode, formations), and teleporters (so you don't all cluster at one little corner).Ooh, good idea! Use Valence Points on teleporters to set destination coordinates! If all available Valence Points at the destination are full, don't teleport yet. This system is one that causes problems with variable unit radii. VP locations and “layers” will change depending on unit size, and that creates huge complexity. This is like handling multiple tile units in a tile game; always more complicated.Basic Combat – started on some basic combat elements; damage, death, regen, spawning, etc. I've got a “master entity” spawning child mobs in a certain area when it has under a certain amount of children. This will be the basis for random mob spawning, as well as gathering node spawning. Auto-attack and damage work, so when I kill a mob it (fails to) spawn another. Currently I'm fighting my muddled Party system to stop NPCs from attacking themselves and non-active mobs, etc.

I won't restate anything in the videos, that seems to be my preferred logging method these days; I'm enjoying uploading gameplay footage and making commentary.

My current plans are thus;

Implement a functioning Looting/Backpack/Merchant system. I need to be able to loot corpses, deposit items in containers like campfires, and buy/sell to merchants.

and... that's about it really.

Adding that system will unlock quite a bit;

I plan to release another video showcasing gameplay, as opposed to focused on talking/updating/informing. So I'd make a big play field with random scattered mobs, merchants, and guards. That'll allow me to record a nice long video, as well as provide a base reference point to compare added functionality. So when I add hunger systems, firewood harvesting, crafting, complex combat, spells, AI behaviors, etc, viewers can see the difference clearly.

As for engine level goals, I'm working with the following paradigm;

Effects, Behaviors, and Skills. Behaviors use Skills, Skills apply Effects, Effects affect Behaviors. Obviously there are many contradictions here; I've merely settled on something that works and I'll fit everything into this paradigm regardless of what is intuitive.

I've made some pretty good improvements regarding performance; did some optimization, added some debugging, getting better at understanding frames and how to use them. My timers are working well, having lots of fun with those.

After that, it's a straight road to the first demo!

The engine is largely functional; it's just adding content. I'm sure a few system here and there will be required, spells will need some work. Oh! Dialogue. That's right, that's a big one to be added. Oh, and Factions. Toughie.

Hard Question; will items be "alive"? For example, I intend to have a campfire fed by firewood. Will firewood in your inventory get wet in the rain? Will meat rot? Will potions lose efficacy? Hard Question; will I include lighting? It's very easy in 2d tile games, adds a LOT for little effort.

Well, I edited my previous post to strike out the things I've completed since. Just about ready to strike out looting corpses as well.

Got a lot of progress toward the next video, as usual (and as is apparently typical in the field) it's hard to make oneself stop at any given point and make a video; one is always driven to achieve just that little extra feature that'll add so much oomph to the next update. I saw this writ large with Josh Parnell's Limit Theory.

However, given the scale of the revamp that was required to get campfires working properly (rather than just hacked together piecemeal), I now have to repair much of my previous structure regarding Behaviors/Skills/Effects of my monsters. Can't really do a video when monsters are malfunctioning, even if their corpses drop loot (almost, anyway).

So far it's been about 12 hours of work from my last video, I'd estimate another 6 max. Given the accuracy of my previous estimate, which was 6 total, we'll see.

Sadly one major project I ran into is that I have to do almost another entire map. At minimum I need roads, rivers, and bridges connecting two towns around a lake. Sounds like not much but my tile editor is fairly lacking. Slow going there.

Looks very complex and intriguing. How is it developing? What's the status now?

Logged

"Things like Basic and Free Basic provide much-needed therapy and a return to sanity and a correct appreciation of people. The arrogant folk really hate a word like 'Basic' - fine, and good riddance." ~ pragmatist

Thanks all for the interest, I'm officially closing this Work In Progress, not due to abandonment (though that is still likely) but because I've moved the game on to other engines (Java, Slick2d, Unity, and C#)! Check out the linked Youtube channel for updates (though there aren't any yet)! Thanks, I love you all.

(figured I'd do the courtesy of wrapping this up)

PS - the primary reason I moved to other engines was lists. Developing a comprehensive approach to lists was beyond my capabilities (and interests) and lists are absolutely crucial to just about anything it appears. I'm sure there are fantastic solutions to lists in FreeBasic, I just figured that if I was going to start importing libraries into my game I may as well go whole hog. Toodles!

"Things like Basic and Free Basic provide much-needed therapy and a return to sanity and a correct appreciation of people. The arrogant folk really hate a word like 'Basic' - fine, and good riddance." ~ pragmatist