## Final Project - Part 3

This part is about showing off your work by building a website for your portfolio. Read the instructions below for what is needed.

## Step 0 - (New!) Engine Architecture Diagram

Your project should have an 'engine architecture' diagram on your website which describes the major components of the engine. See [./media/C4Engine.pdf](./media/C4Engine.pdf) as an example. Note, some IDEs can automatically generate these, though you can draw it yourself and highlight the most important components. Think of this as a high-level diagram you would give an engineer the first day of work so they would know the components and how they interact if they want to modify the engine.

## Step 1 - Documentation

Now that you are going to be maintaining the code for your company for many years, it is important to properly document your code. You will continue to use 'Doxygen' <a href="http://www.doxygen.nl/">(Doxygen webpage)</a> or [Doxypress](https://www.copperspice.com/documentation-doxypress.html) to document the source code and automatically generate .html pages. Your documentation should cover your classes and functions.

An example of a well documented probjects can be found here:

- https://www.ogre3d.org/docs/api/1.9/
- http://www.horde3d.org/docs/html/_api.html

### Doxygen style comments

Some examples of documentation are listed here: http://www.doxygen.nl/manual/docblocks.html

Comments within code are in the style of:

```cpp
/*!
 * ... text ...
 */

/*!
 ... text ...
*/

//!
//!... text ...
//!

/*! \brief Brief description.
 *         Brief description continued.
 *
 *  Detailed description starts here.
 */

```

**Note**: A helpful tool to use may be: [Doxywizard](http://www.doxygen.nl/manual/doxywizard_usage.html)

## Step 2 - Build (binary file)

You need to have a compiled binary of your game for your operating system (Either Windows, Mac, or Linux). You can assume a target audience of either a 64-bit Mac, Ubuntu Linux, or a Windows 10 machine. There should additionally be instructions about how to compile your code from source. The compilation should be trivial (running `python build.py` for example, or listing a series of 'apt-get install' in a single command or a script you have built. **Make it trivial** so customers/course staff do not get frustrated :) ).

## Step 3 - Post mortem

A post mortem in games is a look back at what could be improved. Write a brief (2-3 paragraphs) on what could be improved if you had an additional 8 weeks to work on this project. Where would you allocate time, what tools would you build, would you use any different tools, etc.

I welcome you to the FLY Engine, a collaborative game engine project from the minds of Gwen Cranton, Jared Weinstein, Gitonga Waigwa, and Andrew Panzone. Through this post mortem, I will walk you through our design philosophies, scheduling methodologies, future implications of this project (of which there are many), and unfortunate setbacks. 

Before we can get into the intricacies of what could be added to our engine, let us first discuss the systems that we currently have in place, along with how we were able to develop them over the course of the past four weeks. Although the design philosophies that inspired this project were mostly spelt out for us via rubric, we were still able to interpret these requirements with the freedom to develop an engaging engine that allows for users to create and modify game objects and their respective components before or during play. From the starting level that we have designed as a launching point for developers using our engine, users can modify the scene however they would like by adding game objects, editing them (I will go into further detail on this), or deleting them if they are displeased. When editing an existing game object, users can select from various components (controller, health, rigidbody, sprite, tilemap, and transform), all of which have their own modifiable fields that can be edited in real time. 

In order to showcase the capabilities of our engine, we have developed PHROG (Pretty Hype Really Original Game). In PHROG, you play as George, a cheerful, pixelated frog who loves to catch super sized flies that attempt (and most often fail) to slowly escape his reach. Once George has caught enough flies to satisfy his hunger, he wins and can finally rest! Although this gameplay structure is quite exciting, we could certainly have improved on it given eight more weeks of time. Some ideas included incorporating a projectile component in order to allow for a shooting mechanic, further fleshing out additional and more challenging levels in order to extend gameplay, and adding interactive elements such as non playable characters with fully customizable decision trees.

Now that you have a short summary of our final product, you may be wondering how it is that we got there. Due to this project being constrained to four weeks down the final stretch of the semester, we collaboratively came up with a plan to gradually move elements of our project across the finish line. This involved initially breaking up tasks by epics (engine, implementation, polish, bug fixing) and their underlying features (physics system, resource manager, game object & component structure, etc.) in order to get a full scope of what our engine and game would entail. From this point, we would individually grab tasks from our backlog in order to chip away at these features until we would eventually topple epics! Although we would have liked for this plan to have worked all the way through to the finish line, our perfect plan had become somewhat jaded by unforeseen and unfortunate circumstances that had hindered development in some areas, and in essence, our team had been down one member for almost two weeks of crucial time in development. Even though slightly disheartened by setback, our team righteously resurged to collaboratively patch holes and put the finishing touches on our engine and game, of which you now have the chance to create and play!


## Step 4 - Website

I think it is incredibly important to build a portfolio of your game development works! You will be building a 1 page website(it can be all html) to market your assignment. You can re-use this template for your next project, and potentially other personal projects.

The following are the requirements for a 1-page .html page.

1. Provide a 1 minute video trailer followed by at least 3 screenshots of your game (order matters, video first, then screenshots below)
2. Your documentation (i.e. a link to your doxygen generated files)
3. **An image** of your engine architecture.
4. A link to your binary
5. A short post mortem (i.e. A few paragraphs describing how you would take the project further, what went well, and what you would change if given another month on the project) should be put together on a 1-page .html page.

This website will be the first place I look to grab your project files and binaries.

[Please edit and put a link to your website here](https://spring23buildinggameengines.github.io/JagguarsDocumentation/)
