{"id":13499878,"url":"https://github.com/vova616/GarageEngine","last_synced_at":"2025-03-29T05:32:40.103Z","repository":{"id":4206653,"uuid":"5326767","full_name":"vova616/GarageEngine","owner":"vova616","description":"Game engine written in Go (golang).","archived":false,"fork":false,"pushed_at":"2019-08-04T05:33:16.000Z","size":416,"stargazers_count":320,"open_issues_count":5,"forks_count":33,"subscribers_count":27,"default_branch":"master","last_synced_at":"2024-02-15T10:37:56.555Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vova616.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-08-07T10:55:34.000Z","updated_at":"2023-10-03T03:50:32.000Z","dependencies_parsed_at":"2022-09-07T13:41:38.723Z","dependency_job_id":null,"html_url":"https://github.com/vova616/GarageEngine","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vova616%2FGarageEngine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vova616%2FGarageEngine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vova616%2FGarageEngine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vova616%2FGarageEngine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vova616","download_url":"https://codeload.github.com/vova616/GarageEngine/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222465696,"owners_count":16989060,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T22:00:45.347Z","updated_at":"2024-10-31T18:31:19.750Z","avatar_url":"https://github.com/vova616.png","language":"Go","funding_links":[],"categories":["Game Development","Go","遊戲開發","游戏开发","\u003cspan id=\"游戏开发-game-development\"\u003e游戏开发 Game Development\u003c/span\u003e"],"sub_categories":["Advanced Console UIs","高級控制台界面","Middlewares","高级控制台界面","\u003cspan id=\"高级控制台用户界面-advanced-console-uis\"\u003e高级控制台用户界面 Advanced Console UIs\u003c/span\u003e"],"readme":"## GarageEngine\nThis is a 2d game engine written in Go working on OpenGL.\nIts an Entity/Component based engine and right now contains lots of features such as: Font,Sprites,Texture packing,Physics,Depth layers,Scenes and more.\nIt feels like Unity3d and share the same names: Scene,Coroutines,Components,Transform,GameObjects etc...\n\nThis is an educational project, I'm learning as I go, I cannot promise backwards compatibility at this point.\u003cbr/\u003e\nthe name will be probably changed.\u003cbr/\u003e \n\t\n## Install:\nYou need to download glfw\u0026glew libraries.\n\nWindows:\nUse mingw and compile glew.\n\nLinux:\n\u003cbr/\u003e\nsudo apt-get update \n\u003cbr/\u003e\nsudo apt-get install build-essential binutils-gold freeglut3 freeglut3-dev libglew-dev libglfw-dev libxrandr2 libxrandr-dev libglew libglew1.8  \n\u003cbr/\u003e\ngo get github.com/vova616/GarageEngine\t\n\n## To-Do list\nClean project:\u003cbr/\u003e\nName changing Engine -\u003e engine etc...\u003cbr/\u003e\nFunction changing -\u003e SetWorldPositionf -\u003e SetWorldPosition2d etc...\u003cbr\u003e\n\u003cbr/\u003e\nAtlas,Font - Clean whatever we can.\u003cbr/\u003e\nMaterial - Think of design that does not require lots of work when creating custom shaders.\u003cbr/\u003e\nPhysics - Think of a better design for arbiter and clean \u0026 polish stuff.\u003cbr/\u003e\nScene - Get scene by name.\u003cbr/\u003e\nTree Behaviours - Clean \u0026 polish \u0026 new features.\u003cbr/\u003e\nCamera - support multiple cameras.\u003cbr/\u003e\nRendering - support auto-batching.\u003cbr/\u003e\nCoroutine - try to fix the bug that you cannot access to textures in Coroutines.\u003cbr/\u003e\nReadme - explain Tree Behaviours.\u003cbr/\u003e\nLearn from - https://github.com/runningwild/haunts .\u003cbr/\u003e\nComments - lacks tons of it.\u003cbr/\u003e\n\n\n\n## Dependencies\ngithub.com/go-gl/gl\u003cbr/\u003e\ngithub.com/go-gl/glfw\u003cbr/\u003e\ngithub.com/vova616/chipmunk\u003cbr/\u003e\n\"github.com/vova616/freetype-go/freetype\"\n\n## Coroutines(they might be deprecated):\nThe useage is same as unity coroutines.\u003cbr/\u003e\nUse Behaviour Trees, its better and faster.\n\n## Behaviour Trees:\nExample in SpaceCookies/game/EnemeyAI.go\n\n## SpaceCookies\nMini game to test the engine, it will host server on port 123 then you connect to it.\nMake sure your executable file is in the same folder with the data folder.\n\n## Videos:\nhttp://www.youtube.com/watch?v=iMMbf6SRb9Q\u003cbr/\u003e\nhttp://www.youtube.com/watch?v=BMRlY9dFVLg\n\t\n## Coroutines Example:\n\tfunc (sp *PlayerController) Start() {\n\t\tas := StartCoroutine(func() { sp.AutoShoot() })\n\t\t\n\t\tStartCoroutine(func() {\n\t\t\tcr.Sleep(3)\n\t\t\tcr.YieldCoroutine(as) //wait for as to finish\n\t\t\tfor i := 0; i \u003c 10; i++ {\n\t\t\t\tcr.Skip()\n\t\t\t\tcr.Skip()\n\t\t\t\tcr.Skip()\n\t\t\t\tsp.Shoot()\n\t\t\t}\n\t\t})\n\t}\n\n\tfunc (sp *PlayerController) AutoShoot() {\n\t\tfor i := 0; i \u003c 3; i++ {\n\t\t\tcr.Sleep(3)\n\t\t\tsp.Shoot()\n\t\t}\n\t}\n\n\tfunc (sp *PlayerController) AutoShoot2() {\n\t\tfor i := 0; i \u003c 3; i++ {\n\t\t\tfor i:=0;i\u003c3*60;i++ {\n\t\t\t\tcr.Skip() //Frame skip\n\t\t\t}\n\t\t\tsp.Shoot()\n\t\t}\n\t}\n\n\tfunc (sp *PlayerController) AutoShoot3() {\n\t\tfor i := 0; i \u003c 3; i++ {\n\t\t\tdone := make(chan bool)\n\t\t\tgo func() {\n\t\t\t\t\u003c-time.After(time.Second * 3)\n\t\t\t\tdone \u003c- true\n\t\t\t}() \n\t\t\tcr.YieldUntil(done)\n\t\t\tsp.Shoot()\n\t\t}\n\t} \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvova616%2FGarageEngine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvova616%2FGarageEngine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvova616%2FGarageEngine/lists"}