Jump to content

Question about programming games.

Emperor Numerius
2 hours ago, riklaunim said:

Yet there are no job offers locally for it, while there are for Unity and Unreal.

 

Going into elitarims or fanboyism is bad.

Maybe at some point the average person will start to realize that most of those jobs no longer make a positive contribution and start buying games from people doing what they are good at.

 

https://www.metacritic.com/game/pc/redfall/user-reviews

 

https://www.metacritic.com/game/pc/the-settlers-new-allies/user-reviews

 

https://www.metacritic.com/game/playstation-5/diablo-iv/user-reviews

 

https://www.metacritic.com/game/pc/overwatch-2/user-reviews

 

You have jobs in BabylonJS and ThreeJS.

 

Why not use WebAssembly for games? You can use any language in that case.

 

 

OS: FreeBSD 13.3  WM: bspwm  Hardware: Intel 12600KF -- Kingston dual-channel CL36 @6200 -- Sapphire RX 7600 -- BIOSTAR B760MZ-E PRO -- Antec P6 -- Xilence XP550 -- ARCTIC i35 -- EVO 850 500GB

Link to comment
Share on other sites

Link to post
Share on other sites

33 minutes ago, The Hope said:

Maybe at some point the average person will start to realize that most of those jobs no longer make a positive contribution and start buying games from people doing what they are good at.

There are good and bad games on custom engines or on the most popular ones available to any game developer. There is no correlation between game quality and game engine assuming it's an actual game engine. And in the end, this is a job - if corporate pays a lot of money to make a project that will never ship it's their problem, not the developer that gets paid.

 

35 minutes ago, The Hope said:

You have jobs in BabylonJS and ThreeJS.

 

Why not use WebAssembly for games? You can use any language in that case.

Right now in Poland, there is one company looking for ThreeJS and one job offer for BabylonJS - https://justjoin.it/

 

If I would want to switch to game development I would pick what is required by the majority, not the minority of job offers. The software stack has to be good to work with and with support, should allow for creating quality products and the pay must be good.

 

Niche software stacks usually can't offer reliable job offers and often limited support and/or limited quality/feature set. And we are talking game dev - the majority of game studios will be crunch and other nonsense so you need a wide list to pick those better ones.

 

Link to comment
Share on other sites

Link to post
Share on other sites

15 hours ago, riklaunim said:

Niche software stacks usually can't offer reliable job offers and often limited support and/or limited quality/feature set. And we are talking game dev - the majority of game studios will be crunch and other nonsense so you need a wide list to pick those better ones.

 

A lot of game devs are being exploited badly. many of them are labeled as contractors and on work visas in the USA so the company can overwork them and pay them peanuts. staff engineers who are full time employees of the company get treated a lot better but they still have crunch time regularly. Pretty sure major studios like EA and Blizzard have plenty of workers protests in recent years.

 

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, wasab said:

Pretty sure major studios like EA and Blizzard have plenty of workers protests in recent years.

Blizzard had a bunch of sex scandals and as known to pay below market average they had problems with getting staff. Not so long ago one of their technical directors/managers left the company after he got a quota of employees to rank "below expectations" no matter their real performance. Not to mention trying to bust a workers' union from forming.  Fun company...

Link to comment
Share on other sites

Link to post
Share on other sites

21 hours ago, riklaunim said:

Blizzard had a bunch of sex scandals and as known to pay below market average they had problems with getting staff. Not so long ago one of their technical directors/managers left the company after he got a quota of employees to rank "below expectations" no matter their real performance. Not to mention trying to bust a workers' union from forming.  Fun company...

Reminds me about an employee who complains someone is stealing her breast milk...

Activision Blizzard Employee Claims She Had Breast Milk Stolen At Work (thegamer.com)

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

Well, this conversation took a wild ride... As a software developer maybe I can shed some light

 

In my honest opinion, programming in android is a huge convoluted mess and I avoid it at all costs. If you're coming from an unstructured programming model that you likely made yourself (such as is common in python) then you'll likely struggle with the many layers of abstraction that android has integrated into it's core architecture.

 

But that shouldn't stop you. You say you have experience in Java, so I'd suggest using that, though you might find it easier using JS since it is also loosely typed, like Python (though, if you aren't using type hints in python, you're doing it wrong), but JS will mean sacrificing performance since it's truly interpreted, whereas python is semi-compiled (https://stackoverflow.com/a/6889798/10804423), but, if you're using opengl, which you should be if you're making a game, then you likely won't need to worry about performance with JS, since opengl is wrapping a lower level api.

 

If you're new to game programming, I'd agree that Unity is great, because you don't need any programming for it and you can add programming as you learn it. Though I'd argue that'd make you learn it slower than if you just dove in head first.

 

I'm not a "fanboy" of any particular game engine, so my suggestion would be to explore, lots of people have written game engines on github, go find one, or write one yourself. There is no better way to learn programming than writing your own game engine, or writing a compiler, or making your own language.

 

So okay, now that my rant is done what should you do?

Based on reading your responses I take it that you are relatively new to programming, but not a complete newbie. You should do the following:

  1. Learn how to use OpenGL, I'd suggest using C/C++ for this, as these tutorials are easy to find online at https://learnopengl.com/Introduction
    1. Understanding how OpenGL works is fundamental in understanding most game engine designs and so that you make optimized games
  2. Take some time and learn some design patterns and familiarize yourself with common production design choices so that you'll have an easier time using a 3rd party game engine, and so that your software can be maintained/extended, you can find some common design patterns here https://refactoring.guru/design-patterns
    1. If you're using Java with android, I believe that pattern they use is MVVM (model view viewmodel)
    2. otherwise common gaming design patterns are here https://gameprogrammingpatterns.com/contents.html
  3. Before you start coding, setup schedules for yourself and figure out what you actually want to do, so that you can refine your scope and avoid getting burned out

If you understand these fundamentals of professional software development then it won't matter which language you use, though some will make your work easier than others, but that's personal preference, some of us are masochists, here's a comprehensive list of good language for a variety of game types https://hackr.io/blog/best-programming-language-for-games

 

Quote

Kandria, an action RPG made with Common Lisp

Don't do this to yourself, don't use Lisp, if you trust anything I say, listen to me now. Do. Not. Use. Lisp.

Honestly you'd probably have an easier time programming in assembly than in lisp for game development and that's saying something

Link to comment
Share on other sites

Link to post
Share on other sites

On 9/3/2023 at 6:51 PM, riklaunim said:

There are good and bad games on custom engines or on the most popular ones available to any game developer. There is no correlation between game quality and game engine assuming it's an actual game engine.

It seems to me that you don't understand the basics of computer science very well.

 

You have programming languages that are much more mathematical and expressive than other programming languages.

Haskell, for example, strives to be very close to pure mathematics and this does have a huge impact on the quality and bugs in your code.

 

It has to do with the three conditions a function must satisfy, and the fact that because of this you know the exact behavior of the code with no chance of unexpected behavior.

 

