PDA

View Full Version : Calling All Computer Programmers



Dr Ronald
2013-09-26, 08:10 PM
Hello,

I know this post is a bit length, but please bear with me. A few years ago, I started writing a program in Excel VBA for a DM assistant type application. There were a few reasons why I chose to write my own program instead of just use one that someone else had already developed. First, I was just starting to learn VBA at the time, which I use quite a bit in my line of work, and I find that a project is the best way to teach myself a new language. The second reason was I found that the application I saw online didn't quite have the content or functionality that I wanted to see in the program. Thirdly, I am cheap and think that software (especially this type of software) should be free.

After getting quite a ways into the program, I decided that VBA didn't have what I needed to achieve what I wanted to with the program. I wasn't surprised by this, but again I was primarily using it to teach myself a language; however, I did find with the VBA program that what I had written to that point was extremely useful to me as a DM. It really reduced the time i required to prep a campaign, and gave my campaigns much more structure. So I began rewriting the program in C++ using Qt Creator. Long story short, I have since then become so busy that I rarely have time to work on the program. I really want to see this project completed. I would love to give this software away to fellow DMs. I feel that at this point the only way this program is going to get done in the next 10 years is to crowd source.

Anyways, let me tell you a little bit about the program. It would take me far too long to tell you about all the functions the program has/will have, so I will try to sum it up. This is meant to be the be-all and end-all DM assistant. Basically I am trying to cram everything from the 3.5 core rulebooks into one program, and by everything, I truly mean everything. Not just raw text, but real functionality pertaining to most rules/encounters/monsters in the core rulebooks. It is also highly customizable, with the ability to create custom monsters, weapons, armor, etc. At some point, I would like to expand the program so that you can use it with several different d20 systems. Now let me be clear, this is not just a game inside a game. In my experience using the program in no way detracts from the fun of DMing, but actually add greatly to it. Also, it is in no way meant to replace preparation. It just reduces the amount of time it takes to prepare.

So I would like to put out a call for any and all programmers that would be interested in helping me out with this project. If you are not a programmer and still want to help, there will be tons of work to do once I start inputting monster data. This will be something that anyone that is somewhat familiar with Excel will be able to do.

Please do me this favor. If you do not have something positive to say, don't bother replying. I don't care if you think that this is a terrible idea, think that it would not be useful, or think that there are already more useful program out there. I am just looking for people who are willing to help and support. Thanks in advance.

bekeleven
2013-09-26, 08:18 PM
I'd love to see what you have so far.

Dr Ronald
2013-09-26, 08:25 PM
I would love to see who all is interested and schedule a Google Hangout (or something equivalent) where I can show everyone interested what I have so far, share contact info, and send the source code. It will be so much easier to explain it live than it would be for people to try and navigate it in its current state. I could also then talk about stuff I have not yet implemented that I want to and we could toss around ideas on ways to improve.

Maginomicon
2013-09-26, 08:42 PM
Have you considered converting it in parts to Google Docs Spreadsheets? It supports a form of JavaScript which I've used to implement an incrementing game-clock and effect duration manager (it uses browser prompts). In the same spreadsheet I also keep track of the essential character stats, including passives (I include 4e-like passives in my campaign).

In another spreadsheet in Google Docs, I manage every players' inventory and encumbrance.

In another, I calculate individual XP based on Bonus XP and the "Slow Burn" method (which optionally can account for regenerating craft points).

In another, I keep track of the XP each character has earned/spent, along with who has been the "most effective" player each session via comparative line graph.

(BTW if anyone wants to see these spreadsheets, PM me)

John Longarrow
2013-09-26, 10:34 PM
I won't be able to do a whole lot for the next year, but I should be able to give advice on general programming techniques, project management, and database design.

I'll admit, I'm not a big fan of C++ and I've a real hatred of VBA (Access won't give you prop.Linecount for a field but you can get it in other programs???), but I did custom software for a few years in a 4GL environment.

nedz
2013-09-27, 03:39 AM
I have a C++/MFC app I wrote which does random treasure generation. It does only do stuff from the DMG — but it is table driven so with the right tables (CSV files) could be extended. It can also be manually driven to work out the price of almost anything in it's tables.

I've been considering porting it to Java/Android which might make it more useful.

TuggyNE
2013-09-27, 04:51 AM
I do know VBA quite well (for my sins), and can probably at least figure out what Qt is doing, though I'm by no means a C++ wiz. If you port it over to C# or VB.NET, or even Python, you might get more contributors. Or, I suppose, Javascript.

