├── img
├── res.png
└── unity-games.png
├── CONTRIBUTING.md
├── LICENSE
├── CODE_INTERMEDIATE.md
├── CODE_BASICS.md
└── README.md
/img/res.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/proyecto26/awesome-unity/HEAD/img/res.png
--------------------------------------------------------------------------------
/img/unity-games.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/proyecto26/awesome-unity/HEAD/img/unity-games.png
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | When contributing to this repository, please first discuss the change you wish to make via issue,
4 | email, or any other method with the owners of this repository before making a change.
5 |
6 | Please note we have a code of conduct, please follow it in all your interactions with the project.
7 |
8 | ## Code of Conduct
9 |
10 | ### Our Pledge
11 |
12 | In the interest of fostering an open and welcoming environment, we as
13 | contributors and maintainers pledge to making participation in our project and
14 | our community a harassment-free experience for everyone, regardless of age, body
15 | size, disability, ethnicity, gender identity and expression, level of experience,
16 | nationality, personal appearance, race, religion, or sexual identity and
17 | orientation.
18 |
19 | ### Our Standards
20 |
21 | Examples of behavior that contributes to creating a positive environment
22 | include:
23 |
24 | * Using welcoming and inclusive language
25 | * Being respectful of differing viewpoints and experiences
26 | * Gracefully accepting constructive criticism
27 | * Focusing on what is best for the community
28 | * Showing empathy towards other community members
29 |
30 | Examples of unacceptable behavior by participants include:
31 |
32 | * The use of sexualized language or imagery and unwelcome sexual attention or
33 | advances
34 | * Trolling, insulting/derogatory comments, and personal or political attacks
35 | * Public or private harassment
36 | * Publishing others' private information, such as a physical or electronic
37 | address, without explicit permission
38 | * Other conduct which could reasonably be considered inappropriate in a
39 | professional setting
40 |
41 | ### Our Responsibilities
42 |
43 | Project maintainers are responsible for clarifying the standards of acceptable
44 | behavior and are expected to take appropriate and fair corrective action in
45 | response to any instances of unacceptable behavior.
46 |
47 | Project maintainers have the right and responsibility to remove, edit, or
48 | reject comments, commits, code, wiki edits, issues, and other contributions
49 | that are not aligned to this Code of Conduct, or to ban temporarily or
50 | permanently any contributor for other behaviors that they deem inappropriate,
51 | threatening, offensive, or harmful.
52 |
53 | ### Scope
54 |
55 | This Code of Conduct applies both within project spaces and in public spaces
56 | when an individual is representing the project or its community. Examples of
57 | representing a project or community include using an official project e-mail
58 | address, posting via an official social media account, or acting as an appointed
59 | representative at an online or offline event. Representation of a project may be
60 | further defined and clarified by project maintainers.
61 |
62 | ### Enforcement
63 |
64 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
65 | reported by contacting the project team at jdnichollsc@hotmail.com. All
66 | complaints will be reviewed and investigated and will result in a response that
67 | is deemed necessary and appropriate to the circumstances. The project team is
68 | obligated to maintain confidentiality with regard to the reporter of an incident.
69 | Further details of specific enforcement policies may be posted separately.
70 |
71 | Project maintainers who do not follow or enforce the Code of Conduct in good
72 | faith may face temporary or permanent repercussions as determined by other
73 | members of the project's leadership.
74 |
75 | ### Attribution
76 |
77 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
78 | available at [http://contributor-covenant.org/version/1/4][version]
79 |
80 | [homepage]: http://contributor-covenant.org
81 | [version]: http://contributor-covenant.org/version/1/4/
82 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | CC0 1.0 Universal
2 |
3 | Statement of Purpose
4 |
5 | The laws of most jurisdictions throughout the world automatically confer
6 | exclusive Copyright and Related Rights (defined below) upon the creator and
7 | subsequent owner(s) (each and all, an "owner") of an original work of
8 | authorship and/or a database (each, a "Work").
9 |
10 | Certain owners wish to permanently relinquish those rights to a Work for the
11 | purpose of contributing to a commons of creative, cultural and scientific
12 | works ("Commons") that the public can reliably and without fear of later
13 | claims of infringement build upon, modify, incorporate in other works, reuse
14 | and redistribute as freely as possible in any form whatsoever and for any
15 | purposes, including without limitation commercial purposes. These owners may
16 | contribute to the Commons to promote the ideal of a free culture and the
17 | further production of creative, cultural and scientific works, or to gain
18 | reputation or greater distribution for their Work in part through the use and
19 | efforts of others.
20 |
21 | For these and/or other purposes and motivations, and without any expectation
22 | of additional consideration or compensation, the person associating CC0 with a
23 | Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
24 | and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
25 | and publicly distribute the Work under its terms, with knowledge of his or her
26 | Copyright and Related Rights in the Work and the meaning and intended legal
27 | effect of CC0 on those rights.
28 |
29 | 1. Copyright and Related Rights. A Work made available under CC0 may be
30 | protected by copyright and related or neighboring rights ("Copyright and
31 | Related Rights"). Copyright and Related Rights include, but are not limited
32 | to, the following:
33 |
34 | i. the right to reproduce, adapt, distribute, perform, display, communicate,
35 | and translate a Work;
36 |
37 | ii. moral rights retained by the original author(s) and/or performer(s);
38 |
39 | iii. publicity and privacy rights pertaining to a person's image or likeness
40 | depicted in a Work;
41 |
42 | iv. rights protecting against unfair competition in regards to a Work,
43 | subject to the limitations in paragraph 4(a), below;
44 |
45 | v. rights protecting the extraction, dissemination, use and reuse of data in
46 | a Work;
47 |
48 | vi. database rights (such as those arising under Directive 96/9/EC of the
49 | European Parliament and of the Council of 11 March 1996 on the legal
50 | protection of databases, and under any national implementation thereof,
51 | including any amended or successor version of such directive); and
52 |
53 | vii. other similar, equivalent or corresponding rights throughout the world
54 | based on applicable law or treaty, and any national implementations thereof.
55 |
56 | 2. Waiver. To the greatest extent permitted by, but not in contravention of,
57 | applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
58 | unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
59 | and Related Rights and associated claims and causes of action, whether now
60 | known or unknown (including existing as well as future claims and causes of
61 | action), in the Work (i) in all territories worldwide, (ii) for the maximum
62 | duration provided by applicable law or treaty (including future time
63 | extensions), (iii) in any current or future medium and for any number of
64 | copies, and (iv) for any purpose whatsoever, including without limitation
65 | commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes
66 | the Waiver for the benefit of each member of the public at large and to the
67 | detriment of Affirmer's heirs and successors, fully intending that such Waiver
68 | shall not be subject to revocation, rescission, cancellation, termination, or
69 | any other legal or equitable action to disrupt the quiet enjoyment of the Work
70 | by the public as contemplated by Affirmer's express Statement of Purpose.
71 |
72 | 3. Public License Fallback. Should any part of the Waiver for any reason be
73 | judged legally invalid or ineffective under applicable law, then the Waiver
74 | shall be preserved to the maximum extent permitted taking into account
75 | Affirmer's express Statement of Purpose. In addition, to the extent the Waiver
76 | is so judged Affirmer hereby grants to each affected person a royalty-free,
77 | non transferable, non sublicensable, non exclusive, irrevocable and
78 | unconditional license to exercise Affirmer's Copyright and Related Rights in
79 | the Work (i) in all territories worldwide, (ii) for the maximum duration
80 | provided by applicable law or treaty (including future time extensions), (iii)
81 | in any current or future medium and for any number of copies, and (iv) for any
82 | purpose whatsoever, including without limitation commercial, advertising or
83 | promotional purposes (the "License"). The License shall be deemed effective as
84 | of the date CC0 was applied by Affirmer to the Work. Should any part of the
85 | License for any reason be judged legally invalid or ineffective under
86 | applicable law, such partial invalidity or ineffectiveness shall not
87 | invalidate the remainder of the License, and in such case Affirmer hereby
88 | affirms that he or she will not (i) exercise any of his or her remaining
89 | Copyright and Related Rights in the Work or (ii) assert any associated claims
90 | and causes of action with respect to the Work, in either case contrary to
91 | Affirmer's express Statement of Purpose.
92 |
93 | 4. Limitations and Disclaimers.
94 |
95 | a. No trademark or patent rights held by Affirmer are waived, abandoned,
96 | surrendered, licensed or otherwise affected by this document.
97 |
98 | b. Affirmer offers the Work as-is and makes no representations or warranties
99 | of any kind concerning the Work, express, implied, statutory or otherwise,
100 | including without limitation warranties of title, merchantability, fitness
101 | for a particular purpose, non infringement, or the absence of latent or
102 | other defects, accuracy, or the present or absence of errors, whether or not
103 | discoverable, all to the greatest extent permissible under applicable law.
104 |
105 | c. Affirmer disclaims responsibility for clearing rights of other persons
106 | that may apply to the Work or any use thereof, including without limitation
107 | any person's Copyright and Related Rights in the Work. Further, Affirmer
108 | disclaims responsibility for obtaining any necessary consents, permissions
109 | or other rights required for any use of the Work.
110 |
111 | d. Affirmer understands and acknowledges that Creative Commons is not a
112 | party to this document and has no duty or obligation with respect to this
113 | CC0 or use of the Work.
114 |
115 | For more information, please see
116 | Generic Lists
6 |
7 | ```csharp
8 | using UnityEngine;
9 | using System.Collections;
10 | using System.Collections.Generic;
11 |
12 | public class SceneController: MonoBehaviour {
13 |
14 | public ListDictionaries
30 |
31 | ```csharp
32 | using UnityEngine;
33 | using System.Collections;
34 | using System.Collections.Generic;
35 |
36 | public class SceneController: MonoBehaviour {
37 | public DictionaryQueues
65 |
66 | ```csharp
67 | using UnityEngine;
68 | using System.Collections;
69 | using System.Collections.Generic;
70 |
71 | public class EnemiesController: MonoBehaviour {
72 | public QueueStacks
98 |
99 | ```csharp
100 | using UnityEngine;
101 | using System.Collections;
102 | using System.Collections.Generic;
103 |
104 | public class EnemiesController: MonoBehaviour {
105 | public StackCoroutines
131 |
132 | ```csharp
133 | using System.Collections;
134 | using System.Collections.Generic;
135 | using UnityEngine;
136 |
137 | public class TaskController : MonoBehaviour
138 | {
139 | public ListEvents
184 |
185 | - EventManager.cs
186 |
187 | ```csharp
188 | using UnityEngine;
189 | using System.Collections;
190 |
191 | public class EventManager : MonoBehaviour
192 | {
193 | public delegate void ClickAction();
194 | public static event ClickAction OnClicked;
195 |
196 |
197 | void OnGUI()
198 | {
199 | if(GUI.Button(new Rect(Screen.width / 2 - 50, 5, 100, 30), "Click"))
200 | {
201 | if(OnClicked != null)
202 | OnClicked();
203 | }
204 | }
205 | }
206 | ```
207 |
208 | - TeleportScript.cs
209 |
210 | ```csharp
211 | using UnityEngine;
212 | using System.Collections;
213 |
214 | public class TeleportScript : MonoBehaviour
215 | {
216 | void OnEnable()
217 | {
218 | EventManager.OnClicked += Teleport;
219 | }
220 |
221 |
222 | void OnDisable()
223 | {
224 | EventManager.OnClicked -= Teleport;
225 | }
226 |
227 |
228 | void Teleport()
229 | {
230 | Vector3 pos = transform.position;
231 | pos.y = Random.Range(1.0f, 3.0f);
232 | transform.position = pos;
233 | }
234 | }
235 | ```
236 |
237 | - TurnColorScript.cs
238 |
239 | ```csharp
240 | using UnityEngine;
241 | using System.Collections;
242 |
243 | public class TurnColorScript : MonoBehaviour
244 | {
245 | void OnEnable()
246 | {
247 | EventManager.OnClicked += TurnColor;
248 | }
249 |
250 |
251 | void OnDisable()
252 | {
253 | EventManager.OnClicked -= TurnColor;
254 | }
255 |
256 |
257 | void TurnColor()
258 | {
259 | Color col = new Color(Random.value, Random.value, Random.value);
260 | renderer.material.color = col;
261 | }
262 | }
263 | ```
264 | Player Movement
6 |
7 | ```csharp
8 | using UnityEngine;
9 | using System.Collections;
10 |
11 | public class PlayerController : MonoBehaviour {
12 |
13 | public float speed;
14 |
15 | private Rigidbody rb;
16 |
17 | void Start ()
18 | {
19 | rb = GetComponentMoving Camera
37 |
38 | ```csharp
39 | using UnityEngine;
40 | using System.Collections;
41 |
42 | public class CameraController : MonoBehaviour {
43 |
44 | public GameObject player;
45 |
46 | private Vector3 offset;
47 |
48 | void Start ()
49 | {
50 | offset = transform.position - player.transform.position;
51 | }
52 |
53 | void LateUpdate ()
54 | {
55 | transform.position = player.transform.position + offset;
56 | }
57 | }
58 | ```
59 | Collectable Objects
62 |
63 | ```csharp
64 | using UnityEngine;
65 | using System.Collections;
66 |
67 | public class PlayerController : MonoBehaviour {
68 |
69 | void OnTriggerEnter(Collider other)
70 | {
71 | if (other.gameObject.CompareTag ("Pick Up"))
72 | {
73 | other.gameObject.SetActive (false);
74 | }
75 | }
76 | }
77 | ```
78 | Score Display
81 |
82 | ```csharp
83 | using UnityEngine;
84 | using UnityEngine.UI;
85 | using System.Collections;
86 |
87 | public class PlayerController : MonoBehaviour {
88 |
89 | public Text countText;
90 | public Text winText;
91 | private int count;
92 |
93 | void Start ()
94 | {
95 | count = 0;
96 | SetCountText();
97 | winText.text = "";
98 | }
99 |
100 | void OnTriggerEnter(Collider other)
101 | {
102 | if (other.gameObject.CompareTag ( "Pick Up"))
103 | {
104 | count = count + 1;
105 | SetCountText ();
106 | }
107 | }
108 |
109 | void SetCountText ()
110 | {
111 | countText.text = "Count: " + count.ToString ();
112 | if (count >= 12)
113 | {
114 | winText.text = "You Win!";
115 | }
116 | }
117 | }
118 | ```
119 | Behaviour Components
122 |
123 | ```csharp
124 | using UnityEngine;
125 | using System.Collections;
126 |
127 | public class ExampleBehaviourScript : MonoBehaviour
128 | {
129 | void Update()
130 | {
131 | if (Input.GetKeyDown(KeyCode.R))
132 | {
133 | GetComponentCheck State
141 |
142 | ```csharp
143 | using UnityEngine;
144 | using System.Collections;
145 |
146 | public class CheckState : MonoBehaviour
147 | {
148 | public GameObject myObject;
149 |
150 | void Start ()
151 | {
152 | Debug.Log("Active Self: " + myObject.activeSelf);
153 | Debug.Log("Active in Hierarchy" + myObject.activeInHierarchy);
154 | }
155 | }
156 | ```
157 | Translate and Rotate
160 |
161 | ```csharp
162 | using UnityEngine;
163 | using System.Collections;
164 |
165 | public class TransformFunctions : MonoBehaviour
166 | {
167 | public float moveSpeed = 10f;
168 | public float turnSpeed = 50f;
169 |
170 | // Update is called once per frame
171 | void Update ()
172 | {
173 | if(Input.GetKey(KeyCode.UpArrow))
174 | transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
175 |
176 | if(Input.GetKey(KeyCode.DownArrow))
177 | transform.Translate(-Vector3.forward * moveSpeed * Time.deltaTime);
178 |
179 | if(Input.GetKey(KeyCode.LeftArrow))
180 | transform.Rotate(Vector3.up, -turnSpeed * Time.deltaTime);
181 |
182 | if(Input.GetKey(KeyCode.RightArrow))
183 | transform.Rotate(Vector3.up, turnSpeed * Time.deltaTime);
184 | }
185 | }
186 | ```
187 | Look At
190 |
191 | ```csharp
192 | using UnityEngine;
193 | using System.Collections;
194 |
195 | public class CameraLookAt : MonoBehaviour
196 | {
197 | public Transform target;
198 |
199 | void Update ()
200 | {
201 | transform.LookAt(target);
202 | }
203 | }
204 | ```
205 | Linear Interpolation
208 |
209 | ```csharp
210 | // In this case, result = 4
211 | float result = Mathf.Lerp (3f, 5f, 0.5f);
212 | // The Mathf.Lerp function takes 3 float parameters: one representing the value to interpolate from; another representing the value to interpolate to and a final float representing how far to interpolate
213 |
214 | Vector3 from = new Vector3 (1f, 2f, 3f);
215 | Vector3 to = new Vector3 (5f, 6f, 7f);
216 |
217 | // Here result = (4, 5, 6)
218 | Vector3 result = Vector3.Lerp (from, to, 0.75f);
219 |
220 | // The same principle is applied when using Color.Lerp.
221 | // In the Color struct, colours are represented by 4 floats representing red, blue, green and alpha.
222 | // When using Lerp, these floats are interpolated just as with Mathf.Lerp and Vector3.Lerp.
223 |
224 | void Update ()
225 | {
226 | light.intensity = Mathf.Lerp(light.intensity, 8f, 0.5f * Time.deltaTime);
227 | // With deltaTime, the change to intensity would happen per second instead of per frame.
228 | }
229 | ```
230 | GetAxis Horizontal and Vertical
233 |
234 | ```csharp
235 | using UnityEngine;
236 | using System.Collections;
237 |
238 | public class DualAxisExample : MonoBehaviour
239 | {
240 | public float range;
241 | public GUIText textOutput;
242 |
243 | void Update ()
244 | {
245 | float h = Input.GetAxis("Horizontal");
246 | float v = Input.GetAxis("Vertical");
247 | float xPos = h * range;
248 | float yPos = v * range;
249 |
250 | transform.position = new Vector3(xPos, yPos, 0);
251 | textOutput.text = "Horizontal Value Returned: "+h.ToString("F2")+"\nVertical Value Returned: "+v.ToString("F2");
252 | }
253 | }
254 | ```
255 | OnMouseDown
258 |
259 | ```csharp
260 | using UnityEngine;
261 | using System.Collections;
262 |
263 | public class MouseClick : MonoBehaviour
264 | {
265 | void OnMouseDown ()
266 | {
267 | rigidbody.AddForce(-transform.forward * 500f);
268 | rigidbody.useGravity = true;
269 | }
270 | }
271 | ```
272 | Using Other Components
275 |
276 | ```csharp
277 | using UnityEngine;
278 | using System.Collections;
279 |
280 | public class UsingOtherComponents : MonoBehaviour
281 | {
282 | public GameObject otherGameObject;
283 |
284 | private AnotherScript anotherScript;
285 | private YetAnotherScript yetAnotherScript;
286 | private BoxCollider boxCol;
287 |
288 | void Awake ()
289 | {
290 | anotherScript = GetComponentUsing Delta Times
306 |
307 | ```csharp
308 | using UnityEngine;
309 | using System.Collections;
310 |
311 | public class UsingDeltaTime : MonoBehaviour
312 | {
313 | public float speed = 8f;
314 | public float countdown = 3.0f;
315 |
316 | void Update ()
317 | {
318 | countdown -= Time.deltaTime;
319 | if(countdown <= 0.0f)
320 | light.enabled = true;
321 |
322 | if(Input.GetKey(KeyCode.RightArrow))
323 | transform.position += new Vector3(speed * Time.deltaTime, 0.0f, 0.0f);
324 | }
325 | }
326 | ```
327 | Using Data Types
330 |
331 | ```csharp
332 | using UnityEngine;
333 | using System.Collections;
334 |
335 | public class DatatypeScript : MonoBehaviour
336 | {
337 | void Start ()
338 | {
339 | //Value type variable
340 | Vector3 pos = transform.position;
341 | pos = new Vector3(0, 2, 0);
342 |
343 | //Reference type variable
344 | Transform tran = transform;
345 | tran.position = new Vector3(0, 2, 0);
346 | }
347 | }
348 | ```
349 | Using Instantiate
352 |
353 | ```csharp
354 | using UnityEngine;
355 | using System.Collections;
356 |
357 | public class UsingInstantiate : MonoBehaviour
358 | {
359 | public Rigidbody rocketPrefab;
360 | public Transform barrelEnd;
361 |
362 |
363 | void Update ()
364 | {
365 | if(Input.GetButtonDown("Fire1"))
366 | {
367 | Rigidbody rocketInstance = Instantiate(rocketPrefab, barrelEnd.position, barrelEnd.rotation) as Rigidbody;
368 | rocketInstance.AddForce(barrelEnd.forward * 5000);
369 | }
370 | }
371 | }
372 | ```
373 | Arrays
376 |
377 | ```csharp
378 | using UnityEngine;
379 | using System.Collections;
380 |
381 | public class Arrays : MonoBehaviour
382 | {
383 | public GameObject[] players;
384 |
385 | void Start ()
386 | {
387 | players = GameObject.FindGameObjectsWithTag("Player");
388 |
389 | for(int i = 0; i < players.Length; i++)
390 | {
391 | Debug.Log("Player Number "+i+" is named "+players[i].name);
392 | }
393 | }
394 | }
395 | ```
396 | Invoke
399 |
400 | ```csharp
401 | using UnityEngine;
402 | using System.Collections;
403 |
404 | public class InvokeScript : MonoBehaviour
405 | {
406 | public GameObject target;
407 |
408 | void Start()
409 | {
410 | Invoke (nameof(SpawnObject), 2);
411 | // Repeating
412 | InvokeRepeating(nameof(SpawnObject), 2, 1);
413 | // TODO: Use UniRx/Observables instead :)
414 | }
415 |
416 | void SpawnObject()
417 | {
418 | float x = Random.Range(-2.0f, 2.0f);
419 | float z = Random.Range(-2.0f, 2.0f);
420 | Instantiate(target, new Vector3(x, 2, z), Quaternion.identity);
421 | }
422 | }
423 | ```
424 | Enumerations
427 |
428 | ```csharp
429 | using UnityEngine;
430 | using System.Collections;
431 |
432 | public class EnumScript : MonoBehaviour
433 | {
434 | enum Direction {North, East, South, West};
435 |
436 | void Start ()
437 | {
438 | Direction myDirection;
439 |
440 | myDirection = Direction.North;
441 | }
442 |
443 | Direction ReverseDirection (Direction dir)
444 | {
445 | if(dir == Direction.North)
446 | dir = Direction.South;
447 | else if(dir == Direction.South)
448 | dir = Direction.North;
449 | else if(dir == Direction.East)
450 | dir = Direction.West;
451 | else if(dir == Direction.West)
452 | dir = Direction.East;
453 |
454 | return dir;
455 | }
456 | }
457 | ```
458 |
13 |
14 |
15 | Credits to https://codepen.io/boldfacedesign/pen/EoGgD 16 |
17 | 18 | 19 | ## Adventure 20 | - [San Andreas Unity](https://github.com/GTA-ASM/SanAndreasUnity) - An open source reimplementation of GTA San Andreas game engine in Unity. 21 | 22 | ## Puzzle 23 | - [Nodulus](https://github.com/Hyperparticle/nodulus) - A puzzle game with a clever twist. Based on the mathematical theory behind plank puzzles, consists of a grid of cubes and rods which can be rotated with a swipe. 24 | - [Angry Birds style game](https://github.com/dgkanatsios/AngryBirdsStyleGame) - An effort to replicate a level and relevant mechanisms of Rovio's famous Angry Birds game, built in Unity game engine. Source code is provided for educational purposes. 25 | - [Match-3 game](https://github.com/dgkanatsios/MatchThreeGame) - A match-3 game in Unity (like Candy Crush and Bejeweled). 26 | 27 | ## Role 28 | - [Darkest Dungeon](https://github.com/Reinisch/Darkest-Dungeon-Unity) - Darkest Dungeon port in Unity. Almost completely identical to the original. 29 | 30 | ## RPG 31 | - [Hogwarts](https://github.com/OpenHogwarts/hogwarts) - A Hogwarts (Harry Potter) open sandbox game made in Unity. 32 | 33 | ## Runner 34 | - [InfiniteRunner3D](https://github.com/dgkanatsios/InfiniteRunner3D) - Creating an infinite 3D runner game in Unity. 35 | 36 | ## Sandbox 37 | - [CubeWorld](https://github.com/federicodangelo/CubeWorld) - Minecraft like game made in Unity. 38 | 39 | ## Shooter 40 | - [Multiplayer-FPS](https://github.com/Armour/Multiplayer-FPS) - A multiplayer first-person shooter game based on Unity3D. Different types of input devices are supported, including Kinect, Xbox controllers, Leap motion, and VR Glasses. 41 | 42 | ## Strategy 43 | - [Starcraft Unity3D](https://github.com/coconauts/startcraft-unity3d) - A recreation of the classic Starcraft game by Blizzard, on Unity3D. 44 | 45 | --- 46 | 47 |
48 |
49 |