The first fact I see with many AAA games currently is that they are full of bugs after release. (at an abnormally high percentage)


A second thing I see is that there are many games that are yet another re-release of the same game, but often with (much) poorer gameplay than previous editions.

 

Ultimately, you can compare it to a heart surgeon who kills most of his patients because he does not appear to have the right skills in reality.

Of course, he then no longer has the right to keep his license.

I am of the opinion that there has been severe failure in the training of many programmers, just as you see that people with the longest training sometimes fail in reality:

https://www.theguardian.com/society/2016/mar/03/queen-elizabeth-hospital-birmingham-cqc-heart-surgery-high-death-rate

 

You (frequently) see at universities today that the most foolish and worthless programming languages are being taught.

Blunt education ultimately causes persons to be unable to do their jobs decently. And the IT degrees of countless people do not have the slightest value.

 

To give another example. Many students at Southern European universities or Czech universities, for example, obtain university degrees even though they do not have an advanced level of English. Although English is the language of science.

 

How on earth can you be an academic even though you cannot even read the most relevant academic texts?

 

This is what I mean, you 'can' program games in C++ and C#, and there are many jobs in Unity and Unreal engine, but actually these are not 'skilled professionals' who have much value:

https://medium.com/nerd-for-tech/linus-torvalds-c-is-really-a-terrible-language-2248b839bee3

OS: FreeBSD 13.3  WM: bspwm  Hardware: Intel 12600KF -- Kingston dual-channel CL36 @6200 -- Sapphire RX 7600 -- BIOSTAR B760MZ-E PRO -- Antec P6 -- Xilence XP550 -- ARCTIC i35 -- EVO 850 500GB

Link to comment
Share on other sites

Link to post
Share on other sites

On 8/31/2023 at 12:22 AM, riklaunim said:

There aren't many: https://www.javacodegeeks.com/2021/09/7-best-games-written-in-java.html

 

And nothing beats Unity and Unreal in terms of the popularity and quantity of successful games delivered. And no one here realistically recommended Python for game development either.

You're basically claiming that C++ games are successful, right?

 

Comparing Observed Bug and Productivity Rates for Java and C++

https://www.lanl.gov/projects/CartaBlanca/webdocs/PhippsPaperOnJavaEfficiency.pdf

 

A typical C++ program had two to three times as many bugs per line of code as a typical Java program.
C++ also generated between 15 per cent and 50 per cent more defects per line, and perhaps took six times as long to debug.

Java was between 30 per cent and 200 per cent more productive, in terms of lines of code per minute.

 

 Why do so many games have bugs nowadays?

Why PC Games Are So Buggy & Badly Optimized Nowadays

https://www.techoverwrite.com/pc-games-buggy/

There have been a lot of high-profile cases of AAA games launching with bugs so bad you couldn’t even play. While the Cyberpunk 2077s in Fallout 76s of the world get a lot of attention, pretty much every game has its launch day bugs. Which begs the question: why?!

 

 Why are new games buggy, but old games aren't?

https://www.mmo-champion.com/threads/1589131-Why-are-new-games-buggy-but-old-games-aren-t

 

Why are modern games so bugged

https://ganker.com/why-are-modern-games-so-bugged-527572/

Is it because the masterful Japanese programmer simply folds his code over 10 000 times so as to squeeze out all the bugs before it is entered into the video game.
American "programmers" rely on using found code and slightly reshaping it before sloppily throwing it in to the product thus requiring entire teams to shift through the horrible mess they created.

 

Weekend Open Forum: Why are PC games so buggy these days?

https://www.techspot.com/news/47040-weekend-open-forum-why-are-pc-games-so-buggy-these-days.html

 

Why Are AAA Games So Bad? Are Video Games Getting Worse? Ugh!

https://whatnerd.com/aaa-games-are-getting-worse/

 

Let’s Be Honest: Modern Gaming Sucks

https://fulltechpodcast.com/modern-gaming-sucks/

 

Why Do So Many Games Release in a Broken State Part 1

https://www.sapphirenation.net/why-do-so-many-games-release-in-a-broken-state-part-1

Cyberpunk 2077. Forspoken. The Witcher 3 Next Generation Update. The Callisto Protocol and so many others – all of these games show a certain problem within the gaming industry. They were (are) broken! The “release it first, fix later (if at all)” mentality has damaged AAA and AA gaming and has made an impact on indie gaming as well. Releasing games with extreme performance issues on launch, lots of bugs, stability problems, unfinished content, terrible options menus, and poor optimization seems to be the new standard and is plaguing console and PC gaming.

 

"As a coding language, C++ appeals to the ego, not the intellect"

https://www.efinancialcareers.com/news/finance/c-coding-language-problems

 

I notice that this site has a tendency to extol the virtues of C++ as a programming language. As someone who has worked with C++ and who has followed the debate around its use for a long time, I think it's time to set the record straight.

The truth is that C++ is one of the worst languages ever foisted on the industry. Far from being used in modern trading systems, C++ should now only be used for legacy projects. It is based around machine thinking, which is not programming thinking.

 

I'm not the only one to dislike C++. Ken Thompson, the Bell Labs researcher who implemented the original Unix operating system, described it as a "bad language" that's "way too big, way too complex" and "obviously built by a committee." Damningly, Thompson also said that C++ does, "a lot of things half well" but is "just a garbage heap of ideas that are mutually exclusive."

 

Either way, if you're trying to learn C++ and you're struggling to master it, it's not you that's the problem. The language is flawed. Designing a programming language is very difficult, and C++ is simply not that well-designed. Systems programming and application programming are two very separate things, and C++'s real issue is that it tries to combine them both. 

 

Porting 58000 lines of D and C++ to jai, Part 0: Why and How

https://www.yet-another-blog.com/porting_the_game_to_jai_part0/

Much has been said about the shortcomings of C++, so I’m not going to go into great detail here. In short, C++ has accumulated decades of bad decisions without any mechanism to get rid of them. The standard library is a disaster, (successfully) using other people’s code is comically hard and somehow each new addition to the language always seems to come with a catch. C++ is right in the spot where its shortcomings cause me a lot of pain, but at the same time it’s not bad enough that moving on is a no-brainer. But since it’s also not evolving in a direction I find promising, I don’t expect things to get better and want to leave the C++ ecosystem.

 

https://news.ycombinator.com/item?id=33720330

> But remember all C++ defaults are wrong

Honest truth right here.

OS: FreeBSD 13.3  WM: bspwm  Hardware: Intel 12600KF -- Kingston dual-channel CL36 @6200 -- Sapphire RX 7600 -- BIOSTAR B760MZ-E PRO -- Antec P6 -- Xilence XP550 -- ARCTIC i35 -- EVO 850 500GB

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, The Hope said:

The first fact I see with many AAA games currently is that they are full of bugs after release. (at an abnormally high percentage)


A second thing I see is that there are many games that are yet another re-release of the same game, but often with (much) poorer gameplay than previous editions.

 

