|
|
I now have a simple combat system working. The style of combat was influenced by some of the older RPGs I played growing up, such as Ultima and Shining Force, however I plan to add some customization eventually to allow other types. To supplement the combat system, I have also created the Monster Editor and Battle Editor. The Monster Editor is similar to the Character Editor, and allows you to define monsters for your game, including attributes such as attack, defense, hit points, and experience points gained when the monster is killed. The Battle Editor is pretty basic at this point. You can choose a map to use for the battle and define random encounters for the battle. For example, you can specify the total number of monsters that should appear (random or fixed) and a list of monster types to select from when populating the battle area. In the Map Editor, battles can be attached to tile regions, as I mentioned in the previous post. I have also designed a party system to allow multiple characters in your party. There are a few other small things I can think of at the moment that have added: a dialog when generating previews for resources to allow more flexibility in the preview image that is created, moving items within your inventory and to another character's inventory, and the ability to click on an object such as a sign or NPC, and have your character automatically walk to the object and activate it.
Hopefully this post hasn't been too disjointed, I just wanted to get another update out here. I think I'm going to wrap up what I have so far, and begin putting together a demo game that will show what functionality is available, and then get the toolset released sometime in October. I also have a forum ready to go that I plan to open once I release the toolset. I also need to start working on a section on the site for documentation... |
As the subject suggests, I have made some good progress with NPCs, dialogue, and scripting. In the Map Editor
you can now place NPCs on the map, similar to the object placement mode. You can bring up a properties dialog for the NPC from the right-click menu to specify the character's name, movement region, and dialogue. For the movement region, you can select free movement, no movement, or a defined movement region. A movement region can be defined by selecting an area of tiles, then clicking on "Create Tile Region" from the right-click menu. In-game, the NPC will randomly move within its movement region. Later on, tile regions will have other uses as well, such as defining regions for monster encounters or for setting up scripts (for example, causing the player to be damaged whenever they are walking within a certain tile region). I have also created a Dialogue Editor for defining branching dialogue, which can then be attached to NPCs in the Map Editor. In the editor, you can specify multiple player responses for each NPC response. You can also attach scripts to the response, as well as define conditions (for example, display a certain NPC response if the player has a particular item in his/her inventory). I am still tweaking the dialogue system a bit to get it working fully. I plan to post some more screenshots soon.
Most recently I have been playing around with JavaCC. At this point I have a basic script parser and condition parser created. The condition parser will be used by the script parser (for "if" statements) as well as by the dialogue system, as mentioned earlier. |
Firstly, I have added some new screenshots to the Screenshots page showing the current state of the toolset. There are a few in-game and a few of the toolset itself.
I of course have put off another entry longer than intended, but I've made some good progress since the last one. I built several more script commands, namely "print_message", "give_gold", "give_item", and "open_container". They are self-explanatory for the most part. The "open_container" script command can be attached to objects such as treasure chests, and when the player clicks on the object in question, a window opens with the specified list of items and amount of gold, allowing the player to remove them from the treasure chest. Speaking of which, I have coded a simple inventory system to display items the player is currently carrying. After opening a treasure chest, for example, you can double click the items within it to move them into your inventory. For reusability purposes, I created an ItemContainer widget to display a grid of items with an arbitrary number of rows and columns. At this point you can't do anything with your items or gold, however new items can be created in the Item Editor. Also worth mentioning is the fact that I have been integrating FengGUI for the in-game user interface. So far I have made use of it for the inventory/item containers, as well as for the message boxes that are displayed when the "print_message" script command is used. I'm fairly confident that I will stick with FengGUI as I am really liking it so far and it seems to work well for what I need, and from what I've seen it will be simple to expand upon if necessary.
A couple of other small things - I added some basic lighting features to the map editor, allowing you to add/remove lights in the scene (directional and positional). Also in the map editor, you can now rotate the pending object for ease of placement so you don't have to go back and rotate the object afterwards if wanted. |
Quick note: I just happened to check the "rpgtoolset.com" domain name again a few days ago and noticed that it was now available, so I grabbed the name and set it up to redirect to my existing site at "rpgtoolset.net".
As for the toolset, getting back into the coding has been a lot smoother than I expected considering how long it had been. There are some changes that I decided to make to the game engine a while back after starting over with the RCP version that are worth mentioning at this point. To better fit with the type of toolset I am wanting to create, player movements are now tile-based (using the A* algorithm for determining the best path based on the target tile that is clicked on). To go along with this change, object placement will now be tile-based as well. Speaking of objects, I have added the functionality for object placement and object editing modes. Currently, you can right-click an object in editing mode for a context menu to delete the object or bring up a properties dialog. In the properties dialog, you can set the object ID, override the object's "walkable" and "shadowcaster" attributes, rotate the object, and attach a script to the object, which I plan to detail further in my next entry. I also added the ability to navigate around the map view by holding down the middle mouse button and dragging (inspired by Blender). |
| After I recently began working on the project again, I started receiving an access violation error relating to the nvoglnt.dll file (part of the NVIDIA graphics drivers) whenever I would bring up a 3D view in the toolset (usually the map editor), and the application would completely crash. It was rather frustrating since it would occur randomly and I couldn't pinpoint a specific line where the error would happen. I even tried using the same version of graphics drivers and JRE installed on my wife's PC since I was able to run it without issues on her PC. After doing some research, I found out this was something to do with running on a dual-core system. I discovered that there is a "Threaded optimization" setting in the NVIDIA control panel that can be adjusted to optimize for dual-core systems. It was set on Auto by default, which would explain the randomness of the crashes. Much to my happiness, I was able to get up and running again after setting this to On instead of Auto. My next step, since it's been a while, is to review what I have of the RCP version so far and determine what needs to be fixed and what additional I'd like to add before putting my first release of the RCP version out (which will be released as 0.3 beta). |
|
|
|
|