{"id":2405,"date":"2012-04-01T14:04:26","date_gmt":"2012-04-01T21:04:26","guid":{"rendered":"http:\/\/crysodenkirk.com\/blog\/?p=2405"},"modified":"2012-04-22T22:33:15","modified_gmt":"2012-04-23T05:33:15","slug":"character-module-design-process-start-with-paper-and-pen","status":"publish","type":"post","link":"https:\/\/crysodenkirk.com\/blog\/2012\/04\/character-module-design-process-start-with-paper-and-pen\/","title":{"rendered":"Character Module Design Process: Start with paper and pen"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/crysodenkirk.com\/blog\/wp-content\/uploads\/2012\/04\/2012-04-01-11.25.26.png\" alt=\"My ubiquitous notebook\" title=\"My ubiquitous notebook, turned to the first character module page\" width=\"250\" height=\"333\" class=\"size-full wp-image-2407 outline_img\" align=right srcset=\"https:\/\/crysodenkirk.com\/blog\/wp-content\/uploads\/2012\/04\/2012-04-01-11.25.26.png 250w, https:\/\/crysodenkirk.com\/blog\/wp-content\/uploads\/2012\/04\/2012-04-01-11.25.26-225x300.png 225w\" sizes=\"(max-width: 250px) 100vw, 250px\" \/>I&#8217;ve got two main forms of amusement: coding and gaming. So it&#8217;s probably no surprise that most of my best online work gets poured into my WoW\/SWTOR guild, <a href=\"http:\/\/www.seelundtrading.com\" title=\"Led not by a general, but a CEO; masters not of war, but of trade; led to battle not by disciplined soldiers, but rowdy drunks and eccentric scientists...\">Seelund Trading Co<\/a>. I&#8217;m pretty happy with how the site looks and functions, but I&#8217;m always looking for new ways to make the site more useful and draw people to it.<\/p>\n<p>My next big project is a combination module that has two parts: an event module, and user-generated character profile\/information pages. Because I want to let people post events as their characters, which I can&#8217;t do without actually having characters already set up as entities, I decided to start with just the character pages half. This series will walk through my design and development steps as I build the module.<\/p>\n<p>All of my major projects start as pages in a letter-sized legal pad. I&#8217;ve got these babies littering my dining room, my library, and scattered across the table I work at. I keep a rainbow collection of gel pens handy to match my mood and when I get an idea I&#8217;ll snatch one up and go sit in a corner or at a table trying to get the idea down on paper before it&#8217;s gone. <!--more--><\/p>\n<p>This project was no exception. I holed up for a couple hours with a beer and the tv running in the background and poured out a couple pages of necessary features, details and sketches for the interfaces, first drafts of the database table structure&#8230; it all gets mashed together and scribbled over for as long as the inspiration grips me.<\/p>\n<p>Then I put it down and walk away for at least a day. It&#8217;s important to come back to it with a fresh eye and a clear perspective. Sometimes what sounds like a great idea at 4am when you&#8217;re frantically scrawling out that thing you just dreamed about is kind of crazy in the light of the day. Mind you, crazy&#8217;s not always bad. But you have to consider the feasibility of any project, and weigh the work vs the worth of it, so you can assign it a proper level of priority against your other projects.<\/p>\n<p>I deem this one to be of a high priority for a few reasons, not least of which is because the second half of the project depends on getting this one finished.<\/p>\n<p>The next step in a project is taking that brainstorming and sorting it into a project plan. The precise contents will depend on the type of project. Since this is a bottom-up programming project, the Plan includes a database schema, a list of the interfaces (new or changed), userflows, a break-down of what goes into &#8220;phase 1&#8221; or can be added later, and a section for miscellany.<\/p>\n<p>The Plan for the character module currently looks like this:<\/p>\n<h4>Userflows<\/h4>\n<ul>\n<li>CM1 &#8211; User views their own list of characters<\/li>\n<li>CM2 &#8211; User views their own character (singular, character page)<\/li>\n<li>CM3 &#8211; User adds a new character<\/li>\n<li>CM4 &#8211; User deletes a character from their profile<\/li>\n<li>CM5 &#8211; User\/Admin\/Guest views all characters<\/li>\n<li>CM6 &#8211; User\/Admin views someone else&#8217;s profile list<\/li>\n<li>Guests do not have access to profiles so there is no userflow for this<\/li>\n<li>CM2 &#8211; User views someone else&#8217;s character<\/li>\n<li>CM2 &#8211; Guest views a character<\/li>\n<li>CM2 &#8211; Admin views a character<\/li>\n<li>CM7 &#8211; User flags a character for review by Admin<\/li>\n<li>CM8 &#8211; Admin reviews moderation queue<\/li>\n<li>CM8 &#8211; Admin unflags character from review<\/li>\n<li>CM3 &#8211; Admin\/User edits existing character from character page<\/li>\n<li>CM9 &#8211; Admin\/User deletes character from character page<\/li>\n<\/ul>\n<h4>Interfaces<\/h4>\n<h5>New<\/h5>\n<ul>\n<li>Character Pages<\/li>\n<li>Character List<\/li>\n<li>User control panel -> Character Tab (based on Usergroups tab format)<\/li>\n<li>Moderation control panel -> Characters Tab<\/li>\n<\/ul>\n<h5>Changed, Existing<\/h5>\n<ul>\n<li>User profile page (add list of characters for that user)<\/li>\n<li>Moderation queue for forum (add a summary queue for characters to main tab)<\/li>\n<\/ul>\n<h4>Database:<\/h4>\n<ul>\n<li>Character Table<\/li>\n<\/ul>\n<h4>Future Phases<\/h4>\n<ul>\n<li>Hook into event calendar<\/li>\n<li>Allow posting on forum as character instead of user<\/li>\n<li>Linking particular threads (background stories specifically) to Character Page via addition to posting page<\/li>\n<\/ul>\n<h4>Notes<\/h4>\n<ul>\n<li>Still have not accounted for orphaned characters, whether caused by program error or deleting a user that had character information<\/li>\n<\/ul>\n<p>In the next post for this project, I&#8217;ll go into more detail about the userflows and how userflow shapes the interface.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve got two main forms of amusement: coding and gaming. So it&#8217;s probably no surprise that most of my best online work gets poured into my WoW\/SWTOR guild, Seelund Trading Co. I&#8217;m pretty happy with how the site looks and &hellip; <a href=\"https:\/\/crysodenkirk.com\/blog\/2012\/04\/character-module-design-process-start-with-paper-and-pen\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[83],"tags":[85,101,102],"class_list":["post-2405","post","type-post","status-publish","format-standard","hentry","category-work-in-progress","tag-development","tag-seelund-trading-co","tag-swtor","work-in-progress"],"_links":{"self":[{"href":"https:\/\/crysodenkirk.com\/blog\/wp-json\/wp\/v2\/posts\/2405"}],"collection":[{"href":"https:\/\/crysodenkirk.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/crysodenkirk.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/crysodenkirk.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/crysodenkirk.com\/blog\/wp-json\/wp\/v2\/comments?post=2405"}],"version-history":[{"count":19,"href":"https:\/\/crysodenkirk.com\/blog\/wp-json\/wp\/v2\/posts\/2405\/revisions"}],"predecessor-version":[{"id":2669,"href":"https:\/\/crysodenkirk.com\/blog\/wp-json\/wp\/v2\/posts\/2405\/revisions\/2669"}],"wp:attachment":[{"href":"https:\/\/crysodenkirk.com\/blog\/wp-json\/wp\/v2\/media?parent=2405"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/crysodenkirk.com\/blog\/wp-json\/wp\/v2\/categories?post=2405"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/crysodenkirk.com\/blog\/wp-json\/wp\/v2\/tags?post=2405"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}