Who cares Starfield is Skyrim in Space? who cares Cyberpunk was a dissaster at launch WHEN IT BRINGS A LOT OF MONEY?

 

Your elitary, "proper" languages and software stacks even if are better ARE irrelevant if they don't bring the money.

 

I doubt game developers want to work for fraction of their current salary or be job-less so they do what they are paid to do. Nobody cares about some elite/snowflake take when they aren't paid and allowed to do so. This isn't academics, this isn't FreeBSD fanclub, this is business. Money rule it.

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

  • 3 weeks later...
On 9/9/2023 at 12:23 PM, riklaunim said:

I doubt game developers want to work for fraction of their current salary or be job-less so they do what they are paid to do. Nobody cares about some elite/snowflake take when they aren't paid and allowed to do so. This isn't academics, this isn't FreeBSD fanclub, this is business. Money rule it.

Surely you have plenty of game developer companies of 200-500 employees who developed their game engine largely in-house.

These types of teams can choose what programming language they write the engine in.

 

On 9/9/2023 at 12:23 PM, riklaunim said:

 

Who cares Starfield is Skyrim in Space? who cares Cyberpunk was a dissaster at launch WHEN IT BRINGS A LOT OF MONEY?

Your elitary, "proper" languages and software stacks even if are better ARE irrelevant if they don't bring the money.

The game engine is as important to a game as a car's engine is to cars.

Everyone knows the saying "time is money".

If I had to say which programming language fits that mentality the least I would say it is C++.

 

What is very important for games is artificial intelligence. Is C++ something suitable for that?

Is Python, one of the slowest languages, suitable for AI when AI needs a lot of computing power?
Seems 100% certain to me that Haskell, Common Lisp, Racket, Julia and Java are technically much more suitable for AI than C++ and Python.

 

Every time a new console hits the market, a game development company has room for experimentation.

You have new hardware and companies like Microsoft and Sony just want them to be able to present innovative exclusives that make the best use of the machine's computing power. 

Why have they never used Haskell to produce AAA game engines before? I think the only plausible explanation is that today's engineers are not trained geniuses but rather the opposite.

 

I recently asked a group of engineers, all three graduates of a 'top 100 university' what the definition of a (mathematical) function is.

None of the three knew the answer; in fact, they didn't make a sound when I asked this question.

 

This is a good indication of what the level of many game developers is today. 

Is the quality of games going down?

https://midiaresearch.com/blog/is-the-quality-of-games-going-down

Conversely, the ‘bad’ games are rising, with the number of games rated under 2.5/5 up a massive 753% from 19 to 162. In 2014 they were just 6% of all games, but in 2021 made up 34%. This likely links to a lack of barrier to entry, resulting in a reduced level of quality control – and is in part an unintended consequence of the positive move towards easier publishing for independent developers, as many of these titles come from smaller studios.

 

There is really only one explanation as to why all the companies are now developing games in C++ and C#.

Today's game developers are too poor mentally to write ingenious and qualitative game engines.

OS: FreeBSD 13.3  WM: bspwm  Hardware: Intel 12600KF -- Kingston dual-channel CL36 @6200 -- Sapphire RX 7600 -- BIOSTAR B760MZ-E PRO -- Antec P6 -- Xilence XP550 -- ARCTIC i35 -- EVO 850 500GB

Link to comment
Share on other sites

Link to post
Share on other sites

On 9/9/2023 at 12:23 PM, riklaunim said:

 

Your elitary, "proper" languages and software stacks even if are better ARE irrelevant if they don't bring the money.

 

http://stevepeacocke.blogspot.com/2013/05/delphi-why-wont-it-just-die.html

You see Delphi has one advantage over all other languages – it’s both highly productive, and it’s a real pleasure to use. Being highly productive has seen single Delphi developers produce software that would otherwise require a team of 5 developers. I’ve been in a team of 3 developers that out programmed a corporate wide application by having it up and running in a few months compared to another team I know of over 30 Java developers who 18 months later still had not produced their application. I know also that whenever I’ve had to use other languages for any period of time, it’s a wonderful surprise again to find that using Delphi, you are no longer struggling with the language or the development platform. It just works.

 

Developers! Developers! Developers… Are Expensive

https://mattermark.com/developers-developers-developers-expensive/

 

Terseness and productivity in Nim vs other languages

https://forum.nim-lang.org/t/5337

A lot of people find Nim's expressiveness comparable to Python.

I find static types in Nim increase productivity even over Python although the ecosystem and tooling are not that rich.

 

A Functional Love Affair: Why I Chose Haskell Over JavaScript

https://medium.com/@kerronp/a-functional-love-affair-why-i-chose-haskell-over-javascript-fe9b2c619c42

Haskell provides powerful pattern matching capabilities, which can greatly simplify code and make it more expressive. JavaScript does not have native pattern matching support.

Haskell’s syntax is clean, concise, and elegant, which makes it more comfortable to read and write. JavaScript’s syntax is derived from C, which can be more verbose and cluttered with curly braces and semicolons.

Currying and laziness are two powerful features that set Haskell apart from JavaScript, making it an attractive choice for developers seeking more elegant and efficient code.

Haskell offers advanced concurrency and parallelism features through its libraries, such as the async package and Control.Concurrent. JavaScript's single-threaded event-driven model relies on asynchronous callbacks, promises, or async/await for handling concurrency. While JavaScript has Web Workers for parallelism, they have limited interaction with the main thread and require message passing.

Haskell has a strong, static type system that can catch many errors at compile-time, preventing them from causing issues at runtime. JavaScript, however, is dynamically typed, which means that type checking occurs at runtime and can lead to unexpected errors.

OS: FreeBSD 13.3  WM: bspwm  Hardware: Intel 12600KF -- Kingston dual-channel CL36 @6200 -- Sapphire RX 7600 -- BIOSTAR B760MZ-E PRO -- Antec P6 -- Xilence XP550 -- ARCTIC i35 -- EVO 850 500GB

Link to comment
Share on other sites

Link to post
Share on other sites

8 hours ago, The Hope said:

Is Python, one of the slowest languages, suitable for AI when AI needs a lot of computing power?
Seems 100% certain to me that Haskell, Common Lisp, Racket, Julia and Java are technically much more suitable for AI than C++ and Python.

You do realize Python isn't running the AI directly? That's it's just a scripting glue and most models are running on the GPU where Python isn't present? And people are using for that. It's popular.

 

8 hours ago, The Hope said:

Surely you have plenty of game developer companies of 200-500 employees who developed their game engine largely in-house.

These types of teams can choose what programming language they write the engine in.

CDProjekt Red is dropping theirs and moving to Unreal. With the Unity drama Godot is getting a lot of traction. And not like those engines have various scripting layers, like GDScript for Godot. Likely very few Indie game developers worked directly with DX or OpenGL.

 

7 hours ago, The Hope said:

A lot of people find Nim's expressiveness comparable to Python.

