I'm stuck with Julia and have nowhere to run to! (Maybe I discovered Julia for the wrong reason.)

Sorry for a long rant, but maybe I discovered Julia for all the wrong reasons.

For short problem solving, solving problems with short (something like 100 LOCS), my self-assessment is that I am pretty much a genius. I’ve attended several classes where I casually aced exams that my classmates, themselves some of the top students in my country, struggled with.

However, my glaring weakness is that when I need to manage a large system or solution, I struggle a lot. Go above 500 LOCS (And it already took me years of programming to reach this 500 LOCs capacity), and I already struggle immensely. Maybe it’s organization, but maybe it’s also a problem of motivation, or maybe it’s a mixed combination, like maybe that I like to think through everything in my mind, and when the code has reached the point where you can’t plan in your mind and need to prototype it out in code, I struggle with it.

Now, what did I do? I stacked tricks after tricks, gimmicks after gimmicks, picking the most efficient tool possible, using the most expressive and easy language (Julia). However, this has a limitation. If you’re limited to 10 LOCs, for example, then you’re limited in what you can do regardless of the expressiveness of your language. It’s a similar story at 500 LOCs. Moreover, a lot of language expressiveness isn’t just about how one can write a bunch of gimmicks, in which case you could argue no-code things are very powerful, but how the projects you can do scale with the LOCs you make. This means that some of the more powerful capabilities of the language (like in Julia’s case, the ability to make a powerful ecosystem at a fraction of the cost and at excellent quality) would remain far away.

This is what I wanted, and even if I moved to some other goals, this weakness would come back to haunt me.
What I wanted to do with Julia (digression):

Now, what I wanted to do? Have an excellent game that would make even some of the best games out there look like a joke. I was granted a vision on how to do so. First, you need to understand what fun is.
Fun is a mechanism evolved for learning. Fun and play are mechanisms by which we learn and explore the world. Games use this mechanism, and they have players learn.

Now, let’s take a look at the other side of the world: game design. Games nowadays have advanced physics simulation and so on, but they’re mostly cosmetic. Why? Because the developers cannot control or balance the player experience and so on, if the game becomes more complex, it would not be fun.

But, well, what if you have a game complex enough that whatever strategy you come up with, there is an even more powerful strategy? That game would not need to be tightly balanced, right? That is because there would be no dominating meta that would be so powerful as to make the game not so fun. That would be a piece of the puzzle. I would come back later.

So, now, games that are of low complexity are fun. Games that are at the medium-complexity regime devolve into unbalanced nightmares. Finally, games that are of the high-complexity regime can be fun again.

But is there a deeper explanation? I think I found one.

Human brains are learning machines, right? And fun stems from learning, right? Now, look at what the complexity does to learning. At low complexity, there might be only a few parameters you consider. For example, go at the green light, pause at the red light. When the game becomes more complicated, you develop a more complex model of the game with more parameters.

Now, one surprising phenomenon that applies in machine learning is that as long as reasonable architectures are used, several phenomena hold true regardless of the exact architecture. That means it is also reasonable to assume human brains, biological neural networks, would follow a phenomenon too, if it works for something as simple as polynomial regression or a 2-layer neural network to complex ones like Transformers, it probably works for biological models too.

And with that, the final piece of the puzzle is the double descent. At low complexity, there are few parameters, so learning works. At medium complexity, it overfits, so learning here is pretty useless. At higher complexity, however, you have so many parameters that you reach the double descent curve, and the learning happens again, and this time generalizes and is robust. This causes the game to become fun again. This is also the place where learning can generalize well, meaning that learning is robust regardless of the exact game numbers because your learned strategies generalize instead of overfitting to the very specific nature of the game. That means the developers don’t need tight control over the player experience and can let the players explore.

So, overpowered strategies are simply strategies that are overfitting the learned game models!

And what I wanted to do is to reach the point where the game becomes fun again.
End of the digression.

This is where my vision has gone too far.

But how does this relate to all of these? Well, I mentioned making a game complex enough to reach the point where it becomes fun again, right? However, from the first principle, which requires a lot of unorthodox design decisions as well as potentially hard things like physics simulation and so on, you could organically grow player experience.

And to do so would require me going so far (to make such a complex game) as to make things like making a game engine (and arguably the best one at achieving such a goal), like just a warmup. (So, regardless of whether or not it’s strictly needed, I think it’s a good idea.) (And it should be relatively easy, because no other game engine was ever designed to make such a game.) Moreover, Julia already makes starting a new ecosystem (such as making a game engine) as easy as possible.

But “relatively easy” and “as easy as possible” are still hard, and as someone who relies on tricks and gimmicks to make things easy and then solve easy things, when things are genuinely hard, I struggle immensely, yet why am I given such insight?

