Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 9111c27

Browse filesBrowse files
committed
Rust survey results (draft)
A few changes still pending.
1 parent 41a1b4d commit 9111c27
Copy full SHA for 9111c27

File tree

3 files changed

+293
-0
lines changed
Filter options

3 files changed

+293
-0
lines changed
Loading

‎content/posts/survey-01/index.md

Copy file name to clipboard
+293Lines changed: 293 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,293 @@
1+
+++
2+
title = "Rust Game Development - Ecosystem Survey"
3+
draft = true
4+
+++
5+
6+
In August last year, we conducted a survey for the Rust gamedev ecosystem. After an unfortunate delay, we can finally present the results. We received a whopping 403 responses!
7+
8+
## Hobbyist or developer?
9+
10+
![Respondents identifying as professional or hobbyist](hobbyist-or-professional.png)
11+
12+
## Are you using Rust for gamedev?
13+
![Respondents using Rust in game development](using-rust.png)
14+
15+
For the free-form answers that follow, a basic sentiment analysis was used to distill 400 replies into digestible form. The "III" signs underneath a heading indicate *roughly* the number of times that topic came up. Think of it as the **signal strength** of a given topic.
16+
17+
## What about Rust as a language and ecosystem presents the biggest NEGATIVES for you as a game developer right now?
18+
19+
Priorities for professionals and hobbyists are largely the same. The biggest differences were:
20+
21+
- Hobbyists call for ecosystem maturity 2x more than anything else.
22+
23+
- Hobbyists care much more about mobile/web support
24+
25+
- Professionals care much more about console support
26+
27+
- Professionals care much more about C++ interop
28+
29+
30+
### Ecosystem maturity
31+
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
32+
33+
* From playing in the space I know it's possible to make games using Rust. However in the ecosystem my biggest negatives is the [lack of] case studies and demonstrations of it working.
34+
35+
* Rust is still a risky choice, compared to C++.
36+
37+
* Still feels like a new community. There is always risk associated with that - does the language take a big swing in direction - does support drop off. I'm encouraged by the support for low level (embedded / OS ) development, which hopefully means the core feature set remains robust.
38+
39+
* Many unfinished, unmaintained crates. Lots of churn.
40+
41+
* A lot of common needs are not yet available 'out of the box'.
42+
43+
### Iteration times
44+
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
45+
46+
* Compile time, no runtime reflection, updating deep dependency in the tree is hard.
47+
48+
* Iteration time is I think too big, due to compilation time, [lack of] hot-reloading tooling, etc.
49+
50+
* Iteration time (especially while prototyping). This includes both compile time but also sorting out lifetimes when I know I'll be rewriting something very soon anyway, this "frontloading" the effort of having the borrow checker run at compile time is useful for most tasks but when I want to try something quickly it can be a draining experience, in this regard GC'd languages have an advantage imo.
51+
52+
* Prototyping seems not as easy in Rust due to "fighting the compiler"
53+
54+
### Documentation
55+
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
56+
57+
* Not enough documentation to get past beginner stage
58+
59+
* Lacking examples for gamedev libs.
60+
61+
* Documentation is usually either high level or examples but rarely both. Very few real world examples to draw from.
62+
63+
### Lack of full-featured engines
64+
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
65+
66+
* Lack of a data-and-script based engine like Unreal Engine or Unity means even small projects end up feeling very bring-your-own-engine.
67+
68+
* Missing graphical editors, frictionless prototyping of games
69+
70+
71+
### Rust learning curve / onboarding to a niche language
72+
IIIIIIIIIIIIIIIIIIIIIIIIIIIII
73+
74+
* The language has a higher upfront cognitive load than any other mainstream language I know of, mostly due to the borrow checker. It's very hard to hack through stuff and get away with it, which makes it a particularly hard sell for game prototypes.
75+
76+
* I know that it is a less common language to use so as a company I will have to have my staff learn Rust before they can start.
77+
78+
* Rust could be tricky to hire for, and hiring someone who doesn't know Rust to work in Rust will come with a ramp-up period.
79+
80+
### IDE/RLS story
81+
IIIIIIIIIIIIIIIIIIIIIIIIIIII
82+
83+
Tooling around IDE is limited compared to Visual Studio with C++ or C#.´
84+
85+
* Definitely lack of proper IDE (like out of the box Cargo integration and working debugger - yeah, I tested Visual Studio Code and it's very slow, suggestions are not great, fastest way to run, check and build is to use terminal - not IDE) - I would say that something like QT Creator or Visual Studio would be great
86+
87+
* Regarding debugging, the industry standard is (or that I'm aware of) Visual Studio, for its very good IDE and tools, also, a lot of users are very used to that kind of tools and looks like Rust is missing some of them.
88+
89+
* rust-analyzer is still very incomplete, but it's the only thing that works for me
90+
91+
* Poor IDE and debugging support in IDE. Mainly visual studio.
92+
93+
* Can't debug it properly, hashmap (for example) is absolutely not debuggable. Not sure how it works inside (instead of C++).
94+
95+
- debug mode way too slow, often need to set opt-level=1 or 2 for dev profile
96+
97+
### GUI tooling
98+
IIIIIIIIIIIIIIIIIIIIIII
99+
100+
* As a tools developer, a major negative point is the current absence of a reliable GUI framework (we use WPF + C# with Visual Studio).
101+
102+
### Game consoles
103+
IIIIIIIIIIIII
104+
105+
* No first party support for console development makes Rust a tough sell for a lot of professional work.
106+
107+
* Rust is not officially supported on console by Sony or Microsoft.
108+
109+
* Rust can't be seriously considered yet, because it does not have support from the PS4 SDK. Although there are other considerations (studio culture, integration with existing systems, etc.), official support from Sony is a requirement before Rust could be used in a PS4 game.
110+
111+
### C++ interop
112+
IIIIIII
113+
114+
Our code, and any middleware/engine that we might license, is in C++. Using Rust and C++ together is painful, and rewriting the existing tech to be purely Rust would be very expensive.
115+
116+
Testing and too much things linked to C.
117+
118+
* Also, no professional game engine (UE4, Unity) integrates with Rust yet.
119+
120+
* Unknown compatibility
121+
122+
- Lack of a straightforward path to make rust work easily with C++ in both directions. The only trustable way I see now is through manual C wrappers, which is error-prone and time consuming.
123+
124+
### Web/mobile support
125+
IIIIIIIIIIIIII
126+
127+
### Allocators
128+
IIIIIIIIII
129+
130+
131+
# What about Rust as a language and ecosystem presents the biggest POSITIVES for you as a game developer right now?
132+
133+
### Safety
134+
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
135+
* Strong type system allows for easily enforcing some performance and safety best practices
136+
* Multithreading safety
137+
* Elimination of data races greatly improves reliability for multithreaded code.
138+
* Safe concurrency
139+
140+
### Performance
141+
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
142+
* Great performance and compile time verifications
143+
* Performance and reliability
144+
* Parallelism
145+
146+
### Community
147+
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
148+
* the ecosystem is full of passionate and smart people who take quality software very seriously
149+
* a really welcoming community with great goals and courage to pursue them
150+
* Collective community effort to "build the right thing" and "build the thing right"
151+
152+
### Cargo
153+
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
154+
* being able to pull down libraries piecemeal and have them build with your stuff immediately is great
155+
156+
### Ecosystem
157+
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
158+
* A mature Rust ecosystem will (hopefully!) have a lower bar for entry than a mature C++ ecosystem, without giving up performance.
159+
160+
### WASM (web) support
161+
IIIIIIIIIIIIIIIIIIII
162+
163+
### No garbage collection
164+
IIIIIIII
165+
166+
### ECS; data-driven; data-oriented
167+
IIIIIIII
168+
169+
### Cross platform
170+
IIIII
171+
172+
### C interop
173+
III
174+
175+
> The language has a higher upfront cognitive load than any other mainstream language. Which means that on an established, bigger project (maybe with a team behind) the productivity is amazing compared to C++! It's much easier to express strong & safe interfaces that make bugs just harder to introduce.
176+
It really shines in network code that needs to be 100% safe and resist bad actors! My current game server code has 0 unwraps/panics/expects and so I just *know* it can't crash... I wish I could have that feeling in C++.
177+
C++ on the contrary makes it easy to whip up something which then has a 20% crash rate and tanks perf and takes 2 weeks to hammer into shape, and after those 2 weeks it looks like Rust code anyway.
178+
Unfortunately, knowing the management culture in the gamedev industry, Rust has an extremely hard road in front of it due to this. In my experience gamedev is plagued by extreme short term (like, 1 month) reasoning resulting in crunches and awful technical tradeoffs. Rust made many choices that delay that fateful "demo day with the execs" because it forces you to do things right. But very few can express why this is valuable up the chain and be listened to.
179+
180+
181+
> I love Rust!
182+
> • it's perfect for "API-minded" systems programmers
183+
> • as more production users come, things will get very good very quickly
184+
> • being cross-platform is easier than ever
185+
> • refactoring is very fun
186+
> • proc macros are cool as heck
187+
> • serde is insanely useful
188+
> • seriously there's a ton of awesome crates
189+
> • I know we'll get there together!
190+
191+
> We are especially interested in data-driven games for procedural generation and AI. Rust seems a great fit for this computationally intensive work.
192+
193+
194+
> Since most game developers are tinkerers more than engineers or scientists, the whole industry is plagued with bad code quality, lack of architecture and bad code design. Undefined behavior, nullptr exceptions, use after freed, multithreading issues and so on are recurrent problems. Rust biggest positive is really the fact that it addresses all that without needing to change the people behind the games. That's why I believe in it so much :).
195+
> Also worth noting that the module system and crates are really important nowadays because monolithic codebases of millions of lines of code is really a hell to work into.
196+
197+
198+
## What do you think should be the game-dev working group's priorities for the next 3-6 months?
199+
200+
### Documentation
201+
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
202+
203+
- better onboarding to rust gamedev
204+
- Better explanation of best practices
205+
- How to get started
206+
- Rust for seasoned gamedevs
207+
- What works *right now*?
208+
- Example games
209+
- Standard practices for common gamedev problems
210+
- How to do windowing
211+
- How to do graphics
212+
- How to do ECS
213+
- More documentation for foundational libraries
214+
215+
### Cross-platform support
216+
IIIIIIIIIIIIIIIIIIIIIiiIIIiIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
217+
218+
- Lobby for Rust adoption on next-gen consoles.
219+
- Clearer information about console support.
220+
- Start an entity capable of getting and maintain console NDAs to keep official rust builds made for console support. It’s a huge pain, but other open source projects do it, and it would be awesome for the community.
221+
- Wasm/web support (heavier from hobbyists)
222+
- Paint a clearer picture of what the path to gaming consoles looks like, within the confines of what those proprietary SDKs and APIs allow.
223+
- Mobile support
224+
- Easier packaging
225+
- Cross-compiling
226+
- XR (AR/VR)
227+
228+
### Ecosystem promotion & coordination
229+
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIiIIIIIIIIIIIIIII
230+
231+
- Develop contacts within the industry so that the WG can be a liaison between industry and OSS developers. By inviting and involving industry, the ecosystem can grow and potentially receive support (in the form of PRs, open sourcing existing tools, or financial support for OSS developers.)
232+
- Encourage & facilitate collaboration on existing tools.
233+
- Library “blessings”
234+
- more things like this survey
235+
- Ecosystem mapping
236+
- Outreach / evangelising
237+
- Game jams
238+
- Better insight into WG’s current agenda
239+
- Come up with ways to unblock foundational projects if they get stuck
240+
- Identify in-progress issues, and propose new issues, for the Rust language, that are relevant to game development. (For example, debug Rust is very slow, so we need good ways to control what is and isn't optimized.)
241+
- Seek opportunities to address cross-cutting concerns where possible. The recent investigation into raw-window-handle and evaluation of if we can/should converge on a math library are both good examples.
242+
243+
### First-grade game engine/framework
244+
IIIIiiiiIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
245+
246+
- Simple 2D game engine
247+
- Basic editor workflow
248+
- An SDL-like
249+
- A Unity/Unreal competitor
250+
251+
### Graphics libraries
252+
IIIiiIIIIIIIIIIiIIIIIIIiIiIIIIIII
253+
254+
- Improve accessibility of graphics programming
255+
256+
### Foundational libraries
257+
IIiIIIIIIIIIIIIIIIiIIIIIIII
258+
259+
- UI libraries
260+
- Windowing
261+
- Audio
262+
- Graphics
263+
- Collection of “Standard crates” with some form of WG support
264+
- Push for stabilisation
265+
266+
### Faster iteration times
267+
IIIIIIIIIIIIIIIII
268+
269+
- Hot code reloading
270+
- Scripting
271+
- Faster compile times
272+
- More libraries like Processing
273+
274+
275+
### Integration with existing toolchains
276+
IIIIIIIIIIIIII
277+
278+
- C/C++
279+
- Xcode, Android studio, Visual studio, Blender
280+
- Unity/Unreal/Godot
281+
282+
### Custom allocation story
283+
IIIIIIIIII
284+
285+
### Debugging support and IDE integration
286+
IIIII
287+
288+
### Interoperability between libraries
289+
IIIII
290+
291+
## Can you name some libraries you are thankful for or take special interest in?
292+
293+
[graphic pending]
80 KB
Loading

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.