The very beginning of my forever game project, starting as a "simple" roguelike.

roadmap.org 7.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. * General thoughts
  2. I expect the road to 1.0 to be very very long. Probably multiple years.
  3. That being said, keeping a up-to-date roadmap should help me stay organized.
  4. This is a LIVING document, so please don't assume this will never change.
  5. They are also in some rough chronological order but the order is by no means guaranteed.
  6. Each version will be tagged upon being considered complete
  7. * Research
  8. ** TODO ECS systems :realworld:
  9. - Excellent Intro: http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/
  10. - The most cited paper: http://scottbilas.com/files/2002/gdc_san_jose/game_objects_slides.pdf
  11. _Note_ I didnt get as much out of this one ^^ at the time. Im not sure why as it's pretty
  12. thorough.
  13. - Entity Systems are the future of MMOG development:
  14. http://t-machine.org/index.php/2007/09/03/entity-systems-are-the-future-of-mmog-development-part-2/
  15. http://t-machine.org/index.php/2007/09/03/entity-systems-are-the-future-of-mmog-development-part-3/
  16. I loved this one (and I have no interest in mmorpgs), it was my favourite after the first one I linked. It was the first one where I 'got' some of the advantages.
  17. - Entitas: https://www.youtube.com/watch?v=1wvMXur19M4
  18. This is an alternative ECS for Unity, it uses a precompile pass for C# which it makes it's approach interesting as that maps straight to macros.
  19. Very focussed on performance, which is one of the reasons I like ECS.
  20. ** TODO Read through http://gameprogrammingpatterns.com/contents.html :realworld:
  21. :PROPERTIES:
  22. :Effort: 20
  23. :END:
  24. * Code Snippets (for future use)
  25. ** How to get a path to executable or project depending on which you are running as:
  26. from([[https://github.com/mfiano/gamebox/blob/master/src/utils/utils.lisp]])
  27. #+BEGIN_SRC lisp
  28. (in-package :gbx.util)
  29. (defun path (context dir &optional file)
  30. (let ((path (format nil "~A/~@[~A~]" dir file)))
  31. (with-slots (user) context
  32. (if uiop/image:*image-dumped-p*
  33. (truename
  34. (uiop/pathname:merge-pathnames*
  35. path
  36. (uiop:pathname-directory-pathname (uiop:argv0))))
  37. (asdf/system:system-relative-pathname user path)))))
  38. (defun read-file (context file)
  39. (let ((path (path context "." file)))
  40. (when (and (or (pathnamep path) (stringp path))
  41. (uiop/filesystem:file-exists-p path))
  42. (with-open-file (in path)
  43. (let ((*read-eval* nil))
  44. (read in))))))
  45. (defun flatten-floats (sequence)
  46. (let ((sequence (mapcar #'float (flatten sequence))))
  47. (make-array (length sequence)
  48. :element-type 'single-float
  49. :initial-contents sequence)))
  50. #+END_SRC
  51. * Versions
  52. ** 0.0
  53. *** DONE Ask #lispgames for feedback on this roadmap. :realworld:
  54. CLOSED: [2016-09-20 Tue 19:35]
  55. :PROPERTIES:
  56. :Effort: 1
  57. :END:
  58. *** TODO Figure out a name for the game :realworld:
  59. :PROPERTIES:
  60. :Effort: 1
  61. :END:
  62. - Magisterium
  63. - Praeditus
  64. - Opus Perpetuum (thanks aeth from #lispgames for the suggestion)
  65. *** TODO Learn ncurses
  66. - http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/NCURSES-Programming-HOWTO.html
  67. - http://stevelosh.com/blog/2016/08/lisp-jam-postmortem/#ncurses-and-cl-charms
  68. - https://github.com/sjl/sand/blob/master/src/ascii.lisp#L12-L91
  69. *** ABORTED Go through opengl tutorials to become more comfortable :realworld:
  70. CLOSED: [2016-09-20 Tue 19:35]
  71. :PROPERTIES:
  72. :Effort: 60
  73. :END:
  74. ** 0.1
  75. *** TODO Implement basic ncurses 2D graphics system with tiles and character "graphics". Should be overhead view, not isomorphic. Similar to dwarf fortress. :client:
  76. :PROPERTIES:
  77. :Effort: 40
  78. :END:
  79. **** Possibly use someone else's engine, though that loses some learning value.
  80. *** TODO Implement basic player character with movement and basic melee and ranged attack (no RNG yet, just standard) as well as health. :client:
  81. :PROPERTIES:
  82. :Effort: 20
  83. :END:
  84. *** TODO Create basic static map to play around in. Implement this by creating a map format to save maps and loading it. Should have walls, nothing else. :client:
  85. :PROPERTIES:
  86. :Effort: 10
  87. :END:
  88. *** TODO Add basic tile based collision so player can't exit map nor collide with walls. :client:
  89. :PROPERTIES:
  90. :Effort: 20
  91. :END:
  92. *** TODO Create basic config. Basic player stats (health, attack damage) should exist. :client:
  93. :PROPERTIES:
  94. :Effort: 10
  95. :END:
  96. *** TODO Create one enemy, dummy with melee attack and health. Make sure it also has collision. No AI needed for this version, just a punching bag. :client:
  97. :PROPERTIES:
  98. :Effort: 10
  99. :END:
  100. **** Training dummy graphic would be good. Perhaps an auto retaliate attack to test out combat better?
  101. ** 0.2
  102. *** TODO Ask on #lispgames for feedback on version 0.1. :realworld:
  103. :PROPERTIES:
  104. :Effort: 1
  105. :END:
  106. *** TODO Implement #lispgames feedback that I like. :client:server:
  107. :PROPERTIES:
  108. :Effort: 20
  109. :END:
  110. *** TODO Move game to basic client <-> server model over local sockets. :client:server:
  111. :PROPERTIES:
  112. :Effort: 80
  113. :END:
  114. **** The only reason this is so early is to attempt to avoid coding myself into a corner.
  115. **** Long term I want this to be protocol agnostic and allow multi clients per a server.
  116. ** 0.3
  117. *** TODO Ask on #lispgames for feedback on version 0.2. :realworld:
  118. :PROPERTIES:
  119. :Effort: 1
  120. :END:
  121. *** TODO Implement #lispgames feedback that I like. :client:server:
  122. :PROPERTIES:
  123. :Effort: 20
  124. :END:
  125. *** TODO Flesh out character design ideas, start prototyping in org-mode/paper/whiteboard character talents. :realworld:
  126. :PROPERTIES:
  127. :Effort: 20
  128. :END:
  129. *** TODO Add items :server:
  130. :PROPERTIES:
  131. :Effort: 20
  132. :END:
  133. *** TODO Add some items to static map. :server:
  134. :PROPERTIES:
  135. :Effort: 1
  136. :END:
  137. *** TODO Add item placeholder graphics and text. :client:
  138. *** TODO Add inventory to player/enemies. :server:
  139. *** TODO Add inventory view :client:
  140. *** TODO Add ability for player to pickup items :client:
  141. **** The server side of this should have been done in Add inventory to player/enemies above.
  142. *** TODO Add basic AI enemy that will attack and run away. :server:
  143. ** 0.4
  144. *** TODO Ask on #lispgames for feedback on version 0.3. :realworld:
  145. :PROPERTIES:
  146. :Effort: 1
  147. :END:
  148. *** TODO Implement #lispgames feedback that I like. :client:server:
  149. :PROPERTIES:
  150. :Effort: 20
  151. :END:
  152. ** 0.5
  153. *** TODO Ask on #lispgames for feedback on version 0.4. :realworld:
  154. :PROPERTIES:
  155. :Effort: 1
  156. :END:
  157. *** TODO Implement #lispgames feedback that I like. :client:server:
  158. :PROPERTIES:
  159. :Effort: 20
  160. :END:
  161. ** 0.6
  162. *** TODO Ask on #lispgames for feedback on version 0.5. :realworld:
  163. :PROPERTIES:
  164. :Effort: 1
  165. :END:
  166. *** TODO Implement #lispgames feedback that I like. :client:server:
  167. :PROPERTIES:
  168. :Effort: 20
  169. :END:
  170. ** 0.7
  171. *** TODO Ask on #lispgames for feedback on version 0.6. :realworld:
  172. :PROPERTIES:
  173. :Effort: 1
  174. :END:
  175. *** TODO Implement #lispgames feedback that I like. :server:client:
  176. :PROPERTIES:
  177. :Effort: 20
  178. :END:
  179. ** 0.8
  180. *** TODO Ask on #lispgames for feedback on version 0.7. :realworld:
  181. :PROPERTIES:
  182. :Effort: 1
  183. :END:
  184. *** TODO Implement #lispgames feedback that I like. :server:client:
  185. :PROPERTIES:
  186. :Effort: 20
  187. :END:
  188. ** 0.9
  189. *** TODO Ask on #lispgames for feedback on version 0.8. :realworld:
  190. :PROPERTIES:
  191. :Effort: 1
  192. :END:
  193. *** TODO Implement #lispgames feedback that I like. :server:client:
  194. :PROPERTIES:
  195. :Effort: 20
  196. :END:
  197. ** 1.0
  198. *** TODO Ask on #lispgames for feedback on version 0.9. :realworld:
  199. :PROPERTIES:
  200. :Effort: 1
  201. :END:
  202. *** TODO Implement #lispgames feedback that I like. :client:server:
  203. :PROPERTIES:
  204. :Effort: 20
  205. :END: