Skip to content

Commit

Permalink
add overview draft
Browse files Browse the repository at this point in the history
  • Loading branch information
csabahruska committed Dec 29, 2016
1 parent b4b77ff commit 4a71d3f
Showing 1 changed file with 84 additions and 0 deletions.
84 changes: 84 additions & 0 deletions lc-q3-overview.md
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

12 comments on commit 4a71d3f

@deepfire
Copy link
Contributor

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:

@deepfire
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@csabahruska, updated:

  • agenda
  • more structure
  • more details on the uploadMD3 path
  • more explicit omission of details

Any feedback you are willing to give would be very welcome!

@csabahruska
Copy link
Member Author

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.

@deepfire
Copy link
Contributor

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..

@deepfire
Copy link
Contributor

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

@csabahruska
Copy link
Member Author

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

@deepfire
Copy link
Contributor

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.:

@deepfire
Copy link
Contributor

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)

@csabahruska
Copy link
Member Author

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?

@deepfire
Copy link
Contributor

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.

@deepfire
Copy link
Contributor

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.. : -)

@csabahruska
Copy link
Member Author

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.

Please sign in to comment.