11 ms·
I had a similar thought process (but luckily without spending time implementing something). I want to write a game. I thought, "None of the current languages
by mikekchar 8y ago
I had a similar thought process (but luckily without spending time implementing something). I want to write a game. I thought, "None of the current languages works quite the way I want. I know! I'll write a language specifically for my game and just keep implementing the bits I need".
Then I thought, "Wait. If I do that, I'll spend 90% of my time writing a language and 10% of my time writing a game".
So I was saved. Except I still haven't even started writing the game, so I suppose it's completely moot :-D
- foota 8y agoI hit a similar roadblock for a long time, always spending time writing low level graphics utilities (which I do rather enjoy) but never getting around to writing a game. If you find yourself in a similar situation and want to get around it I would suggest trying unity, which I was hesitant to do since: 1. It felt like giving up and cheating, and 2. I don't like how unity interfaces with the developer, since I mostly wanted to implement games without using the world editor that seems to be the focus of unity. But I've enjoyed using it so far and would suggest giving it a shot.
- pixelbash 8y agoRe the second point did you manage to get around this? Played with it a bit and it felt almost like flash back in the day where you could eschew the timeline and do everything programmatically. In the end ran into a problem where I wanted to move the universe around the player and couldn’t get the particle engine to cope..
- tlarkworthy 8y agoYou can do anything programmatically in unity. I think professionals tend towards this. You use the world editor only for artistic expression, the spatial layout and tuning etc. where previewing layout really saves time. For very specific effects like universe turning, you have to do a lot of code work in a niche area, but it's still quicker than building a particle engine from scratch. Sometimes you can cheat the effect in shaders or camera tranform manipulation. Or skip the effect altogether if the volume of custom code is not worth it and you are prioritizing shipping. Ask yourself, does it make or break your game?
- foota 8y agoWhat in the world is universe turning?
- tlarkworthy 8y agoThe OP roadblock (turning the particle system).
- scraft 8y agoI started our my games development career as a low level programmer and moved to a lead programmer in the technology department and then founded a games studio where we wrote our own engine and released several games. My role meant I had to make the correct business decisions using my technological knowledge and as much as writing engines and technology ran through my blood, the right answer was to switch to Unity. The man cost of constantly writing all the technology we need and then maintain it was too great compared to the ever diminishing wins we got from it. One scary part of this decision was then hiring Unity programmers and initially having these new hires knowing more about Unity than I did. I needed to make calls about what is possible, time frames, performance, meeting client requirements etc without being an expert of the most important part of our development process. Luckily we made the right hires and it didn't take so long until I had been converted to the Unity mindset. Initially I would always be saying "oh well I would normally tackle this in this way" and wanted to coerce Unity to work in a familiar way. But overtime this disappeared and I became increasingly interested in working out the best way to achieve things in the "Unity way" which ultimately returns much greater dividends. The first game we released, called Bloody Zombies came out last year on Steam, Oculus, Xbox One, PS4 and Nintendo Switch. It can be played in VR (on supporting platforms) and non VR. It is multiplayer, both in the sense of multiple people on one machine (you can do things like 1 VR player and 3 TV players or 4 TV players) but also online multiplayer (where you can do one player per machine or any combinations say one tv player on one machine playing with 1 VR players and 2 tv players on another machine). VR meant we had to maintain a constant frame rate (60 or 90 depending on platforms). We used stereoscopic rendering, offloaded graphics work to a special job system. We used custom shaders (the game is like a graphical novel so outline shaded characters) we have spherical fog, lightmaps, FXAA, colour post processing etc. Online multiplayer meant a packet system, ability to establish connections, matchmake, a system for making parts of the game world communicate, handling so many error cases, etc. For variety of platforms meant lots of variety on the rendering, controller input etc. For Switch it meant the ability to play on Switches close to each other on a different protocol to online multiplayer. I shudder to think how much time and effort this would have been without Unity. I suspect we would have needed several new hires working on platform specific tech, full time network engineers, at least one full time graphics dev, at least one full time audio dev, one full time physics dev, the list goes on. Instead we had 3 programmers (which includes me where my time was heavily comprised being a founder/MD/Tech Director/coffee maker) and whilst the other programmers were very good they had both only graduated a few years prior. Did Unity solve everything? Absolutely not. We hit loads of huge problems with Unity. Without help of their engineers some problems we would never have been able to solve. We helped Unity fix lots of issues at their end. We found issues that could have been solved trivially without Unity. We felt the strain of waiting days for an answer to a mission critical Unity issue. But in the grand scheme, the pain was less than 10% of what we would have experienced doing it with our own engine. My big worry was not doing "tech" anymore, but that simply isn't true. But instead of having to write loads of architecture and code to even be able to write the "real" tech, instead you can write the more interesting stuff. For shaders you just write the shaders, not the system for passing in shader constants and setting up vertex streams. Post effects is similar. Coming from a strong engine/Tech background has been massively helpful, whilst unity trained hires are amazing it has been really useful for our studio for me to be able to get into the lower level to add feature, fix stuff, debug stuff, etc.
- foota 8y agoPerhaps I'm missing something here, but you should just need to move the player in the opposite direction of the world's desired movement? No game system I'm aware does it the other way around, as it requires changing all the other models transforms. But yes, I am dealing with the interface, primarily by ignoring it. I'm still trying to get down the right way to organize my code, but it's making sense.
- gmueckl 8y agoOnce your game world size crosses a specific threshold, you need to move the world instead of the player because numerical accuracy starts to become troublesome (most engine code runs with floats, which gives about 6 decimal digits of precision). The first engine that I am aware of that did that was that of Dungeon Siege. There's an excellent post mortem around about the challenges of this approach.
- taneq 8y agoLanguage Syndrome sounds like Engine Syndrome in hard mode. You want to write a game, so you start working on a game engine, only to realise that a game engine is a never-ending project and you'll never have spare energy to actually write the game. I fell prey to this a couple of times back in the day.
- rzzzt 8y agoBoth are examples of the push-down goal stack in action: http://wiki.c2.com/?PushDownGoalStack http://wiki.c2.com/?PushDownGoalStack
- WalterBright 8y agoOne of my motivations for writing a compiler was to get my game Empire to run faster. Wound up with a career writing compilers, not games.
- NegativeLatency 8y agoFor anyone else who was wondering https://en.wikipedia.org/wiki/Walter_Bright https://en.wikipedia.org/wiki/Walter_Bright
- eatbitseveryday 8y agoWhy not just link to the homepage itself, instead of wikipedia... ? Has much more information. http://www.walterbright.com/ http://www.walterbright.com/
- saagarjha 8y agoMight be considered as a less biased list of achievements (not that I'm saying that Walter Bright's list on his website is biased).
- WalterBright 8y agoOne's name is one's brand, and where practical I recommend that people buy yourname.com and own your brand, rather than relying on the vagaries of what others may say about you.
- enyone 8y agoburn
- saagarjha 8y agoSure, it's fine to own your own brand–but personally (being blessed to not have a brand image), I tend to put more weight on what other people have to say about someone than what they say about themselves. Though, of course, it's often interesting to see what people tend to put on their personal pages; often what they're proud about differs significantly from what they're famous about.
- Bekwnn 8y agoGames are still in need of a better language. I have some skepticism and hope for Jai. I really wish D as better C worked better in that realm, but it's missing a few crucial things. Rust asserts too much control over memory. I'm all ears for anything that's somewhere between C and C++ as an alternative to write games in. Most new languages just don't get the things right that C++ did, which is why despite it having a ton of deficiencies when it comes to game development, it's still what everyone in AAA is using. Companies in AAA spend so much money on software to even just somewhat improve places where C++ has gaping flaws. A better language should have been developed by now and I don't even want to think about how much money C++ has cost the industry as a whole, even just purely on iteration speed.
- redahs 8y agoUse regular C, but write the code in literate programming files which can be rendered into a portable design document describing the implementation and interaction of every subsystem in the codebase. 'Standard written English' is the best language available for modeling abstractions.
- tdsamardzhiev 8y agoDo you happen to know any open-source games that do this?
- AnIdiotOnTheNet 8y agoI was almost like OP for a while. Working on game, fed up with existing languages (even C), wanted a better C. I was excited about Jai, but as time goes on I'm finding it looks less and less what I want from a language. Seriously considered making my own. Then I started working with Zig[0]. It's about 90% the language I want and even though it's still immature and the syntax, std lib, and semantics are in flux, I still find the quality of life improvement so huge that all my current projects are in Zig. Zig is a better C to Jai's better C++, I think. It's a small language, it favors simplicity and explicitness, it has entirely manual memory management to the point that there isn't even a default allocator (we pass one in to anything that requires one). It even lets you import C headers directly to interface with C libraries. [0] https://ziglang.org/ https://ziglang.org/ (skip the "stable" 2.0 download, it's way out of date from master)
- mamcx 8y agoI'm in the same, but get the opposite idea. I procastinate in build the language I want (a relational engine, not a DB, a language) always thinking "Is better to let that to pros". But more time I do the same things over and over, more I'm convinved I could abstract my main tasks (around data manipulation) in a simple language: https://www.reddit.com/r/rust/comments/8ygbvy/state_of_rust_for_iosandroid_on_2018/ https://www.reddit.com/r/rust/comments/8ygbvy/state_of_rust_... But the idiot of me think "and the let's use Rust... how hard it can be?". And now.. is HARD! Sadly, Swift was ruled out: https://www.reddit.com/r/swift/comments/8zb9y1/state_of_swift_for_androidlinuxwindows_on_2018/ https://www.reddit.com/r/swift/comments/8zb9y1/state_of_swif... and don't wanna do C/C++. I expect the language to be a glorified DSL that is just about data, parsing, loading data, moving data, converting from this to that and a way better (I hope!) than ORM for interfacing to RDBMS.
- jrumbut 8y agoThis isn't my area per se but have you considered Lisp/Haskell (even Ruby) or one of the other languages with good metaprogramming/DSL creation facilities? Or perhaps making a small extension to one of the above, I know many languages have the ability to be extended through modules added at compile (meaning when you compile the interpreter/compiler/runtime itself, not the program) time, or used as a target for a preprocessor. That makes it so it's at least a little easier to get a userbase going, maybe some existing libraries can work with your language. If that's not possible, I'd be curious to learn what makes it not feasible. Fresh approaches to data processing are really desirable right now, since so many of us are working with data that is different from what language designers intended.
- mamcx 8y ago>If that's not possible, I'd be curious to learn what makes it not feasible. Fresh approaches to data processing are really desirable right now, since so many of us are working with data that is different from what language designers intended. I wish to use instead swift, that hit a sweet spot. Using other lang (like python, that I loved!) make hard to target iOS/Android. This is the main crux of mine. This mean that I need to re-code a lot of stuff across platforms and targets, because nothing is good enough. I also use xamarin/F# and the integration with android/ios is not as good as I imagine (ie: xamarin.forms sucks. And is damm hard to integrate yourself anything (ie: ios/android libraries) outside it). I also try with nim but is too crude and lack a lot of libraries I will need. I'm also thinking on using pascal, that I also like much, so now is just looking how good could be the use of rust...
- skadamat 8y agoJon Blow's been working on a programming languages for games (intro / philosophy here): https://www.youtube.com/watch?v=TH9VCN6UkyQ https://www.youtube.com/watch?v=TH9VCN6UkyQ Series of videos here - https://www.youtube.com/user/jblow888/videos https://www.youtube.com/user/jblow888/videos - I don't program games but it looks super interesting
- ckok 8y agoI did end up going the way of writing that compiler and never writing the thing I wanted to write the compiler for, even forgot what it was. But it was and is a good experience, the last 13 years of writing a compiler. Especially if you like solving problems with no or few searchable solutions.
- rqs 8y ago10% for writing the game? you maybe too optimistic :D I found myself having the same problem, luckily I don't know how to write a language. I'm currently working on a part-time project in Go, it involve a HTTP service. As you may already knew, there is a built-in HTTP server that came with Go, so I COULD just took it and go ahead directly start to implement my service logic. But hell no, it's too slow. So instead, I made my own HTTP/1.1 server, which is bit faster than Go's. It was pretty fun to write that server indeed, but I don't think it's worth the trouble. In fact, I really really hope somebody stopped me when I was creating that `http.go` file. Now, I'm wandering around, thinking the `html/template` is too slow ...