-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgoApps.html
116 lines (107 loc) · 3.5 KB
/
goApps.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Language" content="en-us" />
<style type="text/css" media="all">@import "basic.css";</style>
</head>
<body class="main">
<h2>
Go Library Support for Apps and Games.
</h2>
<p>
The library support to be able to ship applications and games written in Go
is not at the same level as that enjoyed by back-end web development.
My current work as a game developer, and aspiring application creator depends on
<p>
<ul>
<li>packages supporting game development.</li>
<li>packages supporting a cross-platform GUI.</li>
</ul>
<p>
These are library issues, nicely separate from the Go language.
My experience of using Go for game development is that the Go language
is great - no changes necessary.
</p>
<h3>
Writing Games in Go.
</h3>
<p>
(1) What I wanted to do:
</p>
<div class="indent">
I wanted to write and ship games using Go.
</div>
<p>
(2) What I actually did:
</p>
<div class="indent">
<p>
I wrote a game engine using Go (<a href="https://github.com/gazed/vu">https://github.com/gazed/vu</a>)
which allows me to create games using Go. This involved:
</p>
<ul>
<li>writing device layer go bindings for macOS, iOS, and windows to
get access to the display and user input.</li>
<li>writing OpenGL, and OpenAL go bindings.</li>
<li>writing a vector, matrix, and quaternion math library in Go.</li>
<li>porting some of Bullet Physics to Go.</li>
<li>writing a basic asset import library.</li>
<li>writing the game engine layer.</li>
</ul>
Then I wrote games using Go, eg: <a href="http://jewelofkings.com">http://jewelofkings.com</a>.
<ul>
<li>In order to publish I wrote a packaging script (python this time) to be able to
ship to the macOS app store, the iOS store, and windows 10 app store.
</li>
</ul>
</p>
</div>
<p>
(3) Why that wasn't great.
<div class="indent">
</p>
For each of the above bulleted items I was hoping that there was already a
package available. A package that had been produced, reviewed and used by
many developers. My preference is to not depend on packages
created by one or two developers - including those I write myself.
My packages haven't been reviewed by anyone else and, unlike
the go library packages, there can be no expectation of ongoing support.
</p>
</div>
<h3>
Writing Applications in Go.
</h3>
<p>
(1) What I want to do:
</p>
<div class="indent">
<p>
I want to use Go to write and ship desktop applications such as tools
to help with game development like <a href="http://www.angelcode.com/products/bmfont">http://www.angelcode.com/products/bmfont</a>
and eventually a game level editor.
</p>
</div>
<p>
(2,3) What I actually did, and why that wasn't great.
</p>
<div class="indent">
<p>
This hasn't happened yet because it relies on an underlying cross-platform GUI.
I've looked at a few strategies and attempted a few implementations but failed
at finding a Go-based approach that I can do by myself in a reasonable time frame.
I'm looking for something similar to other cross-platform examples
available using other languages:
</p>
<ul>
<li>Java: AWT, SWT, Swing.
</li>
<li>C/C++: Qt, GTK+, wxWidgets.
</li>
<li>Javascript, HTML5, CSS: Chromium Embeded Framework.
</li>
<li>Custom OpenGL based UI like Blender.
</li>
</ul>
</div>
</body>
</html>