-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
b4b77ff
commit 4a71d3f
Showing
1 changed file
with
84 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
TODO | ||
- block diagram to describe storage and rendering function | ||
- blogpost link for tesselation | ||
|
||
rename | ||
Render.hs - to suggest that it sets up game content to pipeline storage | ||
|
||
coding tasks: | ||
- explicit export lists for each modules | ||
- type signatures for top level functions | ||
- comments for functions and data structures | ||
- descriptive argument and variable names | ||
- split big modules | ||
- Render.hs | ||
|
||
|
||
# Overview | ||
- **straight to the point** | ||
- **use diagrams** | ||
- **shorter is better** | ||
|
||
start of technical part, it's for Haskell programmers, | ||
for those who want to hack | ||
|
||
overview diagram, containing only few boxes | ||
|
||
# Engine | ||
code modules: | ||
- Engine.hs | ||
|
||
## Game Content | ||
- Zip.hs | ||
- describe the process how the pk3/zip entry list constructed and how the content is loaded | ||
|
||
## Rendering | ||
### Geometry | ||
- BSP.hs | ||
- group fields into: visual/visual optimization/collision | ||
- MD3.hs | ||
- Q3Patch.hs | ||
- Render.hs, group or refactor | ||
- fill storage | ||
- per-frame visual optimization | ||
- frustum culling | ||
|
||
### Material System | ||
- Material.hs | ||
- ShaderParser.hs | ||
- Graphics.lc | ||
|
||
### Character Animation | ||
- Character.hs | ||
- block diagram | ||
|
||
## Collision Detection | ||
- Collision.hs | ||
- link to collision blogpost | ||
- brush explanation (level vs point/sphere/box collision) | ||
|
||
## Game Logic | ||
- Entity.hs | ||
- Items.hs | ||
|
||
# Map Viewer | ||
# Shooter Game | ||
|
||
# Future Plans | ||
- networking | ||
|
||
# Motivation | ||
for users and developers | ||
- what is this? | ||
- what is the approach? | ||
- what is the goal? | ||
- what is the current state? | ||
|
||
high level, non technical, understandable for any programmer | ||
|
||
- The goal is to create a id Tech 3 compatible game engine using purely functional programming only. | ||
|
||
purpose | ||
- demonstration | ||
- good start to build prototypes | ||
- foundation for commercial gaming |
4a71d3f
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Csaba, I have started drawing a GraphML/yEd diagram of q3mapviewer (which I like, because it is FRP-based). It still is a work in progress, but here's what I've got this far:
4a71d3f
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@csabahruska, updated:
Any feedback you are willing to give would be very welcome!
4a71d3f
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you draw this manually?
I plan to write a detailed developer documentation also.
4a71d3f
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes, manually, so it's prone to omissions and imprecisions, although I try to be systematic..
4a71d3f
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
well, manually, but using a graph editor -- https://www.yworks.com/products/yed
4a71d3f
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
seems to be a useful tool
4a71d3f
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@csabahruska, I have done more work on the graph -- extending, organizing, adding two overviews, making omissions explicit, etc.:
4a71d3f
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(the GraphML/yEd source is in the same place)
4a71d3f
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm curious, how is this useful for you? What did you learn from making this?
4a71d3f
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@csabahruska, I have awful memory, and navigating source files is too slow/inefficient for me for getting a bigger picture -- so I wanted a way to produce more-or-less reliable summaries of what goes on -- which required being able to capture things more-or-less precisely, first.
In the end, I have got a certain understanding of the core notions, and how they relate to each other.
4a71d3f
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You appear to think this is useless for documentation purposes.. sigh.. Ah well.. : -)
4a71d3f
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it is too detailed, almost as much as the source code. I'll do a much simpler diagrams for high level documentation.