Have you considered what site you want to host it on? BitBucket, SF.net, GitHub, maybe Launchpad, and probably others would work, and they allow much easier source code versioning. (If you're not familiar with that, I very strongly recommend using some version control system. Mercurial, Git, Bazaar, or Subversion are the usual suspects, and I or someone else can probably help a good bit with setting that up. Version control is crucial to collaborating with other programmers.)

Dr Ronald
2013-09-27, 07:53 AM
I have a C++/MFC app I wrote which does random treasure generation. It does only do stuff from the DMG — but it is table driven so with the right tables (CSV files) could be extended. It can also be manually driven to work out the price of almost anything in it's tables.

I've been considering porting it to Java/Android which might make it more useful.

I have not yet started any code for the treasure generator for the application, so this would be extremely helpful. I am using sqlite, so it should be too hard to adapt.

I really would prefer not to port my program to Java or Python, because I don't know them. I am a mechanical engineer, so my programming knowledge is limited. When I started writing the code, I knew C++, but I had never used Qt, and I didn't want to teach myself a new language and a new environment (I think Qt supports Python). Qt is great when it comes to GUI design, and this program is meant to be very strong in that area. I don't really have any experience with any collaboration software (for devs at least), so if someone could help me set this up, that would be amazing.

If you are interested in helping out, shoot me an email. [email protected]. I will try to get everyone together sometime soon. Even if you can't help and just want to see what I have so far, you can still email me.

Thanks guys

dspeyer
2013-09-27, 09:54 AM
You mentioned inputting monsters. If you dig through the link in my sig, you'll find a ton of them in json format. The data isn't 100% clean, but it's a lot cleaner than anything else you'll find.

I'm still not sure what your program is supposed to do, so I can't give more detailed advice.

Calinero
2013-09-27, 10:40 AM
I'm more familiar with Java than I am C/C++, but I'd also be curious to see how you've implemented all of this so far. I imagine the majority of the work is going to be moving all the data from sourcebooks to a usable format.

nedz
2013-09-27, 11:55 AM
I have not yet started any code for the treasure generator for the application, so this would be extremely helpful. I am using sqlite, so it should be too hard to adapt.

I really would prefer not to port my program to Java or Python, because I don't know them. I am a mechanical engineer, so my programming knowledge is limited. When I started writing the code, I knew C++, but I had never used Qt, and I didn't want to teach myself a new language and a new environment (I think Qt supports Python). Qt is great when it comes to GUI design, and this program is meant to be very strong in that area. I don't really have any experience with any collaboration software (for devs at least), so if someone could help me set this up, that would be amazing.

If you are interested in helping out, shoot me an email. [email protected]. I will try to get everyone together sometime soon. Even if you can't help and just want to see what I have so far, you can still email me.

Thanks guys

I haven't used Qt but it can't be that hard to port from MFC. I wrote the code a few years ago hopefully the GUI is separate from the generator.

One problem with it though is that I started writing a char gen app, which I gave up on, and the Treasure Generator sits off this — so that would have to be refactored.

The idea behind moving to Java/Android is that you could run this on your phone during a game. C++ isn't that hard to port to Java.

Story
2013-09-28, 01:55 PM
I really would prefer not to port my program to Java or Python, because I don't know them. I am a mechanical engineer, so my programming knowledge is limited. When I started writing the code, I knew C++, but I had never used Qt, and I didn't want to teach myself a new language and a new environment (I think Qt supports Python). Qt is great when it comes to GUI design, and this program is meant to be very strong in that area. I don't really have any experience with any collaboration software (for devs at least), so if someone could help me set this up, that would be amazing.


Well then learn Python. You'll be glad you did. In fact, you'll probably be so much more productive that you'll get done faster despite the time spent learning Python.

Ekul
2013-09-28, 02:28 PM
Honestly, if I were to undertake a project such as this I'd use copious amounts of XML. With so many different classes and so many different types of class features that have ways of scaling, you're not going to be able to cram all that data into a simple program or database.
Turning everything in the entirety of 3.5 into one big project is unfeasible unless you have well designed subsystems.

Story
2013-09-28, 02:39 PM
XML is overengineered and way too verbose. Just use JSON if you need a readable serialization format.

nedz
2013-09-28, 03:07 PM
More important than the data format are the IP issues.
Data from the SRD should be fine, but not beyond that.
This may limit the utility of anything developed.

TuggyNE
2013-09-28, 05:28 PM
More important than the data format are the IP issues.
Data from the SRD should be fine, but not beyond that.
This may limit the utility of anything developed.

More precisely, anything OGL can be stuck into the public data files, but most splatbooks can only be put in for personal use.

(If you can come up with some solution that e.g. encrypts the data files unless the user supplies some real proof of physical possession of the book in question, more power to you, but I expect that's not really possible.)

nedz
2013-09-28, 05:50 PM
(If you can come up with some solution that e.g. encrypts the data files unless the user supplies some real proof of physical possession of the book in question, more power to you, but I expect that's not really possible.)

Encryption — Check

Proof of Purchase — Er, no.