Linking Nim forums for a comment about Nim? Maybe we should link PHP forums to counter it with opinion on PHP?

 

And not like Nim stays a niche language. It doesn't solve any problems of Python in the areas Python is used. Last time I checked their main web framework did not even have proper form handling and validation.

 

Not sure why are you replying with those long posts. I work daily as a full stack web developer and don't really care about game dev. I'm happy with Python + frontend stack. Used PHP many year ago but moved to a better platform. Right now Nim or other exotics have zero value as nobody is paying for it and I can't use it on my own as it does not have the libraries I need. Java has one if I wanted to push even more money but that's senior level and getting to senior Java level takes time. With abundance of Python jobs I don't have to switch to Java.

 

And the question stands - what is being solved here?:

 

Link to comment
Share on other sites

Link to post
Share on other sites

9 hours ago, Sakuriru said:

Kind of off the topic though, which is a discussion about programming games. You're going to use whatever the game engine makes you use. Game development is its own thing.

I was only talking about AI in games. AI is increasingly used in games. You can use AI to make your enemies smarter and more realistic. But the AI can't be incredibly smart because the gamer needs to have a chance to win.

 

13 hours ago, riklaunim said:

You do realize Python isn't running the AI directly? That's it's just a scripting glue and most models are running on the GPU where Python isn't present? And people are using for that. It's popular.

 

CDProjekt Red is dropping theirs and moving to Unreal. With the Unity drama Godot is getting a lot of traction. And not like those engines have various scripting layers, like GDScript for Godot. Likely very few Indie game developers worked directly with DX or OpenGL.

If I were very naive I would believe you anyway.

The thing is that I am one of the most critical individuals.

 

You're stuck with the fact that there are fewer computer science students than there used to be.
A second thing you have to think about is that according to the old generations, these new computer science students can no longer do decent programming. Because of Google's influence, Python has become dominant at universities.

 

In many AI projects, you see Python adopting more and more critical functions from other languages.

 

Looking at the amount of Python in TensorFlow, are we to believe it has no impact on TensorFlow's performance? Why is TensorFlow much slower than similar solutions that do not use Python at all?

 

What percentage of Ansible is written in Python?

How much of pgAdmin is written in Python?

Is that just a wrapper that has no performance impact whatsoever?

 

You even had many Python programmers who tried to rewrite darknet in Python, because most 'AI developers' aren't smart enough to understand C++. https://darknetcv.ai/

I don't know if this project still exists but somewhere along their journey they realized that their Python version was running absurdly slow compared to the C++ version. You see that Python programmers notice daily that they contribute nothing competitive, but they seem to be too stupid or lazy to do anything useful.

 

My opinion of both the countless Python programmers and the countless C++ game developers is that I find them a negative value. You have a large group of people who basically just sit around producing junk code full of bugs, and in the case of Python, that junk then uses massive amounts of energy.

 

As a business leader, I would still demand some basic quality and develop an engine myself in Nim, Common Lisp, Delphi or Haskell.

OS: FreeBSD 13.3  WM: bspwm  Hardware: Intel 12600KF -- Kingston dual-channel CL36 @6200 -- Sapphire RX 7600 -- BIOSTAR B760MZ-E PRO -- Antec P6 -- Xilence XP550 -- ARCTIC i35 -- EVO 850 500GB

Link to comment
Share on other sites

Link to post
Share on other sites

On 9/5/2023 at 9:43 AM, iggy12345 said:

Well, this conversation took a wild ride... As a software developer maybe I can shed some light

 

In my honest opinion, programming in android is a huge convoluted mess and I avoid it at all costs. If you're coming from an unstructured programming model that you likely made yourself (such as is common in python) then you'll likely struggle with the many layers of abstraction that android has integrated into it's core architecture.

 

But that shouldn't stop you. You say you have experience in Java, so I'd suggest using that, though you might find it easier using JS since it is also loosely typed, like Python (though, if you aren't using type hints in python, you're doing it wrong), but JS will mean sacrificing performance since it's truly interpreted, whereas python is semi-compiled (https://stackoverflow.com/a/6889798/10804423), but, if you're using opengl, which you should be if you're making a game, then you likely won't need to worry about performance with JS, since opengl is wrapping a lower level api.

 

If you're new to game programming, I'd agree that Unity is great, because you don't need any programming for it and you can add programming as you learn it. Though I'd argue that'd make you learn it slower than if you just dove in head first.

 

I'm not a "fanboy" of any particular game engine, so my suggestion would be to explore, lots of people have written game engines on github, go find one, or write one yourself. There is no better way to learn programming than writing your own game engine, or writing a compiler, or making your own language.

 

So okay, now that my rant is done what should you do?

Based on reading your responses I take it that you are relatively new to programming, but not a complete newbie. You should do the following:

  1. Learn how to use OpenGL, I'd suggest using C/C++ for this, as these tutorials are easy to find online at https://learnopengl.com/Introduction
    1. Understanding how OpenGL works is fundamental in understanding most game engine designs and so that you make optimized games
  2. Take some time and learn some design patterns and familiarize yourself with common production design choices so that you'll have an easier time using a 3rd party game engine, and so that your software can be maintained/extended, you can find some common design patterns here https://refactoring.guru/design-patterns
    1. If you're using Java with android, I believe that pattern they use is MVVM (model view viewmodel)
    2. otherwise common gaming design patterns are here https://gameprogrammingpatterns.com/contents.html
  3. Before you start coding, setup schedules for yourself and figure out what you actually want to do, so that you can refine your scope and avoid getting burned out

If you understand these fundamentals of professional software development then it won't matter which language you use, though some will make your work easier than others, but that's personal preference, some of us are masochists, here's a comprehensive list of good language for a variety of game types https://hackr.io/blog/best-programming-language-for-games

 

Don't do this to yourself, don't use Lisp, if you trust anything I say, listen to me now. Do. Not. Use. Lisp.

Honestly you'd probably have an easier time programming in assembly than in lisp for game development and that's saying something

thanks for the tips!!!!

Link to comment
Share on other sites

Link to post
Share on other sites

4 hours ago, The Hope said:

As a business leader, I would still demand some basic quality and develop an engine myself in Nim, Common Lisp, Delphi or Haskell.

The thing is you are expensive to hire and not every project needs an expert. To make a startup product landing page all you need is a local webmaster. All it needs to do is showcase a MVP for investors and initial clients. Then they get money to make a proper website with better UX. If this stage succeeds then they go global, hire UX/UI experts and do A/B testing to increase conversion.

 

Same with mobile apps - simple and cheaper apps are more likely to be pushed to Flutter or React Native developers than to mobile native developers. For one the budget is lower and second, there are much fewer mobile "native" developers so they can only do a small subset of projects.

 

And look at YouTube - they won with Google Videos because they were the first to market with new features. Over and over again YT Python developers beat Google engineers in terms of shipping new features. Even though they did not scale as well as Google code they won users and Google Video lost, forcing Google to buy YouTube in the end. And with time YT was written "properly" when it already had the userbase justifying the cost.

