I've started work on Citizens, a basic character generator for 13 different careers. Estimated development time is less than one month.
0 Comments
In a previous News category post I gave a list of possible character generation programs to work on next. After thinking about these and looking them over, I've decided that the basic characters found in Supplement 4: Citizens of the Imperium would be of most interest to referees and players.
I'd really like to do Scientists - Technicians, academics, and researchers, from an article in Freelance Traveller 4, but I can't locate the author and ask for permission. Similarly, I'm not sure I can get permission to do Terrorists - from an article in Space Gamer 46. I will probably come back and do some of the others later, but I think they're of limited interest. There's always a need for quick-and-dirty NPCs to assist and confound player characters, and Citizens fills the bill. I considered adding the character classes from Book 1: Characters and Combat, but since it's so easy to create characters with the applications I've already done, and they cover the same character classes as in Book 1, I've decided not to do that. But I am going to add in the bonus class Assassins - From Paranoia Press' Scouts & Assassins. First, a caveat: I'm not a professional programmer and some of the techniques I use might be laughable to the pros. In the distant past, I programmed in assembly language and structured FORTRAN for a living. I've never had any training in object-oriented programming, but have been a Mac nerd forever, so at least I'm familiar with the GUI. I read the old O'Reilly book on RealBasic years ago (now somewhat obsolete) and scanned the forums over at Real Software's website when I needed answers to programming problems.
The 4 advanced character generation applications I've coded so far are all variations on a theme and use the same general structure and share a lot of code. So, how did I organize the code to make an application? Each application has a single main window that contains most of the code. The "Roll" button executes the code in it's "Action" event when the button is pressed. This resets all the global variables and initializes everything back to square one (since this button can be pressed at any time to start over). It then rolls up the basic characteristics of a new character, saves these to a table in a sqLite database file in the resource folder of the app bundle, and displays them on the screen. It also determines whether there is a noble title and displays that as well. It then enables the visibility of a placard embedded in a PagePanel at the bottom of the window which makes the next step visible to the user. A PagePanel has multiple pages which can be displayed one at a time just by using a line of code like "PagePanel1.Value=2". Each page contains a number of display elements like Labels and TextAreas and controls like RadioButtons and a PushButton. Every time the Value of a PagePanel is changed, the code attached to the PagePanel "Change" event is executed, which is how I control program flow. I use a "Select Case PagePanel1.Value" construct with a "Case 2" (for example) for the code to execute when I switch to page 2. This code does setup for the page controls and visible elements like "graying out" controls which are not applicable to the current character being generated. Each page in the PagePanel has a "Continue" button which executes the code in its "Action" event when the button is pressed. Sometimes the result of the calculations just gray out something on the page (like a failed enlistment option) and nothing else. This allows a different RadioButton option to be selected and the "Continue" button to be pressed again. When the calculations give a result which allows the program to continue, the code just switches to a new page in the PagePanel which makes visible a whole different set of display elements and controls and a new "Continue" button with code for that page attached to its "Action" event. I occasionally use a totally blank page (usually for resolving an annual assignment) that just executes the code in the PagePanel "Change" event without user input and automatically determines which page to display next. This happens so quickly that the switching of pages is not visible. This code determines one of several possible pages to go to next. For example, a character with a high value of Education or Social Standing may be given a choice of assignment which would otherwise be determined by a random die roll. If so, the page is changed to one where the user can make a selection, otherwise the page is changed to go to a different step in the character generation process. And so it goes until the character fails a survival roll or finishes mustering out. The final page just displays the fact that the process has completed and does not contain a "Continue" button. The sqLite character database tables store integers like the 6 basic characteristics, rank number, and the current term and assignment year. Booleans are used to indicate college and academy success, officer status, and graduation with honors. Separate tables keep track of skills and skill levels earned, mustering out benefits, decorations, and special assignments. When printing out the TAS Form 2 character form, these values are read out of the database and placed in the appropriate field of the form. A separate read-only database contains all the static data used by the code. Tables for survival, promotion, decoration, and skill rolls, categorized by department and assignment. Tables of rank titles, skills with skill descriptions, and department skill tables. I hope this overview of how I did things will be helpful to anyone interested in picking up Real Studio and having a go at their own programming projects. The latest version of the advanced character generator for Merchant Service player characters is available for download here.
Enhancements • The skill level limit of INT+EDU has been implemented by reporting to the Log in case the user wishes to use this rule and muster out the character. The latest version of the advanced character generator for Scouts player characters is available for download here.
Bug Fixes • Corrected a problem where checks for a skill level used in DMs always returned a skill level of 0. Enhancements • The optional skill level limit of INT+EDU first introduced in Merchant Prince has been implemented by reporting to the Log in case the user wishes to use this rule and muster out the character. The latest version of the advanced character generator for Navy player characters is available for download here.
Bug Fixes • Corrected problem where OCS-2 was reported on TAS Form 2 if the character attended OCS with an age waiver. • Corrected a problem where checks for a skill level used in DMs always returned a skill level of 0. Enhancements • The "Included" skills Handgun and Laser Weapons now award all the individual skills in each category separately, instead of awarding the major skill. • The optional skill level limit of INT+EDU first introduced in Merchant Prince has been implemented by reporting to the Log in case the user wishes to use this rule and muster out the character. The latest version of the advanced character generator for Army and Marine player characters is available for download here.
Bug Fixes • Corrected user prompt to press Roll button rather than Reset button. Enhancements • "Included" skills like Combat Rifleman now award all the individual skills in that category separately, instead of awarding the major skill category. • The optional skill level limit of INT+EDU first introduced in Merchant Prince has been implemented by reporting to the Log in case the user wishes to use this rule and muster out the character. The advanced character generator for Merchant Service player characters is available for download here.
While working on Merchant Prince, I noticed that the "Handgun" skill is defined differently than in High Guard. This "composite" skill gives skills in different weapons in these character generation systems.
So I've decided instead of awarding a vague "composite" skill like Handgun, or Laser Weapons, or Zero-G Weapons, that I should just award skills separately for each weapon as defined in each character generation system. The advantage to this is that if I ever code an application that imports characters created in different systems, there won't be any confusion about their gun skills. Scouts doesn't have this problem, as the "Gun Combat" cascade skill there requires the selection of one specific weapon. Look for version 1.0 of Merchant Prince within a week or so, followed by new versions of High Guard, Mercenary, and Scouts with this enhancement and other bug fixes. |
News and AnnouncementArchives
March 2023
Categories
All
|