And well, right now, while I can do (and already did) some smaller tasks like contributing to the Stockfish chess engine, my future looks pretty bleak, like it’s all going to hell.

And while I won’t be attempting to make such a game anytime soon, such a fun game is what I’ve always wanted, so I would probably be stuck trying to make it happen one way or another, but as weak as I am, I can’t make any meaningful progress.

This is where I stand, with a vision far beyond what I could reach, and already pretty lucky that I was given the vision on how to make such a fun game happen, have found such a powerful language to make that happen, and was given this genius-level problem-solving ability to solve problems, but they are not enough!

And this applies not only to this goal but to my smaller goals as well!

I often see a lot of theoretical possibilities, and no way to reach them! My main goal can’t be reached! My smaller goals can’t be reached! I can only do gimmicks and tricks with Julia(or other languages). That’s very limiting!

And considering that Julia is already the most expressive, efficient language I have, I have nowhere left to run to!

I am stuck (with Julia) and have nowhere to run to!

2 Likes

Note: You don’t have to even believe in the validity of my idea. This was an example of me being able to make such an elaborate theory and not being able to do anything with it.

I think it’s good to write out thoughts like this, but it’s probably something I would recommend keeping a private journal for. On a public, technical forum, there isn’t really much that came out of it that will be really useful either to yourself or for the other people on the forum.

Beyond as a note for private reflection, probably a better person to share something like this with would be a therapist. This post, and a number of other posts you’ve made here on Discourse in the past are much less about technical issues and much more about (completely normal!) challenges of mental well-being. If you have not tried professional mental health services, I would encourage you to try it.

my future looks pretty bleak, like it’s all going to hell
[…]
I often see a lot of theoretical possibilities, and no way to reach them!

These are very common patterns of thought, especially for “high-achieving” and “intelligent” people, and there are good resources for learning how to deal with them appropriately. You should seek out those resources!

24 Likes

Maybe I exaggerated it a bit… but well, when my problem is at the intersection of basically technical issue with myself and the mental issue. I understand that when the problem is at the intersection, it’s really hard. The inability to write long code could be a personal technical problem but it might’ve also stemmed from a mental problem or something. I’ll admit this is not an easy issue to fix.

I’m intending to solve the personal technical problem but indeed the root cause might be a complex interplay of mental issue/etc… I’m not sure how I could fix it.

All I can tell you is that it seems to me the answers you are looking for are not really on the technical side. It’s going to be really difficult for a bunch of people on a technical forum who have never met you (and many of which probably fall into the “tech nerd” category, and may not be the best source of mental health advice) to give you very helpful responses.

Beyond a therapist, it might also be helpful to discuss thoughts like this with people that know you in real life. A teacher, mentor, friend…. These are not topics that are ideal for non-face-to-face settings (even the more technical aspects)

30 Likes

Creating even relatively simple games requires months of (more or less) continuous work. All I can say is that it takes sufficient motivation and discipline. Some people have intrinsic motivation to create, others get a lot of work done when there are external sources of motivation. We don’t really know what would motivate you or any other person to sit down and code for months or years.

If you feel stuck, it’s usually beneficial to have a break and do something completely different for a bit to refresh your mind.

6 Likes

Julia does combine some pretty neat features, but that just doesn’t make up for the extremely low participation in game design (I saw maybe 2 posters seriously tackle simple games in the last year), the lacking ecosystem, and relevant base weaknesses (e.g. small AOT binaries in its infancy). Other languages have been far more productive for game design so far; you even provided an example of the Stockfish chess engine implemented in C++.

If you really want to trailblaze, you could develop and maintain a few new Julia packages, and I’m sure people would welcome it. But that won’t be enough to match existing game engines, and most of your goals really can’t be done alone. Even a modest specialized game engine can easily be a bigger project than base Julia, and look at how many people worked on base Julia over the past decade. Indie game developers don’t usually work alone, and they use preexisting game engines and libraries so they can focus on the design and game logic.

In my opinion, and I mean this with respect, your skill and choice of language isn’t why you’re stuck. In fact, you’re not stuck with Julia to begin with because the world of game development is out there and mostly using other languages to great effect. I think it’s worth reevaluating what you’re really motivated to do and what you have the time for, and you will likely have to get rid of the myth that Julia would make any of it easier and find a community that is ready to address the work you choose.

5 Likes

I did not deny that Julia currently does not have a major current gaming ecosystem in the first place. I based my decision on the ease of developing an entire ecosystem with something. The point is that game devs have developed their own private engines over much less of an issue, and the fact that my game design philosophy stated above means that pretty much no game engine would support this ambition, because no game engine ever would support such a ridiculous plan. Sometimes, I would imagine what it would take to create an easy and fast language, and I’d end up with something like a language that’s a bit like C++ but automatically puts templates on everything to emulate dynamic typing or something, and then I’d end up close to Julia.

