mkulagowski / minezprft Goto Github PK
View Code? Open in Web Editor NEWSimple game for university project
Simple game for university project
We need to be able to easily add arguments, so we can add them, instead of searching for an alternate way, which is often less intuitive.
It should be a class with static methods AddArgument(...) and ParseArguments(). I would suggest an std::map<std::string, ArgumentInfo*>, which would let us create one ArgumentInfo structure/class and then add all options (e.x. '-r' & '--resolution') to the map with a pointer to it. Less redundant data and easy checks whether arg exists or not (just check for nullptr).
Proposed example sketch of what an element of ArgumentParser should contain:
short: -r
long: --resolution
arg number: 2
verification func: [](auto w, auto h)->bool{ return IsNumeric(w) && IsNumeric(h);};
argument callback: GameManager::GetInstance().GetWindow()->SetSize();
All should be added dynamically via ArgumentParser::AddArgument() method. It should return self-reference, to make adding arguments in a batch easier, like so:
ArgumentParser::AddArgument(...)
.AddArgument(...)
.AddArgument(...);
It looks like we shouldn't keep Google Test on our repository. Remove it from repository and provide instructions on how to build it and install on both platforms inside README.md.
A MUST HAVE for terrain generation.
Features:
We need some class that will take care of logging & will be platform independent. I was thinking about either class with static log methods or a singleton.
Either way we need #defines to simplify calls to logger to 'LOG_ERROR(just like printf);' (same with LOG_INFO and LOG_WARNING).
It needs to log to stdout and to file. Windows version should log to OutputDebugString as well.
// TODO log
comments with LOG_x
macrosWe will also need final documentation, when we return our project.
Requirements (from Mr. Biedrzycki's page):
We need to display our game somewhere - this will be module that manages window and all of its properties. Not sure if we'll use X11 or Wayland - need research.
TBD:
Basic things to do:
Moreover, some TODOs to keep in mind:
Picking will be one of most crucial algorithms to implement. It will be used to update chunks by adding new voxels to the area.
Create a proof of concept, because we don't know for shit yet, what we are doing...
Implementing VR requires some adjustments to Math and rendering engine:
Macros should reflect file location on repostiory for uniqueness. For example, when a header is in Renderer/Common.hpp directory, create a block:
/**
* typical boilerplate
*/
#ifndef __RENDERER_COMMON_HPP__
#define __RENDERER_COMMON_HPP__
// contents of header
#endif // __RENDERER_COMMON_HPP__
Renderer part with following features:
Terrain Generator with following features:
We are indeed bravely documenting the entire code, however none of this was generated.
What is needed:
We need a way to measure FPS in our game. The problem is, we don't have (and probably won't have) any form of text rendering inside the game.
Our second best option would be printing the FPS value to console from current Timer object mFrameTimer (created as a part of GameManager), however this will flood our logs.
As a solution to this problem, create an AverageCounter class, which will measure an average FPS value and return it for printing inside GameManager.
Features:
There will probably be some surprises along the way, so I suggest rethinking the task and, most importantly:
Terrain Manager is responsible for creating cloud of points via Perlin Noise Generator, storing them in vertexBuffer, maintaining its copy on HDD and forwarding vertexBuffer to the renderer.
It holds enum class with different cube types.
A main class which will handle everything in the game.
Features:
Right now Game Manager launches the game in default 800x600 window. This definitely needs to be changed.
Support following scenarios:
There is no easy way to test it, so we will skip tests for now.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.