I've been an avid fan of all sorts of RPGs for as long as I can remember. Recently, I was reading an opinion piece that lamented how supposedly-deep modern RPGs, like Dragon Age, actually lack the incredible depth and variety of classic games like Fallout or The Elder Scrolls series. This inspired me to start brainstorming some ideas for a modern game that would incorporate such depth, procedural generation (a la Roguelikes) and genuinely interesting encounters with NPCs (where your actions have definite consequences beyond a "good/evil" meter). At the same time, while paying homage to those classic games, I also wanted to work in some new ideas for interaction, more non-combat options and deeper combat inspired by certain modern turn-based games like the Disgaea series.
So, I took these concepts and decided to go ahead and try to create a game myself. At the moment, I'm handling all the programming and using sprites from open-source tilesets/spritesheets, plus my own terrible MS Paint art. I'm that indie. Of course, at some point soon I'll be working with a pixel artist to get something actually visually appealing (in a sort of 16bit style, not 8bit or overly retro.)Technical Info
I'm developing the game using Java with Slick2D. Slick handles the rendering engine and input; everything else I've designed from scratch. Because I'm using Java, the game can be run on PC, Mac or Linux equally well. It may be possible to make a web version too, but I haven't thought of that yet.Gameplay
At this stage, I'm still working on the core engine of the game, so there isn't a great amount of gameplay yet (per se). Here's the outline, nonetheless.
* The game world is grid/tile-based from an overhead perspective. Currently I'm using 32x32 tiles, though the game engine supports other tile sizes.
* The player controls a single character throughout the game, specifying a number of traits during character creation. These traits, such as Gender, Build, Race and Background (eg. Scholar, Peasant, Soldier, Minstrel), range from purely aesthetic to lightly influencing your set of starting abilities, stats and items. However, the game is built on open character advancement and does not use a traditional level-based system. To become a master swordsman, you must fight with swords regularly. To become a thief, you should try to pick difficult locks. To become stronger, you should partake in activities that require brute strength, and so forth.
* The game is turn based. When the player selects an action (eg. moving a space, opening dialog with an NPC, or using an item), a priority queue system is used to determine the order in which all actions are executed. So, an entity attacking with a slow spear will generally execute their action after an entity attacking with a fast dagger, for example. There are of course many ways to modify the initiative of actions.
* Most 'things' on the map are interactable. Map objects can have a number of properties which determine what you can do with them. For example, doors can be locked, unlocked, opened, closed, attacked, etc. Destructable objects have material and hardness values which influence how they can be demolished or manipulated. A "wood" object can be burned, while a "stone" object can't, the former can be destroyed with weapons easily, the latter can't, etc.
* NPCs have attitudes and personalities. Their opinion of the player varies based on the player's reputation and the player's observable actions, as well as the NPC's own personality. For example, a "cautious, meek" NPC will avoid confrontation, and talking down to them will not result in any conflict. A "paranoid" NPC will attack you at the drop of a hat. A "jovial" NPC is inclined to think you're likable and hilarious, so things that might offend others might actually make him love you more.
* Rather than having tens of thousands of lines of useless dialog, many NPCs are interacted with through emotions. In these dialogues, you do not necessarily pick a stock phrase to say, but instead say something jokingly
or say something aggressively
, etc. In other words, tone is an important part of NPC dialogue. Combined with the fact that your actions have consequences (as NPCs observe and react to what you do), this allows for some interesting situations. This in particular was inspired by Oblivion's "Whodunnit?" quest.Progress
* Map rendering and scrolling (based on player position).
* Basic user interface, text log, icons, menus, etc.
* Resolution-independence. The game area enlarges at higher resolutions, tile size can be changed easily, and so on.
* Player movement.
* Basic player actions like "Look", "Talk" (though dialogue system isn't in yet), "Get".
* Basic interaction with map objects like doors.
* Priority queue system, attacking.
* Status effects, unconsciousness, death.
* Inventory and equipment system, currency system.
* Using items like potions that confer various effects, attribute bonuses from items.
* Basic skill system with experience curve (picking an easy lock at a low level = fast advancement, picking an easy lock at a high level = slow or no advancement.)
* Basic NPC movement (mindless, currently.)
* Dropped item system (eg. killing an entity causes them to drop all their equipment, which you can then loot.)
* NPC attitudes and basic observation of player actions.
* Character saving.
* Content stored in XML files. This allows me (and potentially others, eventually) to create and edit NPC 'blueprints', items, skills, spells and map objects without touching a line of code. The game serializes to and from XML well.
I've been working on this for about three weeks now, and though I'm fairly inexperienced, I'm proud of the progress made so far. Currently, I'm working on:
* 'Active' skill system. Unlike most Roguelikes, there is an emphasis on various techniques with a spatial component. Think games like Disgaea or other tactical RPGs for an example of what I mean. For example, a "Line Slash" skill might send the player through three spaces in any direction, causing physical weapon damage to all targets in between and displacing the player.
* Basic NPC AI. While NPCs can 'see' the player and observe basic things, they don't yet do anything with this information. First, I am going to implement basic reactionary attacking and pathfinding, followed by a fight-or-flight option.Screenshots
The graphics are atrocious. They are placeholders and will be better. You have been warned. (Also, these are scaled down from 1024x768)http://zirconstudios.com/BigRPG/ss1.pnghttp://zirconstudios.com/BigRPG/ss2.pngFeedback
I welcome any and all constructive feedback. The folks of #tigIRC have already helped me with various design and technical questions, as have the LWJGL/Slick experts on #lwjgl on Freenode. I realize this is really early on but I'd like to share my experiences publicly, since I'm enjoying working on this game.
Thanks in advance! I look forward to posting a decent playable build soon :-)