Is there a possibility that other ecosystems are more suitable? Maybe, but as said before, I did not come to write a standard game. What I am trying to make is, to most game developers, completely alien, maybe not like a game at all. In my assessment, that means the existing game engines are of nearly zero value for what I’m going to do anyway. Indeed, it is not inconceivable that something else would be more suitable. I even contemplated making my own programming language.

I’m afraid I kept arriving near Julia even when I tried designing a programming language in any way I wanted (even without implementing it).

As to why I have such an impossible goal, I don’t know either, other than that I want something.

If you don’t believe in miracles, they won’t come true. Since Julia has a track record of creating incredible miracles, it is one of my bets. However, I do not dismiss the possibility of say… using AI or something else.

Still, this is where I’m stuck with.

Oh well, it may seem off but, I will make sure julia became competitive against the existing solution, and I won’t stop until it’s done. I have already made 12 packages just for that and it’s just a start, I will continue digging deeper until Julia will be listed in every article as a viable choice for game development

3 Likes

I love your attitude. Such a madman, but maybe you will succeed. Miracles come.

Maybe I will succeed ?
I will succeed, there is no ‘maybe’ when we are working on something great (at least for me)
You know, sometime I like to distinguish 2 things

  • External difficulties
  • Internal difficulties

External difficulties doesn’t depend on your abilities, they stem from multiple source out of your control, those one only need miracle
Internal difficulties on the other hand only depends on you. You can can’t change the parameters of the world but at least you can adjust yourself

That’s what I have been doing all this time
I’m not an expert (far from that) but I know I’m one variable in the julia game development ecosystem, and I want to have as much weight as possible.
Every time I fail, I just try again, differently
Every time I’m unsure, I ask for feedbacks

Sky is not my the limit, the limit is were I decided it to be
And I will try again, and again, and again, and again, and again until it works perfectly…

4 Likes

From your brain network outputs I feel you might need more randomness in your task system to make it less struggle. Try something like GitHub - javalent/dice-roller: Inline dice rolling for Obsidian.md to gamify your life time task management a bit might make everything easier for you.

If making things like a game engine and expressiveness is what you care, I would suggest checking Nim, which may be better than Julia for tasks other than scientific computing.

1 Like

Yup… maybe… though in Nim there are not as many cool features like a ton of automatic differentiation, MLIR interface, the ability to combine disparate packages and make it work seamlessly, or the absolute banger packages that simply dominate everyone else. It’s like Julia still has this sense of enabling where it allows you to do crazy things and prevail. I’d probably need that. I’m not here to make a regular game, of which there are already many. I’m here to create something else… not sure if it would even be called a game.

Nim seems cool, It has native JS compilation. It’s a big plus. I look at it for my future web project

I checked nim and it’s a really cool language but for a game engine I would choose Julia. because it has some really interesting paradigm, I can’t generate code on the fly with nim, nor reload file by simply saving them. Julia offer way more expressiveness and power, because it’s JIT and juliac is making the AOT compilation even better. It’s way more interesting to work on a game engine with julia. However, I found Nim particularly well suited for web development or for making DSL. I think I will try making a bunch of DSL with it.

Do we really need another one of these threads so often? I really think you are posting too many of these threads too often and getting the exact same feedback each time.

9 Likes

I think I found at least part of the problem. It had to do with how my mind was optimized. I developed a thinking method that’s good for solving exam problems, which are often short, self-contained problems.

Exams often focus on the ability to solve problems in about 1 hour or so.
But the ability to solve problems over a longer time period is just as important, if not more important.
Which is what I struggle with currently and am trying to find a way to fix.

Like, at shorter time control, you have a problem, and you can map out a solution in your head, right? And then you write out the solution.
But well, thinking at a longer time control requires me to learn things like documenting solutions, writing out plans, keeping a catalogue of what worked and what did not, prototyping, etc.

But the problem is that I never developed such a skill. Which is why I struggle with >500 LOCs, even though I’m able to solve small problems really well. What should I do?

What often happens to me is that I often think of a solution to a problem, run out of memory, and then quit.

Then write. Collect everything you know about the problem as text on a piece of paper, edit it, reorganize, etc.

For writing “big” programs (I’m not sure 500 LOCs is that big; I sometimes write this much when my code is messy), try separating code into self-contained functions or structs with a well-defined API.

1 Like

Some pretty major assumptions here that should be examined. While neural networks may may have been inspired by looking at brain function, it would be unwise to conclude that neural networks are the sum total of how brains operate.

Roger Penrose set out to prove this hypothesis with his book the Emperor’s New Mind, a worthy read. Research on how children learn language seems to bear out the hypothesis that the brain is much more than an LLM. An interesting article on this is found here.

Happy researching!

1 Like