Role-Playing_Game_Starter_Kit.htm 29 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090
  1. <html xmlns:MSHelp="http://msdn.microsoft.com/mshelp" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:xanx="http://schemas.microsoft.com/developer/xanx/2005"><head><META http-equiv="Content-Type" content="text/html; charset=utf-8"><META NAME="save" CONTENT="history"><title>Role-Playing Game Starter Kit</title>
  2. <style><!--
  3. /***********************************************************
  4. * SCRIPT-SUPPORTING STYLES
  5. ***********************************************************/
  6. /* Defines the userData cache persistence mechanism. */
  7. .userDataStyle
  8. {
  9. behavior: url(#default#userData);
  10. }
  11. /* Used to save the scroll bar position when navigating away from a page. */
  12. div.saveHistory
  13. {
  14. behavior: url(#default#saveHistory);
  15. }
  16. /* Formats the expand/collapse images for all collapsible regions. */
  17. img.toggle
  18. {
  19. border: 0;
  20. margin-right: 5;
  21. }
  22. /* Formats the Language filter drop-down image. */
  23. img#languageFilterImage
  24. {
  25. border: 0;
  26. margin-left: 0;
  27. vertical-align: middle;
  28. }
  29. /* Formats the Members Options filter drop-down image. */
  30. img#membersOptionsFilterImage
  31. {
  32. border: 0;
  33. margin-left: 0;
  34. vertical-align: middle;
  35. }
  36. /* Formats the Collapse All/Expand All images. */
  37. img#toggleAllImage
  38. {
  39. margin-left: 0;
  40. vertical-align: middle;
  41. }
  42. /* Supports XLinks */
  43. MSHelp\:link
  44. {
  45. text-decoration: underline;
  46. color: #0000ff;
  47. hoverColor: #3366ff;
  48. filterString: ;
  49. }
  50. body
  51. {
  52. background: #FFFFFF;
  53. color: #000000;
  54. font-family: Verdana;
  55. font-size: medium;
  56. font-style: normal;
  57. font-weight: normal;
  58. margin-top: 0;
  59. margin-bottom: 0;
  60. margin-left: 0;
  61. margin-right: 0;
  62. width: 100%;
  63. /*font-size: 110%;*/
  64. }
  65. div.section
  66. {
  67. margin-left: 15px;
  68. }
  69. div.hxnx5
  70. {
  71. margin-left: 1.5em;
  72. }
  73. /* Font for all headings */
  74. h1, h2, h3, h4, h5, h6
  75. {
  76. font-family: Verdana, Arial, Helvetica, sans-serif;
  77. margin-top: 18;
  78. margin-bottom: 8;
  79. font-weight: bold;
  80. }
  81. h1
  82. {
  83. font-size: 130%;
  84. color: #003399;
  85. }
  86. div#scrollyes h1 /* Changes font size for full-scrolling topic */
  87. {
  88. font-size: 150%;
  89. }
  90. h2
  91. {
  92. font-size: 125%;
  93. }
  94. h3
  95. {
  96. font-size: 115%;
  97. margin-top: 9;
  98. margin-bottom: 4;
  99. }
  100. h4
  101. {
  102. font-size: 115%;
  103. margin-top: 9;
  104. margin-bottom: 4;
  105. }
  106. h5
  107. {
  108. font-size: 100%;
  109. margin-top: 9;
  110. margin-bottom: 4;
  111. }
  112. h6
  113. {
  114. font-size: 100%;
  115. margin-top: 9;
  116. margin-bottom: 4;
  117. }
  118. ul p, ol p, dl p
  119. {
  120. margin-left: 0em;
  121. }
  122. p
  123. {
  124. margin-top: .6em;
  125. margin-bottom: .6em;
  126. }
  127. td p
  128. {
  129. margin-top: 0.0em;
  130. margin-bottom: 0.6em;
  131. }
  132. dd p
  133. {
  134. margin-top: 0.0em;
  135. margin-bottom: 0.6em;
  136. }
  137. .image
  138. {
  139. text-align: center;
  140. }
  141. dl
  142. {
  143. margin-top: 0em;
  144. margin-bottom: 1.3em;
  145. }
  146. dd
  147. {
  148. margin-bottom: 0em;
  149. margin-left: 0;
  150. }
  151. dl.glossary dd
  152. {
  153. margin-bottom: 0em;
  154. margin-left: 1.5em;
  155. }
  156. dt
  157. {
  158. margin-top: .6em;
  159. margin-bottom: 1;
  160. }
  161. ul, ol
  162. {
  163. margin-top: 0.6em;
  164. margin-bottom: 0.6em;
  165. }
  166. ol
  167. {
  168. margin-left: 2.5em;
  169. }
  170. ul
  171. {
  172. list-style-type: disc;
  173. margin-left: 1.9em;
  174. }
  175. li
  176. {
  177. margin-bottom: 0.4em;
  178. }
  179. ul ol, ol ol
  180. {
  181. list-style-type: lower-alpha;
  182. }
  183. pre
  184. {
  185. margin-top: .6em;
  186. margin-bottom: .6em;
  187. }
  188. pre
  189. {
  190. font: 105% Lucida, mono;
  191. color: #000066;
  192. }
  193. code
  194. {
  195. font-family: Monospace, Courier New, Courier;
  196. font-size: 105%;
  197. color: #000066;
  198. }
  199. table.userdata td
  200. {
  201. background: #ffffff;
  202. background-color: #F5F5F5;
  203. border-color: #ffffff;
  204. border: none;
  205. }
  206. table.clsWarning
  207. {
  208. background: #ffffff;
  209. padding: 0px;
  210. margin: 0px;
  211. border: none;
  212. }
  213. table.clsWarning td
  214. {
  215. padding: 0px;
  216. margin: 0px;
  217. background: #ffffff;
  218. vertical-align: middle;
  219. font-size: 70%;
  220. }
  221. div#mainSection table
  222. {
  223. width: 98%;
  224. background: #ffffff;
  225. margin-top: 5px;
  226. margin-bottom: 5px;
  227. }
  228. div#mainSection table th
  229. {
  230. padding: 5px 6px;
  231. background: #EFEFF7;
  232. text-align: left;
  233. font-size: 70%;
  234. vertical-align: bottom;
  235. border-bottom: 1px solid #C8CDDE;
  236. }
  237. div#mainSection table td
  238. {
  239. padding: 5px 5px;
  240. background: #F7F7FF;
  241. vertical-align: top;
  242. font-size: 70%;
  243. border-bottom: 1px solid #D5D5D3;
  244. }
  245. div#syntaxCodeBlocks table th
  246. {
  247. padding: 1px 6px;
  248. color: #000066;
  249. }
  250. div#syntaxCodeBlocks table td
  251. {
  252. padding: 1px 5px;
  253. }
  254. /* Applies to the running header text in the first row of the upper table in the
  255. non-scrolling header region. */
  256. span#runningHeaderText
  257. {
  258. color: #003399;
  259. font-size: 90%;
  260. padding-left: 13;
  261. }
  262. /* Applies to the topic title in the second row of the upper table in the
  263. non-scrolling header region. */
  264. span#nsrTitle
  265. {
  266. color: #003399;
  267. font-size: 120%;
  268. font-weight: 600;
  269. padding-left: 13;
  270. }
  271. /* Applies to everything below the non-scrolling header region. */
  272. div#mainSection
  273. {
  274. font-size: 70%;
  275. width: 100%;
  276. }
  277. /* Applies to everything below the non-scrolling header region, minus the footer. */
  278. div#mainBody
  279. {
  280. font-size: 90%;
  281. margin-left: 15;
  282. margin-top: 10;
  283. padding-bottom: 20;
  284. }
  285. /* Adds right padding for all blocks in mainBody */
  286. div#mainBody p, div#mainBody ol, div#mainBody ul, div#mainBody dl
  287. {
  288. padding-right: 5;
  289. }
  290. div#mainBody div.alert, div#mainBody div.code, div#mainBody div.tableSection
  291. {
  292. width:98.9%;
  293. }
  294. div.alert p, div.code p
  295. {
  296. margin-top:5;
  297. margin-bottom:8;
  298. }
  299. /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Begin Note Styles - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
  300. div#mainSection div.alert table
  301. {
  302. border: 0;
  303. }
  304. div#mainSection div.alert table th
  305. {
  306. padding-top: 0;
  307. padding-bottom: 0;
  308. padding-left: 5;
  309. padding-right: 5;
  310. }
  311. div#mainSection div.alert table td
  312. {
  313. padding-left: 5;
  314. padding-right: 5;
  315. }
  316. img.note
  317. {
  318. border: 0;
  319. margin-left: 0;
  320. margin-right: 3;
  321. }
  322. /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - End Note Styles - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
  323. /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Begin Non-scrolling Header Region Styles - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
  324. /* Applies to the entire non-scrolling header region. */
  325. div#header
  326. {
  327. background-color: #D4DFFF;
  328. padding-top: 0;
  329. padding-bottom: 0;
  330. padding-left: 0;
  331. padding-right: 0;
  332. width: 100%;
  333. }
  334. /* Applies to both tables in the non-scrolling header region. */
  335. div#header table
  336. {
  337. margin-top: 0;
  338. margin-bottom: 0;
  339. border-bottom-color: #C8CDDE;
  340. border-bottom-style: solid;
  341. border-bottom-width: 1;
  342. background: #D4DFFF;
  343. width: 100%;
  344. }
  345. /* Applies to cells in both tables in the non-scrolling header region. */
  346. div#header table td
  347. {
  348. color: #0000FF;
  349. font-size: 70%;
  350. padding-right: 20;
  351. padding-top: 1;
  352. padding-bottom: 1;
  353. border: none;
  354. background: #D4DFFF;
  355. }
  356. /* Applies to the last row in the upper table of the non-scrolling header region. Text
  357. in this row includes See Also, Constructors, Methods, and Properties. */
  358. div#header table tr#headerTableRow3 td
  359. {
  360. padding-bottom: 2;
  361. padding-top: 5;
  362. padding-left: 15;
  363. }
  364. /* Applies to the lower table in the non-scrolling header region. Text in this table
  365. includes Collapse All/Expand All, Language Filter, and Members Options. */
  366. div#header table#bottomTable
  367. {
  368. border-top-color: #FFFFFF;
  369. border-top-style: solid;
  370. border-top-width: 1;
  371. text-align: left;
  372. padding-left: 15;
  373. }
  374. blockquote
  375. {
  376. margin-left: 3.8em;
  377. margin-right: 3.8em;
  378. margin-top: .6em;
  379. margin-bottom: .6em;
  380. }
  381. sup
  382. {
  383. text-decoration: none;
  384. font-size: smaller;
  385. }
  386. a:link
  387. {
  388. color: #0000FF;
  389. /* font-weight: bold */
  390. }
  391. a:visited
  392. {
  393. color: #0000AA;
  394. /* font-weight: bold */
  395. }
  396. a:hover
  397. {
  398. color: #3366FF;
  399. /* font-weight: bold */
  400. }
  401. .label
  402. {
  403. font-weight: bold;
  404. margin-top: 1em;
  405. margin-left: -26px;
  406. }
  407. .tl
  408. {
  409. margin-bottom: .75em;
  410. }
  411. .atl
  412. {
  413. padding-left: 1.5em;
  414. padding-bottom: .75em;
  415. }
  416. .cfe
  417. {
  418. font-weight: bold;
  419. }
  420. .mini
  421. {
  422. font-size: smaller;
  423. }
  424. .dt
  425. {
  426. margin-bottom: -.6em;
  427. }
  428. .indent
  429. {
  430. margin-left: 1.9em;
  431. margin-right: 1.9em;
  432. }
  433. .product
  434. {
  435. text-align: right;
  436. color: #333333;
  437. font-size: smaller;
  438. font-style: italic;
  439. }
  440. .buttonbarshade
  441. {
  442. position: relative;
  443. margin: 0;
  444. left: 0px;
  445. top: 2;
  446. width: 50%;
  447. height: 40px;
  448. }
  449. .buttonbartable
  450. {
  451. position: absolute;
  452. margin: 0;
  453. padding:0;
  454. border:0;
  455. left:0px;
  456. top: 2;
  457. width: 100%;
  458. height: 40px;
  459. }
  460. /* background color, font for header */
  461. table.buttonbartable td, table.buttonbarshade td
  462. {
  463. background: #ffffff; /*#5177B8; #80C615;*/
  464. border-left: 0px solid #80C615;
  465. margin: 0;
  466. padding: 0px 0px 0px 0px;
  467. font-family: Impact, sans-serif;
  468. font-size: 14pt;
  469. }
  470. table.buttonbartable td.button1
  471. {
  472. background: #5177B8; /*#80C615;*/;
  473. padding: 0;
  474. font-weight: bold;
  475. text-align: center;
  476. cursor: hand;
  477. }
  478. table.buttonbartable td.button2
  479. {
  480. background: #5177B8; /*#80C615;*/;
  481. font-weight: bold;
  482. text-align: center;
  483. }
  484. table.buttonbartable td.button3
  485. {
  486. background: #5177B8; /*#80C615;*/;
  487. font-weight: bold;
  488. text-align: center;
  489. }
  490. table.buttonbartable td.runninghead
  491. {
  492. padding-left: 0px;
  493. font-style: italic;
  494. text-align: left;
  495. }
  496. .version
  497. {
  498. text-align: left;
  499. color: #000000;
  500. margin-top: 3em;
  501. margin-left: -26px;
  502. font-size: smaller;
  503. font-style: italic;
  504. }
  505. .lang, .ilang
  506. {
  507. color: #0000ff;
  508. font: normal 7pt Arial, Helvetica, sans-serif;
  509. }
  510. div.langMenu
  511. {
  512. position: absolute;
  513. z-index: 1;
  514. width: 96pt;
  515. padding: 8pt;
  516. visibility: hidden;
  517. border: 1px solid #000000;
  518. background: #ffffd0;
  519. }
  520. div.langMenu ul
  521. {
  522. padding-left: 2em;
  523. margin-left: 0;
  524. }
  525. div.filtered
  526. {
  527. margin: 4pt 0 8pt -26px;
  528. padding: 4px 4px 8px 26px;
  529. width: 100%;
  530. border: 2px solid #aaaacc;
  531. background: #ffffff;
  532. }
  533. div.filtered2
  534. {
  535. margin: 4pt 0 8pt -26px;
  536. padding: 4px 4px 8px 26px;
  537. width: 100%;
  538. border: none;
  539. background: #ffffff;
  540. }
  541. div.filtered h1, div.filtered h2, div.filtered h3, div.filtered h4
  542. {
  543. margin-left: -22px;
  544. }
  545. div.filtered span.lang
  546. {
  547. position: relative;
  548. left: -22px;
  549. }
  550. div.reftip
  551. {
  552. position: absolute;
  553. z-index: 1;
  554. padding: 8pt;
  555. visibility: hidden;
  556. border: 1px solid #000000;
  557. background: #ffffd0;
  558. }
  559. a.synParam
  560. {
  561. color: #0000FF;
  562. /*color: #3F7800;*/
  563. /*color: #8DC54F;*/
  564. text-decoration: none;
  565. font-weight: normal;
  566. }
  567. a.synParam:hover
  568. {
  569. text-decoration: underline;
  570. font-weight: normal;
  571. }
  572. div.sapop
  573. {
  574. position: absolute;
  575. z-index: 1;
  576. left: 26px;
  577. width: 100%;
  578. padding: 10px 10px 10px 36px;
  579. visibility: hidden;
  580. border: 1px solid #000000;
  581. background: #ffffd0;
  582. }
  583. div.footer
  584. {
  585. width: 100%;
  586. border: none;
  587. background: #ffffff;
  588. margin-top: 18pt;
  589. padding-bottom: 12pt;
  590. color: #0000FF;
  591. /*color: #228B22; */
  592. text-align: center;
  593. font-size: 76%;
  594. }
  595. div.preliminary
  596. {
  597. margin-top: 8pt;
  598. padding-bottom: 12pt;
  599. color: #A0A0A0;
  600. }
  601. /* A procedure section. eg. 'To create a file', 'To add a value' */
  602. div.proc
  603. {
  604. margin-left: 0.5em;
  605. }
  606. /* The title of a 'procedure' section. */
  607. div.proc h3
  608. {
  609. font-family: Verdana, Arial, Helvetica, sans-serif;
  610. font-weight: bold;
  611. font-size: 115%;
  612. margin-top: 1em;
  613. margin-bottom: 0.4em;
  614. margin-left: -0.5em;
  615. color: #003399;
  616. }
  617. div.proc ul
  618. {
  619. margin-left: 1.5em;
  620. }
  621. div.proc ol
  622. {
  623. margin-left: 2.0em;
  624. }
  625. .note
  626. {
  627. margin-left: 14pt;
  628. margin-right: 12pt;
  629. }
  630. .indent1
  631. {
  632. margin-left: 12pt;
  633. }
  634. .indent2
  635. {
  636. margin-left: 24pt;
  637. }
  638. .indent3
  639. {
  640. margin-left: 36pt;
  641. }
  642. p.proch
  643. {
  644. padding-left: 16px;
  645. }
  646. p.proch img
  647. {
  648. position: relative;
  649. vertical-align: top;
  650. left: -18px;
  651. margin-right: -14px;
  652. margin-bottom: -18px;
  653. }
  654. div.clsPlatSpec
  655. {
  656. background-color:#FFF8DC;
  657. border-style:solid;
  658. border-width:1pt 0pt 0pt 1pt;
  659. border-color:#ffE4C4;
  660. margin-top:0.6em;
  661. width:100%;
  662. }
  663. /* Applies to the language labels in the Language Filter drop-down list. */
  664. .languageFilter
  665. {
  666. color: #0000FF;
  667. cursor:hand;
  668. text-decoration:underline;
  669. padding-bottom:4;
  670. }
  671. /* Dropdown areas */
  672. #languageSpan {
  673. position: absolute;
  674. visibility: hidden;
  675. border-style: solid;
  676. border-width: 1px;
  677. border-color: #C8CDDE;
  678. background: #d4dfff;
  679. padding: 4px;
  680. font-size: 70%;
  681. }
  682. #membersOptionsSpan {
  683. position: absolute;
  684. visibility: hidden;
  685. border-style: solid;
  686. border-width: 1px;
  687. border-color: #C8CDDE;
  688. background: #d4dfff;
  689. padding: 4px;
  690. font-size: 70%;
  691. }
  692. --></style>
  693. <xml>
  694. <MSHelp:TOCTitle Title="Role-Playing Game Starter Kit" />
  695. <MSHelp:RLTitle Title="Role-Playing Game Starter Kit" />
  696. <MSHelp:Keyword Index="A" Term="O:Microsoft.Xna.Role-Playing_Game_Starter_Kit" />
  697. <MSHelp:Keyword Index="A" Term="861a5edb-14b7-0f36-23aa-7abf1f869577" />
  698. <MSHelp:Keyword Index="K" Term="Role-Playing Game Starter Kit" />
  699. <MSHelp:Attr Name="ProjType" Value="LocalProj" />
  700. <MSHelp:Attr Name="ProjType" Value="XNA_30" />
  701. <MSHelp:Attr Name="DocSet" Value="XNA" />
  702. <MSHelp:Attr Name="DocSet" Value="ExpressLibVS" />
  703. <MSHelp:Attr Name="DocSet" Value="C#" />
  704. <MSHelp:Attr Name="Locale" Value="en-us" />
  705. <MSHelp:Attr Name="CommunityContent" Value="1" />
  706. <MSHelp:Attr Name="AssetID" Value="861a5edb-14b7-0f36-23aa-7abf1f869577" />
  707. <MSHelp:Attr Name="TopicType" Value="kbOrient" />
  708. </xml>
  709. </head><body><div id="mainSection"><div id="mainBody">
  710. <h1>Role-Playing Game Starter Kit</h1>
  711. <p>This topic contains the following sections.</p>
  712. <ul><li><a href="#ID2EP">Introduction to the Role-Playing Game Starter Kit</a></li><li><a href="#ID2ECB">Features</a></li><li><a href="#ID2EBF">Getting Started</a></li><li><a href="#ID2EGBAC">Playing the Role-Playing Game</a></li><li><a href="#ID2EIHAC">Extending the Role-Playing Game</a></li></ul>
  713. <a name="ID2EP"></a><h1 class="heading">Introduction to the Role-Playing Game Starter Kit</h1><div id="ID2EP" class="hxnx1">
  714. <p>The Role-Playing Game Starter Kit is a complete XNA Game Studio game. The project comes ready to compile and run, and it's easy to customize with a little bit of C# programming. You are free to use the source code as the basis for your own XNA Game Studio game projects, and to share your work with others.</p>
  715. <p>
  716. This starter kit contains a two-dimensional, tile-based, single-player, role-playing game. This game is complete with character classes, multiple party members, items, and quests. It also features a turn-based combat engine with a side-on presentation and animated characters and effects. All of the game data is exposed in XML files. This makes it easy to write your own quests, create your own towns, or even write your own storyline right into the game.
  717. </p>
  718. <div class="alert"><table cellspacing="0" cellpadding="0"><tr><th>Note </th></tr><tr><td>This documentation assumes that you have a basic knowledge of programming concepts and the Visual C# environment. You can learn more about these topics in the product documentation by clicking one of the <b>Help</b> menu items. Another way to learn is to position the mouse cursor on language keywords or user interface elements such as windows or dialog boxes and then press F1.</td></tr></table></div>
  719. </div>
  720. <a name="ID2ECB"></a><h1 class="heading">Features</h1><div id="ID2ECB" class="hxnx1">
  721. <p>This starter kit provides a complete XNA Game Studio game. It includes source code and game content such as models, textures, and sounds. The starter kit documentation describes the general layout and controls for the Role-Playing Game Starter Kit.</p>
  722. <p>The Role-Playing Game Starter Kit demonstrates the following features:</p>
  723. <a name="ID2ENB"></a><h2 class="subHeading">Tile Engine</h2><div id="ID2ENB" class="hxnx2">
  724. <ul>
  725. <li>Two-dimensional overhead view of the world</li>
  726. <li>
  727. <p>World layout controlled by four two-dimensional arrays of integers:</p>
  728. <ul>
  729. <li>Base tiles</li>
  730. <li>Fringe tiles</li>
  731. <li>Objects</li>
  732. <li>Collision</li>
  733. </ul></li>
  734. <li>Arbitrary player movement within tiles</li>
  735. <li>Calculation of collisions with the environment at the tile level</li>
  736. <li>Animated sprite support</li>
  737. <li>Visibility checks to make sure that only the tiles onscreen are submitted to the graphics device</li>
  738. </ul>
  739. </div>
  740. <a name="ID2EOC"></a><h2 class="subHeading">Turn-Based Combat Engine</h2><div id="ID2EOC" class="hxnx2">
  741. <ul>
  742. <li>Two-dimensional view of the combat arena, with the player’s party lined up against the enemy forces</li>
  743. <li>Turn-based combat where each combatant chooses an action and executes it immediately</li>
  744. <li>Multiple supported actions per character, including attacking, defending, spell-casting, and item use</li>
  745. <li>Artificial intelligence that adapts to each enemy’s statistics and supported actions</li>
  746. <li>Animated combat actions and spell effects</li>
  747. </ul>
  748. </div>
  749. <a name="ID2EAD"></a><h2 class="subHeading">External Game Data</h2><div id="ID2EAD" class="hxnx2">
  750. <p>Nearly all game data is exposed in XML files outside of the game code, which means there is support for extensive modifications that don’t require any programming knowledge</p>
  751. <ul>
  752. <li>
  753. <p>Supported game data types include:</p>
  754. <ul>
  755. <li>Maps</li>
  756. <li>Quests</li>
  757. <li>Party members</li>
  758. <li>Non-player characters</li>
  759. <li>Monsters</li>
  760. <li>Character classes</li>
  761. <li>Spells</li>
  762. <li>Equipment</li>
  763. <li>Items</li>
  764. </ul>
  765. </li>
  766. </ul>
  767. <p>These types have direct correlations in the RolePlayingGameData class library. These types have very little game logic in them to make them as easy to maintain and modify as possible.</p>
  768. </div>
  769. <a name="ID2EGE"></a><h2 class="subHeading">User Interface</h2><div id="ID2EGE" class="hxnx2">
  770. <ul>
  771. <li>Features numerous screens, including inventory and dialogue menus</li>
  772. <li>Implemented using the Game State Management sample, which is available on the XNA Creators Club Online Web site</li>
  773. </ul>
  774. </div>
  775. <a name="ID2ESE"></a><h2 class="subHeading">Saving and Loading</h2><div id="ID2ESE" class="hxnx2">
  776. <ul>
  777. <li>Save and load from any time when the party is in the overhead view</li>
  778. <li>Extensive serialization and deserialization system supports complete and efficient save games</li>
  779. <li>Side-by-side serialization types separate loading and saving code from gameplay code</li>
  780. </ul>
  781. </div>
  782. </div>
  783. <a name="ID2EBF"></a><h1 class="heading">Getting Started</h1><div id="ID2EBF" class="hxnx1">
  784. <a name="ID2EFF"></a><h2 class="subHeading">Requirements</h2><div id="ID2EFF" class="hxnx2">
  785. <a name="ID2EJF"></a><h4 class="subHeading">Minimum Shader Profile</h4><div id="ID2EJF" class="hxnx3">
  786. <dl class="glossary">
  787. <dt>Vertex Shader Model 1.1</dt>
  788. <dt>Pixel Shader Model 2.0</dt>
  789. </dl>
  790. </div>
  791. </div>
  792. <a name="ID2EWF"></a><h2 class="subHeading">Installing the Role-Playing Game Starter Kit</h2><div id="ID2EWF" class="hxnx2">
  793. <div class="proc"><h3 class="subHeading">To install the Role-Playing Game Starter Kit</h3><div class="subSection">
  794. <ol>
  795. <li>Download the Role-Playing Game .vsi file.</li>
  796. <li>Run Visual Studio Installer, following the on-screen instructions.</li>
  797. </ol>
  798. </div></div>
  799. </div>
  800. <a name="ID2EHG"></a><h2 class="subHeading">Creating, Building, and Running a Role-Playing Game Project</h2><div id="ID2EHG" class="hxnx2">
  801. <p>You can create multiple Role-Playing Game projects. Each is a complete, stand-alone game that you can build, run, and modify as desired.</p>
  802. <div class="proc"><h3 class="subHeading">To create a new Role-Playing Game project</h3><div class="subSection">
  803. <ol>
  804. <li>On the Visual C# Express <b>File</b> menu, click <b>New Project</b>.
  805. <div class="alert"><table cellspacing="0" cellpadding="0"><tr><th>Note </th></tr><tr><td>This may take a minute while Visual C# Express loads the templates for the first time.</td></tr></table></div>
  806. <p>
  807. The <b>New Project</b> dialog box appears, displaying the project types you can create. Under <b>My Templates</b>, you will see <b>Role-Playing Game Windows Starter Kit</b> and <b>Role-Playing Game Xbox 360 Starter Kit</b>.
  808. </p>
  809. </li>
  810. <li>Select <b>Role-Playing Game Windows Starter Kit</b> or <b>Role-Playing Game Xbox 360 Starter Kit</b>, and then click <b>OK</b>.
  811. <div class="alert"><table cellspacing="0" cellpadding="0"><tr><th>Note </th></tr><tr><td>The starter kit may take a minute to load.</td></tr></table></div>
  812. </li>
  813. </ol>
  814. </div></div>
  815. <div class="proc"><h3 class="subHeading">To build and run the Role-Playing Game project</h3><div class="subSection">
  816. <ul>
  817. <li>
  818. <p>Press F5, or, on the <b>Debug</b> menu, click <b>Start Debugging</b>.</p>
  819. <p>The project will build and then run within the debugger.</p>
  820. </li>
  821. </ul>
  822. <div class="alert"><table cellspacing="0" cellpadding="0"><tr><th>Note </th></tr><tr><td>The project may take several minutes to build before it can be launched. To see build progress during the build, open the Output window (from the <b>View</b> menu, click <b>Output</b>) before you start the build.</td></tr></table></div>
  823. </div></div>
  824. <div class="proc"><h3 class="subHeading">To build the project without running it</h3><div class="subSection">
  825. <ul>
  826. <li>
  827. <p>Press F6, or, on the <b>Build</b> menu, click <b>Build Solution</b>.</p>
  828. <p>The project will build without running.</p>
  829. </li>
  830. </ul>
  831. </div></div>
  832. </div>
  833. </div>
  834. <a name="ID2EGBAC"></a><h1 class="heading">Playing the Role-Playing Game</h1><div id="ID2EGBAC" class="hxnx1">
  835. <a name="ID2EKBAC"></a><h2 class="subHeading">Role-Playing Game Screens</h2><div id="ID2EKBAC" class="hxnx2">
  836. <p>The Role-Playing Game begins at the Main Menu.</p>
  837. <a name="ID2EQBAC"></a><h4 class="subHeading">Main Menu</h4><div id="ID2EQBAC" class="hxnx3">
  838. <p>From the Main Menu, you can start a <b>New Game</b>, <b>Load Game</b>, check the <b>Controls</b>, access <b>Help</b>, or <b>Exit</b>.</p>
  839. <table>
  840. <tr>
  841. <th>Action</th>
  842. <th>Controller</th>
  843. <th>Keyboard</th>
  844. </tr>
  845. <tr>
  846. <td>Highlight a menu option.</td>
  847. <td>D-Pad UP or D-Pad DOWN</td>
  848. <td>UP ARROW or DOWN ARROW</td>
  849. </tr>
  850. <tr>
  851. <td>Select a highlighted option.</td>
  852. <td>
  853. <b>A</b>
  854. </td>
  855. <td>ENTER</td>
  856. </tr>
  857. <tr>
  858. <td>Exit the game.</td>
  859. <td>
  860. <b>BACK</b>
  861. </td>
  862. <td>ESC</td>
  863. </tr>
  864. </table>
  865. </div>
  866. <a name="ID2EPDAC"></a><h4 class="subHeading">Exploring the World</h4><div id="ID2EPDAC" class="hxnx3">
  867. <p>You will explore the game world with your party by controlling your party leader from a top-down perspective.</p>
  868. <table>
  869. <tr>
  870. <th>Action</th>
  871. <th>Controller</th>
  872. <th>Keyboard</th>
  873. </tr>
  874. <tr>
  875. <td>Move Up/Down/Left/Right</td>
  876. <td>Left Thumbstick Up/Down/Left/Right</td>
  877. <td>UP/DOWN/LEFT/RIGHT</td>
  878. </tr>
  879. <tr>
  880. <td>Enter Character Management System</td>
  881. <td>Y</td>
  882. <td>SPACE</td>
  883. </tr>
  884. <tr>
  885. <td>Return to the Main Menu</td>
  886. <td>START</td>
  887. <td>TAB</td>
  888. </tr>
  889. <tr>
  890. <td>Exit the Game</td>
  891. <td>BACK</td>
  892. <td>ESC</td>
  893. </tr>
  894. </table>
  895. </div>
  896. <a name="ID2EGFAC"></a><h4 class="subHeading">Combat</h4><div id="ID2EGFAC" class="hxnx3">
  897. <p>When your characters enter combat, the perspective will shift to a side-on view. Control your characters in turn-based combat to defeat enemies.</p>
  898. <table>
  899. <tr>
  900. <th>Action</th>
  901. <th>Controller</th>
  902. <th>Keyboard</th>
  903. </tr>
  904. <tr>
  905. <td>Change Active Character Left/Right</td>
  906. <td>Left Thumbstick Left/Right</td>
  907. <td>LEFT/RIGHT</td>
  908. </tr>
  909. <tr>
  910. <td>Change Menu Selection Up/Down</td>
  911. <td>Left Thumbstick Up/Down</td>
  912. <td>UP/DOWN</td>
  913. </tr>
  914. <tr>
  915. <td>Select Option</td>
  916. <td>A</td>
  917. <td>ENTER</td>
  918. </tr>
  919. <tr>
  920. <td>Cancel Option</td>
  921. <td>B</td>
  922. <td>ESC</td>
  923. </tr>
  924. <tr>
  925. <td>Win Combat (Debug Only)</td>
  926. <td>Right Shoulder</td>
  927. <td>W</td>
  928. </tr>
  929. </table>
  930. </div>
  931. </div>
  932. </div>
  933. <a name="ID2EIHAC"></a><h1 class="heading">Extending the Role-Playing Game</h1><div id="ID2EIHAC" class="hxnx1">
  934. <p>There are many ways to add your own functionality to the Role-Playing Game:</p>
  935. <a name="ID2EOHAC"></a><h2 class="subHeading">Game Content</h2><div id="ID2EOHAC" class="hxnx2">
  936. <p>All of the gameplay content is contained in XML files loaded by the XNA Content Pipeline. These can be altered, or new files can be added and integrated into the game.</p>
  937. <p>For example, you can edit Content\MainGameDescription.xml to add more members to the party at the start of the game, or edit Content\Characters\Players\Kolatt.xml to give him better equipment at the start of the game.</p>
  938. <p>Additional changes could be made to the code to support additional features built on top of these data types. For example, you could change the quest system to support rewarding the party with a new party member.</p>
  939. <p>All of the animations are implemented as sprite sheets, combined with animation definitions in the game types that use them (spells, characters, etc.).</p>
  940. <p>There is a lot of extra content provided with this starter kit than is used in the pre-existing game. For example, walking animations for the map sprites for your party members are provided, and you could use these to draw all of the party members trailing behind the leader.</p>
  941. <p>Additional content will be made available on the <a href="http://creators.xna.com">XNA Creators Club Online</a> website that will describe some of these content-creation scenarios in more detail.</p>
  942. </div>
  943. <a name="ID2EDIAC"></a><h2 class="subHeading">Combat and Artificial Intelligence</h2><div id="ID2EDIAC" class="hxnx2">
  944. <p>The player chooses combat actions for the party members, and the code in Combat\ArtificialIntelligence.cs chooses combat actions for the monsters. This AI code can be customized to provide advanced behaviors, like healing fellow monsters or performing statistic-damaging attacks.</p>
  945. <p>With more alterations to the combat engine, defined in Combat\CombatEngine.cs, the player's party can have NPCs of it's own, fighting under AI control.</p>
  946. <p>Additional combat actions could be added by deriving new classes from CombatAction, using the existing actions as a reference. The combat engine, in Combat\CombatEngine.cs, and the HUD (heads-up-display) menu, in GameScreens\Hud.cs, would have to be updated to support this additional action. For example, a Steal action would add a fun dimension to combat.</p>
  947. <p>Another possibility is to extend the size of the party beyond the current four-member limit, and create a new menu to designate which party members will fight in combat.</p>
  948. <p>The current combat system chooses sides randomly, and each side completes all of their moves before the other side may take their turn. You could interleave the combat turns and make the order deterministic by adding a dexterity or speed attribute to fighting characters.</p>
  949. </div>
  950. <a name="ID2ESIAC"></a><h2 class="subHeading">Re-using Game Systems</h2><div id="ID2ESIAC" class="hxnx2">
  951. <p>Many of the game systems represent universal concepts to role-playing games, such as quests and characters, that could be re-used in an original game engine. This would leverage the existing XNA Content Pipeline-based data management system while using these types in entirely new ways.</p>
  952. <p>The game execution systems could also be decoupled from the rest of the starter kit and reused in new games. The tile engine, defined in TileEngine.cs, could be used in many different kinds of games.</p>
  953. </div>
  954. </div>
  955. </div><div class="footer" id="footer"><p>© 2008 Microsoft Corporation. All rights reserved.<br>Send feedback to <a href="mailto:[email protected]?subject=Documentation Feedback: Role-Playing Game Starter Kit">[email protected]</a>.</p></div></div></body></html>