Skip to content

Commit fcb8050

Browse files
authored
Add files via upload
1 parent f96f6d6 commit fcb8050

File tree

3 files changed

+205
-0
lines changed

3 files changed

+205
-0
lines changed

GenerateProjects.bat

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
call vendor\bin\premake\premake5.exe vs2022
2+
PAUSE

README.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# Hazel [![License](https://img.shields.io/github/license/TheCherno/Hazel.svg)](https://github.com/TheCherno/Hazel/blob/master/LICENSE)
2+
3+
![Hazel](/Resources/Branding/Hazel_Logo_Text_Light_Square.png?raw=true "Hazel")
4+
5+
Hazel is primarily an early-stage interactive application and rendering engine for Windows. Currently not much is implemented, however (almost) everything inside this repository is being created within YouTube videos, found at [thecherno.com/engine](https://thecherno.com/engine).
6+
7+
***
8+
9+
## Getting Started
10+
Visual Studio 2017 or 2019 is recommended, Hazel is officially untested on other development environments whilst we focus on a Windows build.
11+
12+
<ins>**1. Downloading the repository:**</ins>
13+
14+
Start by cloning the repository with `git clone --recursive https://github.com/TheCherno/Hazel`.
15+
16+
If the repository was cloned non-recursively previously, use `git submodule update --init` to clone the necessary submodules.
17+
18+
<ins>**2. Configuring the dependencies:**</ins>
19+
20+
1. Run the [Setup.bat](https://github.com/TheCherno/Hazel/blob/master/scripts/Setup.bat) file found in `scripts` folder. This will download the required prerequisites for the project if they are not present yet.
21+
2. One prerequisite is the Vulkan SDK. If it is not installed, the script will execute the `VulkanSDK.exe` file, and will prompt the user to install the SDK.
22+
3. After installation, run the [Setup.bat](https://github.com/TheCherno/Hazel/blob/master/scripts/Setup.bat) file again. If the Vulkan SDK is installed properly, it will then download the Vulkan SDK Debug libraries. (This may take a longer amount of time)
23+
4. After downloading and unzipping the files, the [Win-GenProjects.bat](https://github.com/TheCherno/Hazel/blob/master/scripts/Win-GenProjects.bat) script file will get executed automatically, which will then generate a Visual Studio solution file for user's usage.
24+
25+
If changes are made, or if you want to regenerate project files, rerun the [Win-GenProjects.bat](https://github.com/TheCherno/Hazel/blob/master/scripts/Win-GenProjects.bat) script file found in `scripts` folder.
26+
27+
***
28+
29+
## The Plan
30+
The plan for Hazel is two-fold: to create a powerful 3D engine, but also to serve as an education tool for teaching game engine design and architecture. Because of this the development inside this repository is rather slow, since everything has to be taught and implemented on-camera. There is a much more advanced version of the engine in a private repository called `Hazel-dev`, accessible to supporters on [Patreon](https://patreon.com/thecherno). The plan for this project is to mostly take already implemented code from the `Hazel-dev` repository and integrate it into this one, done within videos and supported by explanations.
31+
32+
### Main features to come:
33+
- Fast 2D rendering (UI, particles, sprites, etc.)
34+
- High-fidelity Physically-Based 3D rendering (this will be expanded later, 2D to come first)
35+
- Support for Mac, Linux, Android and iOS
36+
- Native rendering API support (DirectX, Vulkan, Metal)
37+
- Fully featured viewer and editor applications
38+
- Fully scripted interaction and behavior
39+
- Integrated 3rd party 2D and 3D physics engine
40+
- Procedural terrain and world generation
41+
- Artificial Intelligence
42+
- Audio system
43+
44+
45+
## Short term goals :
46+
*Note: this is subject to change at any time! Follow the roadmap over at [hazelengine.com/roadmap](http://hazelengine.com/roadmap).*
47+
48+
By the end 2020, we want to make a game using the Hazel game engine. Not like the time I made a game in one hour using the engine, but this time by using the proper tools that would be required to make a game with Hazel. This means we need to add a full 2D workflow:
49+
50+
- Design the game scene by using Hazelnut, the Hazel editor,
51+
- Test the game inside Hazelnut, including the ability to save/load the created game,
52+
- Load and play the game inside Sandbox.
53+
54+
We want everyone to be able to play the game on all desktop platforms (Windows, Mac and Linux). When this is implemented, another attempt at the "Creating a game in one hour using Hazel" will be made to see how far the engine has become.
55+
56+
[![Twitter](https://img.shields.io/badge/%40thecherno--blue.svg?style=social&logo=Twitter)](https://twitter.com/thecherno)
57+
[![Instagram](https://img.shields.io/badge/thecherno--red.svg?style=social&logo=Instagram)](https://www.instagram.com/thecherno)
58+
[![Youtube](https://img.shields.io/badge/TheChernoProject--red.svg?style=social&logo=youtube)](https://www.youtube.com/user/TheChernoProject)
59+
[![Discord](https://img.shields.io/badge/TheCherno%20Server--blue.svg?style=social&logo=Discord)](https://discord.gg/K2eSyQA)
60+
[![Patreon](https://img.shields.io/badge/%40thecherno--green.svg?style=social&logo=Patreon)](https://patreon.com/thecherno)

premake5.lua

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
workspace "Hazel"
2+
architecture "x64"
3+
startproject "Sandbox"
4+
5+
configurations
6+
{
7+
"Debug",
8+
"Release",
9+
"Dist"
10+
}
11+
12+
outputdir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}"
13+
14+
-- Include directories relative to root folder
15+
IncludeDir = {}
16+
IncludeDir["GLFW"] = "Hazel/vendor/GLFW/include"
17+
IncludeDir["GLAD"] = "Hazel/vendor/GLAD/include"
18+
IncludeDir["ImGui"] = "Hazel/vendor/imgui"
19+
20+
include "Hazel/vendor/GLFW"
21+
include "Hazel/vendor/GLAD"
22+
include "Hazel/vendor/imgui"
23+
24+
project "Hazel"
25+
location "Hazel"
26+
kind "SharedLib"
27+
language "C++"
28+
staticruntime "off"
29+
30+
targetdir ("bin/" .. outputdir .. "/%{prj.name}")
31+
objdir ("bin-int/" .. outputdir .. "/%{prj.name}")
32+
33+
pchheader "hzpch.h"
34+
pchsource "Hazel/src/hzpch.cpp"
35+
36+
files
37+
{
38+
"%{prj.name}/src/**.h",
39+
"%{prj.name}/src/**.cpp"
40+
}
41+
42+
includedirs
43+
{
44+
"%{prj.name}/src",
45+
"%{prj.name}/vendor/spdlog/include",
46+
"%{IncludeDir.GLFW}",
47+
"%{IncludeDir.GLAD}",
48+
"%{IncludeDir.ImGui}"
49+
50+
}
51+
52+
links
53+
{
54+
"GLFW",
55+
"GLAD",
56+
"ImGui",
57+
"opengl32.lib",
58+
"dwmapi.lib"
59+
}
60+
61+
filter "system:windows"
62+
cppdialect "C++17"
63+
systemversion "latest"
64+
65+
defines
66+
{
67+
"HZ_PLATFORM_WINDOWS",
68+
"HZ_BUILD_DLL",
69+
"_WINDLL", --might delete it later
70+
"GLFW_INCLUDE_NONE"
71+
}
72+
73+
postbuildcommands
74+
{
75+
("{COPY} %{cfg.buildtarget.relpath} \"../bin/" .. outputdir .. "/Sandbox/\"")
76+
}
77+
78+
filter "configurations:Debug"
79+
defines "HZ_DEBUG"
80+
runtime "Debug"
81+
symbols "On"
82+
83+
filter "configurations:Release"
84+
defines "HZ_RELEASE"
85+
runtime "Release"
86+
optimize "On"
87+
88+
filter "configurations:Dist"
89+
defines "HZ_DIST"
90+
runtime "Release"
91+
optimize "On"
92+
93+
94+
project "Sandbox"
95+
96+
location "Sandbox"
97+
kind "ConsoleApp"
98+
language "C++"
99+
staticruntime "off"
100+
101+
targetdir ("bin/" .. outputdir .. "/%{prj.name}")
102+
objdir ("bin-int/" .. outputdir .. "/%{prj.name}")
103+
104+
files
105+
{
106+
"%{prj.name}/src/**.h",
107+
"%{prj.name}/src/**.cpp"
108+
}
109+
110+
includedirs
111+
{
112+
"Hazel/vendor/spdlog/include",
113+
"Hazel/src"
114+
}
115+
116+
links
117+
{
118+
"Hazel"
119+
}
120+
121+
filter "system:windows"
122+
cppdialect "C++17"
123+
systemversion "latest"
124+
125+
defines
126+
{
127+
"HZ_PLATFORM_WINDOWS"
128+
}
129+
130+
filter "configurations:Debug"
131+
defines "HZ_DEBUG"
132+
runtime "Debug"
133+
symbols "On"
134+
135+
filter "configurations:Release"
136+
defines "HZ_RELEASE"
137+
runtime "Release"
138+
optimize "On"
139+
140+
filter "configurations:Dist"
141+
defines "HZ_DIST"
142+
runtime "Release"
143+
optimize "On"

0 commit comments

Comments
 (0)