PDA

View Full Version : Summer Side Project



The White Knight
2008-04-06, 02:54 PM
(not sure if this belongs here or not...)

I'm a computer science student, the school year is winding down, and I'm not sure if I'm going to end up landing a programming job or not for the spring/summer. As such, I figured I would come up with some sort of side project to keep me in shape until classes start back up again. I've decided that I'd like it to be something useful to me, so why not make it some sort of D&D utility that myself and my friends can make use of when we get back together to play again in the fall?

So I pose the question to you, the playground: what ideas do you have for nifty little utilities that would make your lives as players (or DMs) easier? Ideas for something new would be cool, but even making my own version of something that's already out there would be a fun exercise. Whatever I end up trying, if I end up finishing it, I'll happily make it available as a free download (if I feel satisfied in calling it my own :P).

An idea I had was to create an editor/manager pair of applications. The editor could be used to create 2d combat map representations using importable/customizable graphical tilesets (not unlike the map editors you'd find in an RPGMaker or something), with the ability to designate altitudes, passabilities, etc for each map square; the manager would be able to load these maps and place creatures (PCs, NPCs, monsters) within, each with a corresponding set of statistics. The idea would be so that the DM could generate opponents with stat banks and have certain events automatically handled for him (attack rolls, skill checks, etc) to help streamline sluggish aspects of combat. By designating altitudes, passabilities, etc. for map squares, movement bookkeeping and mobility skill checks (jump, tumble and the like) could be handled automatically.

Thoughts/additions?

senrath
2008-04-06, 03:06 PM
That sounds really cool. If you hadn't thought of it already, stick in all the rules, etc. from the SRD. Also, dynamic map updating would be really cool (such as, move a PC from one square to another and detail any AoOs provoked, etc).

Lord Tataraus
2008-04-06, 03:26 PM
So like the DI thing wizards is doing but free? That would be awesome, I don't plan on paying for anything like that, but for free would be great, even if its just the map with tokens and such.

Prometheus
2008-04-06, 04:22 PM
I don't know if your original idea is the best:
-There are several map, placement, and communication software programs out there, you'd probably be better off getting involved with those if you aim to do a similar thing. They keep track of units, streamline rolls, etc.
-On a related point, you can only include SRD material without paying royalties or running into legality issues. If DM's are forced to enter their own information, you have to consider whether it is really any easier than doing it the conventional way. In my opinion, its not any easier

I do really appreciate the thought of a contribution to the community, I have a couple of ideas that might be a better use of your time. They are a lot more encumbersome, though, so I wouldn't think to expect any of them. I think if you could make in open source, collaborative, and done in a smart way, you might find people willing to contribute to the cause (I would for example, although at the moment my time is limited).
Ideas:
-Monster Advancer: Includes SRD, and or any base monster you input. From there it can add templates or Advance HD, with the option to either input information about feats and skills at a prompt, or refer to a couple of defaults. This makes monsters be a lot more flexible and easier to manipulate for DMs. There are no official rules for de-advancement (except perhaps, Savage Species monster classes), but that could be very helpful as well.
-Homebrew Balancer: Uses data compiled from PC classes, monsters, and magic items over a variety of splatbooks to estimate which features are equivalent to which (I assume there will need to be some sort of base unit of value). From there you could see what giving up a certain ability could fairly give you in exchange, how powerful something is for its level/CR/gold cost, or what the level/CR/Gold cost should be for something. This would require immense data input and knowledge
-NPC AI: There are many single-player RPGs with D&D base AI, but they are not open source. Something that could codify the decisions of a monster or NPC in combat could be a great way to save time, add realism, and maybe allow some groups to play without a DM altogether. It wouldn't have to represent the best possible course of action, just an interesting but effective variety.
-NPC Generator: Something like in the DMG, except for more classes and variety of options chosen. If you were incredibly ambitious, you could even allow for multiclassing, in which it would pick up magic items and feats that are relevant to both classes at hand.
-D&D WikiWorld: An expansion of the map idea. This world that can be modified like D&D, to add monsters, terrain, and items. Characters controlled by online users walk through it at will. Everything is set so the mechanics could be anything (ie, not strictly to Core or RAW), and most, if not all, the number crunching is done. [For example, I roll up homebrew or splatbook character, enter my statistics and spawn somewhere. I walk into a cave, encounter a monster someone else invented, roll it and my attacks, defeat it, pick up the items. I continue walking, run over something that describes the room that I entered, run into something else that asks me to solve a puzzle in order to open the door. Behind it, I find someone else who is trying to cross a trap room, whom I talk with, trade with, or travel with. I could have blown off the monster and walked through the door, but that's not playing the game. There is not a thing I could do to the other person, who is attempting to go through it honestly, or to modify the dungeon of the user if he turned that off.]

Of course, the biggest problem with adopting any project based on ver. 3.5 is that it might become ignored and obsolete when ver. 4 come out. I dunno how people will react/ I'll probably stick with 3.5 for quite some time, preferring an intelligent homebrew and houserule to a more efficient but less familiar system. Alternatively, it may be able to be designed around ver. 4 or enabling for both.

monotone
2008-04-06, 04:34 PM
An automatic template adder.

The White Knight
2008-04-06, 04:50 PM
For the original idea I'd posted, I was thinking I'd script something to parse the stat blocks of creatures in the d20srd.org stat block formats into usable data, and have everything on the SRD available as a default database; from there, a DM could add things to the database manually, but at least they'd have that much available to them.

I really like the idea of a monster advancer/NPC generator; I'll definitely keep this in mind. It'd be useful enough as a standalone utility, but it would also make a great addition to the previous idea for when the DM wants something a little more custom than an as-is MM challenge, but with less required effort than creating a new creature database entry altogether.

Thanks for the input, folks! Keep the suggestions coming!

Solo
2008-04-07, 12:10 AM
Make a database of various campaign smashing, over powered, well optimized, and poor builds, so as to show players what to and not to do?

Or a database of Eminent Figures in the Playground?




I really like the idea of a monster advancer/NPC generator; I'll definitely keep this in mind. It'd be useful enough as a standalone utility, but it would also make a great addition to the previous idea for when the DM wants something a little more custom than an as-is MM challenge, but with less required effort than creating a new creature database entry altogether.


You know, I have a pretty good Sorcerer build going that could serve as a decent NPC character.

You take a sorcerer of whatever level, then plug in the proscribed feats and spells as detailed in my Sorcerer Guide and you're basically good to go.

Nebo_
2008-04-07, 12:14 AM
What will you be writing this in?
I'd also suggest adding links to the class handbooks on the WotC CharOp boards as well as general optimisation tips.




Or a database of Eminent Figures in the Playground?

Perhaps a list of people who you shouldn't start arguments with. You know who you are...

Solo
2008-04-07, 12:24 AM
Perhaps a list of people who you shouldn't start arguments with. You know who you are...

No we don't.

Azerian Kelimon
2008-04-07, 12:30 AM
Giacomo, Tippy, and the mods.

Oh, and you Solo, but because it would cause an overload in the Solo based scale of awesome. Particularly if you argued with Collin152.

bugsysservant
2008-04-07, 02:56 AM
Well, nothing much, but it would be great to have some kind of utility to just centralize all data. Most people keep (electronic) info in either .doc, .pdf, or spreadsheets (can't remember the extension) which work, but are often annoying and ill suited. Some program that could handle data for monsters, characters, campaigns, maps, dungeons, etc would be lovely. It could be as simple as character sheets that you don't have to go online to use (because the major sites aren't terribly reliable) or something that integrates stat blocks, detailed terrain, large scale maps, and even possible time lines, with a comprehensive note feature. It all depends on the scale of your intended project.

Also, thanks in advance. Its always great to see people using talents to help out the rest of us. Makes me wish I had done more with my programing. :smallredface:

The White Knight
2008-04-07, 10:49 AM
What will you be writing this in?

That's a good question. Our curriculum here is pretty Java-centric, so my first thought was to go with Java in the interest of keeping myself in shape (and the obvious cross-platform simplicity; I work in both OS X and Linux environments, and the majority of target users would likely use Windows); however, it'd be great to get myself brushed back up on C++ (or learn C#), since I've been away from the world of C for a couple of years. But to answer your question: probably Java. If you have any suggestions otherwise, I'm more than open to them - I'd love an excuse to pick up a new language.



I'd also suggest adding links to the class handbooks on the WotC CharOp boards as well as general optimisation tips.


I'm not so much interested in providing a utility for players to make or break their characters, or to guide them on how they should play, so much as a utility to help them in doing what they already know they want to do. But I'll think about it.



Well, nothing much, but it would be great to have some kind of utility to just centralize all data. Most people keep (electronic) info in either .doc, .pdf, or spreadsheets (can't remember the extension) which work, but are often annoying and ill suited. Some program that could handle data for monsters, characters, campaigns, maps, dungeons, etc would be lovely. It could be as simple as character sheets that you don't have to go online to use (because the major sites aren't terribly reliable) or something that integrates stat blocks, detailed terrain, large scale maps, and even possible time lines, with a comprehensive note feature. It all depends on the scale of your intended project.


I'd probably start off with a number of simpler modules then integrate them into a larger-scale product as I go. You could probably expect to see something for the handling of character and monster data as one of the earliest modules completed, as it's probably the simplest, yet most necessary component for any program that's going to be handling events based on creature statistics.

Lord Tataraus
2008-04-07, 11:27 AM
That's a good question. Our curriculum here is pretty Java-centric, so my first thought was to go with Java in the interest of keeping myself in shape (and the obvious cross-platform simplicity; I work in both OS X and Linux environments, and the majority of target users would likely use Windows); however, it'd be great to get myself brushed back up on C++ (or learn C#), since I've been away from the world of C for a couple of years. But to answer your question: probably Java. If you have any suggestions otherwise, I'm more than open to them - I'd love an excuse to pick up a new language.

Emphasis mine. This is a great excuse to learn a new language, if you're going for a database, C/Java might not be the best choice. I suggest you learn python (http://www.python.org/), it's being used by many major companies (google for one), is every flexible and fun to use. It is also reportedly very easy to learn (I have yet to start, that's my "summer side project" :smallbiggrin: ). Additionally, it can integrated with other languages.

The White Knight
2008-04-07, 12:07 PM
Emphasis mine. This is a great excuse to learn a new language, if you're going for a database, C/Java might not be the best choice. I suggest you learn python (http://www.python.org/), it's being used by many major companies (google for one), is every flexible and fun to use. It is also reportedly very easy to learn (I have yet to start, that's my "summer side project" :smallbiggrin: ). Additionally, it can integrated with other languages.

I actually took an introductory course in Python this year, and loved every second of it. I've done a very brief bit of experimenting with integrating python into java, and it seems to work fairly well. I was actually already considering using python scripts to handle parsing the SRD MM data into something usable. I'm not familiar with any sort of GUI development in python though -- is this possible/simple at all? If not, maybe I'll just build the graphical interface in java, and see if I can do the rest in python as an experiment.

Swooper
2008-04-07, 01:38 PM
I'm a first year BS student in CS, and your project looks interesting, whatever you end up doing. I would offer my services to help except... you know, I'm first year and probably not much use.

Regarding Python: I know for a fact Python can be used to fantastic effect to create graphics and GUIs - the most visually impressive computer game I've ever played, Eve Online, is done completely in Python. I want to learn that one day...

SamTheCleric
2008-04-07, 01:49 PM
Python (http://xkcd.com/353/) ... is there anything it can't do?

SamTheCleric
2008-04-07, 01:52 PM
Python (http://xkcd.com/353/) ... is there anything it can't do?

TheThan
2008-04-07, 02:25 PM
How about a random treasure generator

You punch in the type of monster and its CR and it gives you a treasury for it.
Shouldn't take too long to do, and can be very useful.


OH, oh! How about a generator for magic weapons/armor? it could randomly select a weapon (or allow you to choose it), an enhancement bonus, and a special property or two. That would be cool, especially if it gives you names for the weapons (heck all good magic weapons need a name… right?

valadil
2008-04-07, 02:30 PM
How about a statistics calculator of some sort? With pretty graphs and whatnot? It seems like only the really elite power gamers ever bother calculating the damage output of a greatsword compared to a greataxe and the rest of us rely on what they say. Something like this could be useful. I'd be interested in charting my fighter's damage output with a variety of weapons each with different effects. With and without improved crit. Maybe something similar for spells with various metamagic feats.

If that sounds a little too trivial to you, you could help with a D&D project I'm working on. I want to make a web based client, kinda like the one WotC is making, but free. Rather than have each client make an AJAX request to the server once per second, I'd like to use a Comet server (http://en.wikipedia.org/wiki/Comet_(programming)). Unfortunately there aren't any good ones yet that can just be plugged in to an existing site. Apache/PHP is not adequate for this particular problem (since you'd have to leave the connection open while waiting for new data), but a java servlet ought to work. I can guarantee that this is non trivial, but I can't guarantee if it's feasible.

Lord Tataraus
2008-04-07, 02:48 PM
Python (http://xkcd.com/353/) ... is there anything it can't do?

Yes. (http://www.ioccc.org/1989/roemer.c)
Despite its inherent humor, (http://www.ioccc.org/1987/westley.c) there are some forms of programming humor it can't do. (http://www.ioccc.org/2004/arachnid.c)

Collin152
2008-04-07, 05:25 PM
Giacomo, Tippy, and the mods.

Oh, and you Solo, but because it would cause an overload in the Solo based scale of awesome. Particularly if you argued with Collin152.

I hear the invocation of my name, and heed its call!
Who summons the great shade of the imagination?

The White Knight
2008-04-07, 10:21 PM
Is there an up-to-date downloadable D&D 3.5 SRD available anywhere? It would prove most useful throughout all of this.

Prometheus
2008-04-07, 10:45 PM
http://www.systemreferencedocuments.org/35/sovelior_sage/home.html -> click link under download