Link to comment
Share on other sites

Link to post
Share on other sites

6 hours ago, The Hope said:

You're stuck with the fact that there are fewer computer science students than there used to be.
A second thing you have to think about is that according to the old generations, these new computer science students can no longer do decent programming. Because of Google's influence, Python has become dominant at universities.

Python dominates universities because it makes programming very approachable. That is attracative for research. Automating some data analysis, doing matrix or array stuff, repeating the same thing an a few dozen or hundreds of dataset etc. is made simple and a great deal of your day-to-day science does not require that kind of stuff to be programmed in a low level language like C(++). Even if it is code that will need performance down the line, something like Python is great to jot down a first iteration to flesh out the idea. Once everything is clear you can then put effort in a better defined optimisation. All the core stuff I use is written in C++ and uses/can use platform-specific optimised math libraries like MKL or AOCL. Python serves as the glue around it for stringing things together. Even when things are done "in Python", they use libraries that usually are bindings to C(++) or Rust code as well.

6 hours ago, The Hope said:

My opinion of both the countless Python programmers and the countless C++ game developers is that I find them a negative value. You have a large group of people who basically just sit around producing junk code full of bugs, and in the case of Python, that junk then uses massive amounts of energy.

You can write junk code in every language. That has nothing to do with Python or C++ and there are many reasons why code can be suboptimal. Maybe you don't have the mathematical or programmatical knowledge to optimise it further, maybe you don't understand the target domain well enough to write proper code for that use case, or maybe you write something very general and thus have to make sacrifices in the base product in order to accomodate flexibility.

6 hours ago, The Hope said:

As a business leader, I would still demand some basic quality and develop an engine myself in Nim, Common Lisp, Delphi or Haskell.

Why does Haskell equal basic quality? Someone will make a bad performing game on par with today's complaints with your supposedly superior Haskell engine, I'm willing to take poison on that. Simply because they don't fully understand your engine, don't have the in-depth Haskell expertise or do things inefficiently for other reasons. Then we can all happily bash Haskell and rinse, lather, repeat.

 

Another part is status quo. There are an insane amount of resources for game development in C(++) making it unattractive to leave that ecosystem. Someone will have to come with the "Unreal Engine 5 Haskell Edition", but that will take amounts of time and effort(and money most likey) that few have or are willing to put in given the risk.

Crystal: CPU: i7 7700K | Motherboard: Asus ROG Strix Z270F | RAM: GSkill 16 GB@3200MHz | GPU: Nvidia GTX 1080 Ti FE | Case: Corsair Crystal 570X (black) | PSU: EVGA Supernova G2 1000W | Monitor: Asus VG248QE 24"

Laptop: Dell XPS 13 9370 | CPU: i5 10510U | RAM: 16 GB

Server: CPU: i5 4690k | RAM: 16 GB | Case: Corsair Graphite 760T White | Storage: 19 TB

Link to comment
Share on other sites

Link to post
Share on other sites

20 hours ago, riklaunim said:

The thing is you are expensive to hire and not every project needs an expert.

What you often saw with Rust, Zig and Delphi in the past is that developers were often given a few months to learn it.

In the long run, that investment is usually positive depending on the goal you want to achieve.

 

19 hours ago, tikker said:

is made simple and a great deal of your day-to-day science does not require that kind of stuff to be programmed in a low level language like C(++).

This is a mistake I have seen countless times, even among "experienced" programmers.

C++ and C are not low level languages, these are by definition high level languages.

https://en.wikipedia.org/wiki/High-level_programming_language

 

Quote

Python dominates universities because it makes programming very approachable. That is attracative for research. Automating some data analysis, doing matrix or array stuff, repeating the same thing an a few dozen or hundreds of dataset etc.

REBOL was still much easier to learn and much more productive than Python. For scripts it was also faster than Python. And it also made supporting old code improbably simple. You also didn't need libraries because it was so productive that you could write the libraries yourself and still have your app ready faster than if you used Python and already available libraries. REBOL is a powerful programming language that children as young as 12 can easily learn.

 

We can conclude that design and features and ease of learning a language in the past usually did not determine whether the language became popular or not.

 

Quote

Why does Haskell equal basic quality? Someone will make a bad performing game on par with today's complaints with your supposedly superior Haskell engine, I'm willing to take poison on that. Simply because they don't fully understand your engine, don't have the in-depth Haskell expertise or do things inefficiently for other reasons.

"Supposedly" is a word you can use to question everything I say. I will be very honest, if there is a thread in my life it is that in discussions with other persons (including the most educated and authoritarian persons) the statements of other persons were usually disproved by reality not much later. I don't actually know anyone who can claim to have made less erroneous statements on average.

 

You have the people using JavaScript and it is the most popular programming language. If you go and ask people with 6 years of experience in JavaScipt if they feel that they are good masters of JS a lot of people are going to say they are. If you have experience of 2 years with Haskell you are less likely to claim to be a master. You will feel more insecure with the language. But if you present a problem to the insecure Haskell programmers with two years experience you will find that they solve the problem faster than the JS programmers with six years of experience and a lot of confidence.

 

And the solution of the Haskell programmers is usually going to work perfectly, while this is going to be much less the case with the solution of the JS programmers.

 

It's also clear that you haven't read a single book that deals with Haskell. Since these Haskell courses often compare to other programming languages in terms of properties different programming languages and ways to solve problems. You can say that Haskell courses in this sense not only deal with Haskell, but also explain the many situations in which domains Python, JS, Ruby, C, PHP and Java have the honor of exhibiting the least intelligent design of all programming languages.

 

I think it could be very useful for Python and JS programmers to read a Haskell book that are filled with comparisons of programming languages. I'll give some quotes out of my Haskell books so you can understand why programming languages affect the quality of programs.

 

Haskell is rather unique in having strong compiler support as well as a natural and easy-to-
use interactive environment. If you’re coming from an interpreted language such as
Python, Ruby, or JavaScript, you’ll feel right at home using GHCi. If you’re familiar with
compiled languages such as Java, C#, or C++, you’ll likely be surprised that you’re work-
ing with a compiled language when writing Haskell.

 

The following code is valid Python, Ruby, and JavaScript; see if you can
figure out what it does.
Listing 2.2 Confusing behavior in standard libraries
myList = [1,2,3]
myList.reverse()
newList = myList.reverse()
Now what do you expect the value of newList to be? Because this is a valid program in
Ruby, Python, and JavaScript, it seems reasonable to assume that the value of newList
should be the same. Here are the answers for all three languages:
Ruby -> [3,2,1]
Python -> None
JavaScript -> [1,2,3]

Three completely different answers for the exact same code in three languages! Python
and JavaScript both have side effects that occur when reverse is called. Because the side
effects of calling reverse are different for each language and aren’t made visible to the
programmer, both languages give different answers. The Ruby code here behaves like
Haskell, without side effects.

 

