![]() |
![]() ![]() |
![]() |
![]()
Post
#26
|
|||||
Manus Celer Dei ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: Dumpshocked Posts: 17,012 Joined: 30-December 02 From: Boston Member No.: 3,802 ![]() |
Bah. What kind of attitude is that?
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 |
||||
|
|||||
![]()
Post
#27
|
|
Moving Target ![]() ![]() Group: Members Posts: 284 Joined: 16-June 05 Member No.: 7,450 ![]() |
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.
|
|
|
![]()
Post
#28
|
|||
Technomancer ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: Retired Admins Posts: 4,638 Joined: 2-October 02 From: Champaign, IL Member No.: 3,374 ![]() |
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 ;) 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. |
||
|
|||
![]()
Post
#29
|
|||
Runner ![]() ![]() ![]() ![]() ![]() ![]() Group: Members Posts: 3,420 Joined: 30-October 03 Member No.: 5,776 ![]() |
Just thought I'd mention that on the page you link to, the frame for Neighborhoods Generator is slightly wider than the others. |
||
|
|||
![]()
Post
#30
|
|
Technomancer ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: Retired Admins Posts: 4,638 Joined: 2-October 02 From: Champaign, IL Member No.: 3,374 ![]() |
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:
|
|
|
![]()
Post
#31
|
|
Runner ![]() ![]() ![]() ![]() ![]() ![]() Group: Members Posts: 3,420 Joined: 30-October 03 Member No.: 5,776 ![]() |
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.
|
|
|
![]()
Post
#32
|
|||
Manus Celer Dei ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: Dumpshocked Posts: 17,012 Joined: 30-December 02 From: Boston Member No.: 3,802 ![]() |
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 |
||
|
|||
![]()
Post
#33
|
|||
Technomancer ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: Retired Admins Posts: 4,638 Joined: 2-October 02 From: Champaign, IL Member No.: 3,374 ![]() |
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. |
||
|
|||
![]()
Post
#34
|
|
Running Target ![]() ![]() ![]() Group: Members Posts: 1,278 Joined: 15-April 05 Member No.: 7,336 ![]() |
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.
|
|
|
![]()
Post
#35
|
|
Technomancer ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: Retired Admins Posts: 4,638 Joined: 2-October 02 From: Champaign, IL Member No.: 3,374 ![]() |
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
|
|
|
![]()
Post
#36
|
|
Manus Celer Dei ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: Dumpshocked Posts: 17,012 Joined: 30-December 02 From: Boston Member No.: 3,802 ![]() |
(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 |
|
|
![]()
Post
#37
|
|
Running Target ![]() ![]() ![]() Group: Members Posts: 1,278 Joined: 15-April 05 Member No.: 7,336 ![]() |
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.
|
|
|
![]()
Post
#38
|
|
Manus Celer Dei ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: Dumpshocked Posts: 17,012 Joined: 30-December 02 From: Boston Member No.: 3,802 ![]() |
Sounds good.
My brain is fried, does anyone on this project have the book yet? ~Zombie |
|
|
![]()
Post
#39
|
|
Technomancer ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: Retired Admins Posts: 4,638 Joined: 2-October 02 From: Champaign, IL Member No.: 3,374 ![]() |
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. |
|
|
![]()
Post
#40
|
|
Chicago Survivor ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: Dumpshocked Posts: 5,079 Joined: 28-January 04 From: Canton, GA Member No.: 6,033 ![]() |
Not to mention those four are mutually exclusive.
|
|
|
![]()
Post
#41
|
|
Technomancer ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: Retired Admins Posts: 4,638 Joined: 2-October 02 From: Champaign, IL Member No.: 3,374 ![]() |
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 ;)
|
|
|
![]()
Post
#42
|
|||
Moving Target ![]() ![]() Group: Members Posts: 639 Joined: 22-April 02 Member No.: 2,638 ![]() |
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:
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! |
||
|
|||
![]()
Post
#43
|
|||
Moving Target ![]() ![]() Group: Members Posts: 164 Joined: 7-July 03 Member No.: 4,891 ![]() |
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.
|
||
|
|||
![]()
Post
#44
|
|
Manus Celer Dei ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: Dumpshocked Posts: 17,012 Joined: 30-December 02 From: Boston Member No.: 3,802 ![]() |
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 |
|
|
![]()
Post
#45
|
|||
Moving Target ![]() ![]() Group: Members Posts: 164 Joined: 7-July 03 Member No.: 4,891 ![]() |
In a collection of good, useful quality/cyberware definitions, include a definition like: Quality: God Doesn't Love You (-70)
(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 |
||
|
|||
![]()
Post
#46
|
|
Technomancer ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: Retired Admins Posts: 4,638 Joined: 2-October 02 From: Champaign, IL Member No.: 3,374 ![]() |
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?) |
|
|
![]()
Post
#47
|
|
Moving Target ![]() ![]() Group: Members Posts: 164 Joined: 7-July 03 Member No.: 4,891 ![]() |
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.
|
|
|
![]()
Post
#48
|
|||
Manus Celer Dei ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: Dumpshocked Posts: 17,012 Joined: 30-December 02 From: Boston Member No.: 3,802 ![]() |
No, no you didn't. ~J "Better living through better acronyms!" Postscript: *quickly renames his project folder* |
||
|
|||
![]()
Post
#49
|
|||
Technomancer ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: Retired Admins Posts: 4,638 Joined: 2-October 02 From: Champaign, IL Member No.: 3,374 ![]() |
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. |
||
|
|||
![]()
Post
#50
|
|
Manus Celer Dei ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: Dumpshocked Posts: 17,012 Joined: 30-December 02 From: Boston Member No.: 3,802 ![]() |
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 |
|
|
![]() ![]() |
![]() |
Lo-Fi Version | Time is now: 3rd August 2025 - 09:01 PM |
Topps, Inc has sole ownership of the names, logo, artwork, marks, photographs, sounds, audio, video and/or any proprietary material used in connection with the game Shadowrun. Topps, Inc has granted permission to the Dumpshock Forums to use such names, logos, artwork, marks and/or any proprietary materials for promotional and informational purposes on its website but does not endorse, and is not affiliated with the Dumpshock Forums in any official capacity whatsoever.