uibk_703807-Advanced-CXX/assignment2/README.md

56 lines
2.9 KiB
Markdown
Raw Normal View History

2020-10-01 16:14:12 +02:00
# Assignment 2
*due on 19 February 2021*
For the second assignment you can either pick one of the two provided specifications or come up with your own.
Yes, you are free to come up with a topic for the second assignment.
However, doing so requires you to put together a specification similar to the ones provided and get my approval.
The specification doesn't have to be bulletproof.
But it must contain a bullet list of goals (with points to score) at the bottom which can be checked / evaluated.
You can also adjust one of the provided specifications.
You are allowed to work in teams, yet the team size has to correspond to the amount of work (features) of the topic.
For the provided specifications the recommended team size is 3.
You are allowed to use:
- C++ standard library (C++17 standard)
- C standard library (as fallback)
- [Boost](https://www.boost.org/)
- [SDL](https://www.libsdl.org/)
- [GLFW](https://www.glfw.org/)
- [GLM](https://glm.g-truc.net/)
- [Vulkan](https://www.khronos.org/vulkan/) / [Vulkan-Hpp](https://github.com/KhronosGroup/Vulkan-Hpp)
- [Qt](https://www.qt.io/)
- [ImGui](https://github.com/ocornut/imgui)
- [ncurses](https://invisible-island.net/ncurses/)
2020-10-01 16:14:12 +02:00
- [OpenAL](https://openal.org/)
- [nlohmann/json](https://github.com/nlohmann/json) / [RapidJSON](https://rapidjson.org/)
- [Assimp](https://www.assimp.org/)
- [sbt-image](https://github.com/nothings/stb/blob/master/stb_image.h)
- [Ogg](https://xiph.org/ogg/) / [Vorbis] (https://xiph.org/vorbis/) / [Opus](https://opus-codec.org/)
2020-10-01 16:14:12 +02:00
- [Tiled](https://www.mapeditor.org/)
- [OpenSSL](https://www.openssl.org/)
- [SQLite](https://www.sqlite.org/)
- [Catch2](https://github.com/DigitalInBlue/Celero)
- [Google Test](https://github.com/google/googletest)
- [Google Benchmark](https://github.com/google/benchmark)
- [spdlog](https://github.com/gabime/spdlog)
- [fmt](https://github.com/fmtlib/fmt)
- [AngelScript](https://www.angelcode.com/angelscript/)
- [Lua](http://www.lua.org/) / [sol2](https://github.com/ThePhD/sol2)
- [cereal](https://github.com/USCiLab/cereal)
- [protobuf](https://github.com/protocolbuffers/protobuf)
- [Font Chef](https://github.com/mobius3/font-chef)
2020-10-01 16:14:12 +02:00
Feel free to ask me about other libraries / tools.
Your application should work on Linux and Windows unless there is a specific reason why it cannot be cross-platform.
For Linux, assume a recent version of Ubuntu Desktop and that the required dependencies are installed via the system's package manager.
Use the corresponding CMake `find_package` mechanism to find them, it is recommended to leverage [`pkgconf`](https://cmake.org/cmake/help/latest/module/FindPkgConfig.html).
For Windows you can simply ship pre-built libraries that are picked up by CMake automatically.
You must use [CMake](https://cmake.org/) as build system.
Use [ClangFormat](https://clang.llvm.org/docs/ClangFormat.html) to automatically format your code using the provided [`.clang-format`](../.clang-format) configuration.