Languages such as Ruby, Python, and JavaScript use dynamic typing. In a dynamic type
system, all the decisions like the one we made with "hello" and 6 happen during run-
time. The benefit of dynamic typing for the programmer is a generally more flexible lan-
guage and no need to manually keep track of types. The danger of dynamic typing is
that errors happen only at runtime. For example, say you have the following expression
in Python:
def call_on_xmas():
"santa gets a "+10
This code will cause an error because Python requires 10 to be converted to a string
before adding it to the string literal. As you can guess by the function name, this func-
tion won’t be called until Christmas! If this mistake snuck into a production system, it
could mean a frustrating Christmas debugging a rare problem.

 

Haskell is a statically typed programming language, but it certainly doesn’t look like a
statically typed language in the examples you’ve seen so far. All of your variables and
functions have made no references to types at all. This is because Haskell makes heavy
use of type inference. The Haskell compiler is smart, and can figure out what types you’re
using based on the way the functions and variables are used.
Haskell’s type system is extremely powerful, and is at least as fundamental to making
Haskell unique as its adherence to pure functional programming.

 

In many programming languages, if you want to treat a literal number as a Double, you need to add a decimal to
it. In both Python and Ruby, 5/2 is 2 and 5/2.0 is 2.5. Haskell is both stricter and more
flexible. It’s stricter because Haskell never does the implicit type conversion that hap-
pens in Ruby and Python, and it’s more flexible because in Haskell literal numbers are
polymorphic: their type is determined from the compiler based on the way they’re used.

 

Originally, JavaScript wasn’t designed to do more than add a little flair to websites.
Therefore, unfortunate design flaws have made large, complex code bases difficult to
manage. One of the biggest flaws is that JavaScript has no implementation of name-
spaces or modules.

 

On top of this, JavaScript makes it extremely easy to
accidentally declare global variables.

 

You did everything right, but after calling libraryAdd, the variable c is now 30! This occurs
because there are no namespaces in JavaScript, so when libraryAdd assigns a value to c, it
keeps looking until it finds one or creates a new global variable. Unfortunately, var c is
what it finds. Unless you dig deep into someone else’s JavaScript code, you’ll never be
able to figure out this bug!

 

Prototype-based object-oriented languages, such as JavaScript, create instances of
objects by modifying a prototypical object, rather than using classes. Prototypes in Java-
Script are often a source of much confusion. Here you can see how cloning an object and
modifying it to create a new object is a natural result of using functional programming. In
Haskell, you can create new objects by modifying copies of old, existing ones.

 

At first glance, type classes are similar to interfaces in most object-oriented programming lan-
guages. A type class states which functions a type must support in the same way that an
interface specifies which methods a class must support. But type classes play a much
more important role in Haskell than interfaces do in languages such as Java and C#. The
major difference is that as you dive deeper into Haskell, you’ll see that type classes typi-
cally require you to think in increasingly more powerful forms of abstraction. In many
ways, type classes are the heart of Haskell programming.

 

Even if you prefer behavior-driven development,
popularized by Ruby’s RSpec, Haskell has an equivalent testing library, Hspec. (Hspec
isn’t covered here but should be straightforward to implement after you finish this unit.)

 

A common misconception is that object-oriented programming (OOP) and functional
programming somehow stand in opposition. In reality, this couldn’t be further from the
truth. Many functional programming languages support some form of object-oriented
programming, including Common Lisp, R, F#, OCaml, and Scala. In this unit, you
explored the idea that functions can be used to perform any computation. So it makes
perfect sense that by using the tools of functional programming, you can create a basic
object-oriented programming system.

 

This lesson introduces one of the most powerful aspects of Haskell: its robust type sys-
tem. The fundamentals of functional programming covered in the preceding lessons are
shared by all functional programming languages from Lisp to Scala. It’s Haskell’s type
system that sets it apart from other programming languages.

 

Languages such as Lisp and Scheme will return the empty list as
the result of calling head on an empty list, but Haskell’s type system doesn’t allow this
(because the empty list is usually a different type than values in the list itself).

 

One topic that we were unable to cover in this book is parallel and concurrent program-
ming in Haskell. If you’ve done any work with parallel programming in a language
such as C++, you know how tricky it can be to make sure state is maintained effectively
when you have asynchronous computations being called. A major benefit of Haskell’s
obsession with pure functional programming is that it’s much easier to parallelize Has-
kell code. A fantastic book by Simon Marlow, Parallel and Concurrent Programming in
Haskell (O’Reilly Media, 2013), gives this topic the full coverage it deserves.

 

The semantics are most often a lot closer to the problem than an imperative version, which makes it easier to verify that a function is correct. Furthermore Haskell doesn't allow side-effects, which leads to fewer bugs.

 

What makes my Haskell programs (almost) bug free?

The Unreasonable Effectiveness of Haskell

https://medium.com/pragmatic-programmers/the-unreasonable-effectiveness-of-haskell-48d92c2fe266

When we combine the type safety from using Haskell for our embedded language with the benefits of purity, then we can start to build unreasonably effective and safe languages. Combining stateless, pure functions without losing type information gives us the ability to safely grow the size of our programs. Choosing between local and distributed evaluation of our code means that we can scale down to individual workstations, or up to the size of an entire cluster as needed. Finally, fully managing access to resources lets us build safer, more secure, and less error-prone programs in our embedded language. When we combine all of these benefits we are able to build programs of truly exceptional quality.

OS: FreeBSD 13.3  WM: bspwm  Hardware: Intel 12600KF -- Kingston dual-channel CL36 @6200 -- Sapphire RX 7600 -- BIOSTAR B760MZ-E PRO -- Antec P6 -- Xilence XP550 -- ARCTIC i35 -- EVO 850 500GB

Link to comment
Share on other sites

Link to post
Share on other sites

3 hours ago, The Hope said:

What you often saw with Rust, Zig and Delphi in the past is that developers were often given a few months to learn it.

In the long run, that investment is usually positive depending on the goal you want to achieve.

But why they would need to learn it? The majority of game dev doesn't use that so you need a pre-existing company with a pre-existing self-developed engine that costs 50-100 million USD to then make AAA games that will also cost up to say 20-40 mil or MMORPG which will be even more expensive.

 

Didn't hear about such a game publisher. Ashes of Creation is Unreal, CDPR is also switching to Unreal. Blizzard has its own C/C++ stuff for WoW. Unity and Godot are there too. Mobile game dev definitely will not use snowflake software platforms because those gacha games rise and die too quickly.

 

And you will have to pay for a 2-3 month bootcamp to onboard developers aside from paying their salary just so they know your software stack. Experienced developers have more job offers than they can go through. They don't have to work for you.

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

3 hours ago, The Hope said:

think it could be very useful for Python and JS programmers to read a Haskell book that are filled with comparisons of programming languages

 

Haskell: https://justjoin.it/?keyword=haskell

Python: https://justjoin.it/?keyword=Python

JavaScript: https://justjoin.it/?keyword=javascript

 

Nobody cares about Haskell.

Link to comment
Share on other sites

Link to post
Share on other sites

16 hours ago, riklaunim said:

Didn't hear about such a game publisher. Ashes of Creation is Unreal, CDPR is also switching to Unreal. Blizzard has its own C/C++ stuff for WoW. Unity and Godot are there too. Mobile game dev definitely will not use snowflake software platforms because those gacha games rise and die too quickly.

 

And you will have to pay for a 2-3 month bootcamp to onboard developers aside from paying their salary just so they know your software stack. Experienced developers have more job offers than they can go through. They don't have to work for you.

 

Haskell: https://justjoin.it/?keyword=haskell

Python: https://justjoin.it/?keyword=Python

JavaScript: https://justjoin.it/?keyword=javascript

 

Nobody cares about Haskell.

My impression is that Haskell is something that continues to be learned by programmers, often just purely out of interest, for example, because it is well known that knowing Haskell makes you a better programmer.

 

If there are relatively few jobs in it currently it means that there are going to be a lot of people who know it well and prefer it, but can't use it in a job. Which specifically means that you're going to easily find people for Haskell jobs, if you're not too picky.

 

You currently only have a very limited number of languages that are really popular for game development, and they are all unsuitable.

-C++ is one of the most unproductive languages and has the most bugs of any language.

-JavaScript and TypeScript have the exact same problems, and on top of that has the fact that it is slower than Haskell, Java, Common Lisp, Nim, Scala, Zig, Delphi, etc.

-C# is unproductive and slow https://collin-smith.medium.com/benchmarking-java-vs-c-in-aws-lambda-5b5a1d9d9a10

-Lua is much slower than C#

-Python is slower than Lua

 

Haskell, Java, Common Lisp, Nim, Scala, Zig, Julia and Delphi are a total of eight languages (much) better suited to this task.

 

Time to market is one of the driving factors. Game development companies don’t have six years to come up with a product anymore. If you want to earn money and stay ahead of your opponents, you have to move quickly.

 

I am not the only person who thinks that the current tools in use are just the least optimal of all that exist.

https://dev.to/gurpreet2030/what-is-jai-programming-language-34g3#:~:text=Jai is a general-purpose programming,many programmers and game developers

Blow believes that many of the difficulties encountered when programming in C++ could have been avoided if the language design had prioritized programmer productivity and safety. Jai's syntax is inspired by C and C++, but with many modern features added to make programming easier.

 

In fact, the tools a person uses pretty much always have a strong impact on the results you can achieve. Think, for example, of those Indians who had to fight guns with bows and arrows. The current situation in the gaming industry is exactly the same.

OS: FreeBSD 13.3  WM: bspwm  Hardware: Intel 12600KF -- Kingston dual-channel CL36 @6200 -- Sapphire RX 7600 -- BIOSTAR B760MZ-E PRO -- Antec P6 -- Xilence XP550 -- ARCTIC i35 -- EVO 850 500GB

Link to comment
Share on other sites

Link to post
Share on other sites

On 9/26/2023 at 2:48 PM, The Hope said:

This is a mistake I have seen countless times, even among "experienced" programmers.

C++ and C are not low level languages, these are by definition high level languages.

https://en.wikipedia.org/wiki/High-level_programming_language

 

Quote

The amount of abstraction provided defines how "high-level" a programming language is.[1]

C(++) is still quite low level compared to something like Python. I don't find the original idea of calling everything that is not assembly a high level language super appropriate anymore in the current day, but I can concede and call it a lower level language.

 

On 9/26/2023 at 2:48 PM, The Hope said:

REBOL was still much easier to learn and much more productive than Python. For scripts it was also faster than Python. And it also made supporting old code improbably simple. You also didn't need libraries because it was so productive that you could write the libraries yourself and still have your app ready faster than if you used Python and already available libraries. REBOL is a powerful programming language that children as young as 12 can easily learn.

We can conclude that design and features and ease of learning a language in the past usually did not determine whether the language became popular or not.

"You don't need libraries because you could write the libaries yourself" is a bad argument to me, because you would be duplicating effort, wasting time you could have spent on your actual program or introduce yet another point of failure where you can make mistakes. I have seen this "libraries are bad" kind of stuff too often, posed as if you're a bad programmer if you didn't write every line yourself. They exist precisely to avoid all that.

 

If I calculate a dot product with NumPy it calls a BLAS routine or whatever optimised C library you have linked to. It is code that is tried and tested, and likely optimised better than I, or even the majority of programmers, can cook up on their own quick enough to make sense rewriting. There is little need to reinvent the wheel unless you need more optimal routines, or finding them is your goal.

On 9/26/2023 at 2:48 PM, The Hope said:

"Supposedly" is a word you can use to question everything I say. I will be very honest, if there is a thread in my life it is that in discussions with other persons (including the most educated and authoritarian persons) the statements of other persons were usually disproved by reality not much later. I don't actually know anyone who can claim to have made less erroneous statements on average.

I say supposedly because I can't find any UE5 level engine written in Haskell, nor did you present one. You also fall in that same group of persons that can be wrong. My point though, was that someone will have to take the lead and demonstrate it to convince the status quo to change, and that it will likley see plenty of roadbumps on its own at first at least.

On 9/26/2023 at 2:48 PM, The Hope said:

You have the people using JavaScript and it is the most popular programming language. If you go and ask people with 6 years of experience in JavaScipt if they feel that they are good masters of JS a lot of people are going to say they are. If you have experience of 2 years with Haskell you are less likely to claim to be a master. You will feel more insecure with the language. But if you present a problem to the insecure Haskell programmers with two years experience you will find that they solve the problem faster than the JS programmers with six years of experience and a lot of confidence.

And is that because one is "simply better" or because you are posing a problem that was not type of problems one was designed for. If that JS programmer is a web designer and you ask them to solve a physics problem, or if your Haskell programmer is a physicist and you askt hem to implement some web feature. Claiming to have mastered a language comes down to the individual in my experience. Every language has their elitists and (over)confident practitioners.

On 9/26/2023 at 2:48 PM, The Hope said:

It's also clear that you haven't read a single book that deals with Haskell. Since these Haskell courses often compare to other programming languages in terms of properties different programming languages and ways to solve problems. You can say that Haskell courses in this sense not only deal with Haskell, but also explain the many situations in which domains Python, JS, Ruby, C, PHP and Java have the honor of exhibiting the least intelligent design of all programming languages.

 

I think it could be very useful for Python and JS programmers to read a Haskell book that are filled with comparisons of programming languages. I'll give some quotes out of my Haskell books so you can understand why programming languages affect the quality of programs.

I've dabbled briefly in Haskell to check it out, but dropped it since too much of what I need(ed) was not available for it and it isn't used in general in my direct environment, so there was little incentive.

On 9/26/2023 at 2:48 PM, The Hope said:

The following code is valid Python, Ruby, and JavaScript; see if you can
figure out what it does.
Listing 2.2 Confusing behavior in standard libraries
myList = [1,2,3]
myList.reverse()
newList = myList.reverse()
Now what do you expect the value of newList to be? Because this is a valid program in
Ruby, Python, and JavaScript, it seems reasonable to assume that the value of newList
should be the same. Here are the answers for all three languages:
Ruby -> [3,2,1]
Python -> None
JavaScript -> [1,2,3]

Three completely different answers for the exact same code in three languages! Python
and JavaScript both have side effects that occur when reverse is called. Because the side
effects of calling reverse are different for each language and aren’t made visible to the
programmer, both languages give different answers. The Ruby code here behaves like
Haskell, without side effects.

"it seems reasonable to assume" well that is part of the problem isn't it. It might seem that way, but it isn't. I would classify this  more as user-error by assuming that a language works a certain way or poor documentation of the language/library for not making it clear when something is in place.  Out of those examples JS is the most "confusing" to me, but mostly because I come from a non-JS perspective.  The others I only find "confusing" if I assume they should work the same. Ruby apparently returns a reversed copy of the input list. Makes sense. Python returns nothing. The operation is in place and thus it also makes sense to return nothing.

On 9/26/2023 at 2:48 PM, The Hope said:

Languages such as Ruby, Python, and JavaScript use dynamic typing. In a dynamic type
system, all the decisions like the one we made with "hello" and 6 happen during run-
time. The benefit of dynamic typing for the programmer is a generally more flexible lan-
guage and no need to manually keep track of types. The danger of dynamic typing is
that errors happen only at runtime. For example, say you have the following expression
in Python:
def call_on_xmas():
"santa gets a "+10
This code will cause an error because Python requires 10 to be converted to a string
before adding it to the string literal. As you can guess by the function name, this func-
tion won’t be called until Christmas! If this mistake snuck into a production system, it
could mean a frustrating Christmas debugging a rare problem.

 

Haskell is a statically typed programming language, but it certainly doesn’t look like a
statically typed language in the examples you’ve seen so far. All of your variables and
functions have made no references to types at all. This is because Haskell makes heavy
use of type inference. The Haskell compiler is smart, and can figure out what types you’re
using based on the way the functions and variables are used.
Haskell’s type system is extremely powerful, and is at least as fundamental to making
Haskell unique as its adherence to pure functional programming.

Yep, those kind of things happen. I like static typing for that reason as well.

On 9/26/2023 at 2:48 PM, The Hope said:

In many programming languages, if you want to treat a literal number as a Double, you need to add a decimal to
it. In both Python and Ruby, 5/2 is 2 and 5/2.0 is 2.5. Haskell is both stricter and more
flexible. It’s stricter because Haskell never does the implicit type conversion that hap-
pens in Ruby and Python, and it’s more flexible because in Haskell literal numbers are
polymorphic: their type is determined from the compiler based on the way they’re used.

That division distinction was indeed very annoying in Python 2, but keep in mind that this hasn't been true for well over a decade since 3.0 released.

 

I'm sure Haskell is a fine language. I'm also trying my hand on some Rust just for the sake of exploring new things, but there is more to languages than something just being fast or great for other reasons such as existing code bases and expertise. Calling anyone who doesn't use your favourite language dumb also doesn't help. It's a slow process that takes time (and money).

Crystal: CPU: i7 7700K | Motherboard: Asus ROG Strix Z270F | RAM: GSkill 16 GB@3200MHz | GPU: Nvidia GTX 1080 Ti FE | Case: Corsair Crystal 570X (black) | PSU: EVGA Supernova G2 1000W | Monitor: Asus VG248QE 24"

Laptop: Dell XPS 13 9370 | CPU: i5 10510U | RAM: 16 GB

Server: CPU: i5 4690k | RAM: 16 GB | Case: Corsair Graphite 760T White | Storage: 19 TB

Link to comment
Share on other sites

Link to post
Share on other sites

  • 1 month later...
On 9/27/2023 at 7:47 PM, tikker said:

I say supposedly because I can't find any UE5 level engine written in Haskell, nor did you present one. You also fall in that same group of persons that can be wrong. My point though, was that someone will have to take the lead and demonstrate it to convince the status quo to change, and that it will likley see plenty of roadbumps on its own at first at least.

There is a myth that Lisp, Haskell (and Prolog) are "special-purpose" languages, while languages such as Pascal, C++, Rust and C are "general purpose". According to Norvig , just the reverse is true. Pascal, Rust and C are special-purpose languages for manipulating the registers and memory of a von Neumann-style computer. The majority of their syntax is devoted to arithmetic and Boolean expressions, and while they provide some facilities for forming data structures, they have poor mechanisms for procedural abstraction or control abstraction. In addition, they are designed for the state-oriented style of programming: computing a result by changing the value of variable through assignment statements.

 

One of the nice things about Prolog is that It has a simple and uniform syntax with clear semantics. To get started with Prolog, you do not need a background in Computer Science. The excellent book “Thinking as Computation – A First Course” is based on a course taught at the University of Toronto for first-year undergraduate students majoring in sociology, criminology, economics, political science, etc.

 

You can use Prolog a lot in game design and game analysis.

A constraint logic system is the best for describing arbitrary game rules and mechanics.

 

My observation is that many 'game programmers' who are supposed to produce state-of-the-art code were not taught the most useful languages in school to know for the professional fields where they will work. If you test the knowledge and logic of many professors in higher education you are also going to find that it is often insufficient to achieve positive results. Here you see where it falters.

OS: FreeBSD 13.3  WM: bspwm  Hardware: Intel 12600KF -- Kingston dual-channel CL36 @6200 -- Sapphire RX 7600 -- BIOSTAR B760MZ-E PRO -- Antec P6 -- Xilence XP550 -- ARCTIC i35 -- EVO 850 500GB

Link to comment
Share on other sites

Link to post
Share on other sites

My bros, give it literally 5 years according to the Stable Diffusion CEO. I cant wait until compilers are entirely replaced with a library of listed hardware perfectly optimized machine code and the only people left employed in this space are at John Carmacks level. Talk about disruptive technology.

#CloneLinus

Link to comment
Share on other sites

Link to post
Share on other sites

On 9/25/2023 at 12:09 PM, riklaunim said:

 

Same with mobile apps - simple and cheaper apps are more likely to be pushed to Flutter or React Native developers than to mobile native developers. For one the budget is lower and second, there are much fewer mobile "native" developers so they can only do a small subset of projects.

That's odd, most mobile apps are made with the native SDK though. 

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

  • 3 weeks later...

Swift is based on Xcode

Java is a more native older but comparable thread safe interpreter than Python…

in the context of games engines, Unity is more C based languages (vector programming etc)?

 

in context of mobile architecture… the ASM instruction sets differs greatly

 

intel (i*86) vs AMD (x64 extension)

shouldn’t be confused for comparing with

ARM (in layman’s terms, shortcuts most of the instructions to run faster when clocking but can do more complicated operations “more efficiently/quicker” as a result but not necessarily to the same precision)

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×