What programming languages/tools should I learn?
Posted by ArtLover357@reddit | learnprogramming | View on Reddit | 32 comments
I'd like to make a game like Bitlife, preferably being able to run cross platform for Windows, Mac, Android and iOD
kcl97@reddit
When people try to port a program from platform A to platform B, especially a complex program like a game, the issue usually is not the language. The issue is the libraries the game needs.
Unless you plan to write everything from scratch like how to make the speaker beep or play music, you will need a library.
Your choice of library determines which language you use. However, for games, you should choose something as close to the hardware as possible so I would recommend C/C++ with SDL2 (Simple DirectMedia Layer) library.
Another option is to publish your game through Steam onto various platforms.. I don't know how it works, so I can't say much. The only thing I can say is that if you use their tool and publish on their platform, it is theirs. Theirs as in they have the copyright or whatever right to your code. Just like a book publisher has the copyright to an author they commissioned to write a book or a music executive paying a musician to create some score: They own your work, period. They can even publish it on your behalf without you knowing about it, thus paying not a dime to you, just like the book publishers and music execs. Also, your game will naturally be slower because it will have to run a memory intensive malware to help them snoop on their customers to collect all sorts of metric including chat logs with their friend because AI firms will pay for these things to train their AI.
Obviously this applies to any software published through any x-store. The one exception is the PlayStore on Google's Android but it has nothing to do with Google being benevolent. It has everything to do with the fact that lying at the bottom of Android and hence PlayStore is the Linux kernel. However, it will also steal your copyright from you, but you can get it back if you choose to and it is very easy, you just need to add a license to your source code files (all of them not just one file) that stipulates your license. You can put that license anywhere in each file, people typically put it all the way at the top.
If you do put a license in each file, then it becomes safe to publish on Steam too because Steam's parent company Valve was dumb enough to allow their fame to be published on Linux, effectively committed a suicide of their plan of taking over the gaming world. Of course any game distributed by Steam will still contain malware but you own your source code, you own the rights that you stipulate in your license, just make sure to write it like you would with a rental agreement, get a lawyer to help you. Or you can just leave it empty for now and add it later or even just add GPL from FSF outright since they have instructions on how to do it properly with just a short blurb that says look at the GPL document for full details and that thing is long and convoluted to make sure you get to keep your code and share it until the day you say F-it, its all mine, My----- ... Pres--cious
Chrykal@reddit
What is this rubbish, publishing through steam does not give them access to your source code, let alone ownership of it, and that has nothing to do with Linux. Nor is it necessary that he make his code open source.
You probably should have stopped talking at "I don't know how it works, so I can't say much."
kcl97@reddit
If you ever worked in the music industry or television industry you would know how Steam works. I am pretty sure plenty of developers have regret about publishing on Steam right about now because these firms are all having money trouble now which means they will steal every dime from the developers by stop paying them.
I have already outlined how a GPL license protects a creator's behind. GPL's copyleft essentially infects all software that comes into contact with it. People interested should get their lawyer to read my posts. Search for copyright-with-copyleft-sensibility and work the logic in reverse.
Chrykal@reddit
If you'd ever read the Steam Distribution Agreement you would know what you're talking about. It's not too hard to do, although you do need to sign an NDA. I can reveal though, that you definitely do not lose ownership of your IP, and you do not have to give the source code to Steam.
kcl97@reddit
How about they show you the secret sauce after you signed your NDA? Because then you are in a Catch-22.
Chrykal@reddit
You don't have to agree to the SDA because you agreed to the NDA, and some things can still be talked about after signing the NDA. I'll repeat that I guarantee that what I have said so far is the current state of affairs when distributing through Steam, although I am obviously also bound by the NDA and can't give more details on a lot of the SDA.
kcl97@reddit
Do tell me those details because it sounds like you are working for Steam and know how it actually works. It is fine, I understand the business The problem is not Steam itself or people working for Steam, it is the investors who just can never be happy with earning enough but demand increasing earning quarter after quarter.
If I were you I would start looking for a new job soon because the Fed is coming down on these tech-firms hard for fraud, just like with Enron, for financial engineering. Time for you to start a new Steam by taking the Steam source code with you. It is not stealing, it is payback.
Chrykal@reddit
No, I don't work for Steam.
I am developing a game though, so I did my due diligence and checked out what the deal was with distributing on Steam as well as other platforms.
I'm done trying to convince you of anything though, as I said, you yourself can check the SDA and find out exactly what is in it. I fear though that you are more interested in shouting about conspiracies than learning anything, so I'm muting notifications on this convo now.
TTFN
kcl97@reddit
Since the user has muted. I will just point out something for the people who followed the thread this far. When people tell you, "I don't work for X" and yet seems so vested in supporting X, they are working for X. Of course, I wouldn't know, it is just a hunch. It is like how some people like to say "I am not a racist."
nowTheresNoWay@reddit
Just learn everything. Problem solved 😎
Kind-Weight8675@reddit
😎
SharkSymphony@reddit
The typical approach these days is to pick a game engine to build on that will help you handle all the difficulties of cross-platform development. Unity will do, but is probably way overkill. Godot might be more focused to your needs. Lighter-weight frameworks exist that you might be able to get a quicker start with, such as Löve.
Generally, the choice of engine will determine the programming language you learn. In the cases above that would be C#, GDScript, or Lua respectively.
If you're going to focus on a text interface, you might also look into whether a game engine specifically targeting visual novels is what you want. Ren'Py is an example of that approach, and it mostly uses a low-code domain-specific scripting language on top of Python.
ArtLover357@reddit (OP)
RenPy sounds interesting. Do you think it's capable of creating a Bitlife clone?
vu47@reddit
I just checked out BitLife since I knew nothing about it.
I think you could use Ren'Py to make a clone, but it doesn't seem like the right tool to me. I would probably recommend looking at Godot, but even that seems like it might be overkill from what I can tell. Still, unless you want to write your own engine (a fun experience, but it will likely take you years, especially if you don't already know much programming), it's a good place to start.
I did some hunting around for you, and Unity was recommended widely. It's more complicated than Godot but may be a good place to go. I didn't look at this is detail, but here's a YouTube video series (apparently - I just watched a tiny bit of it) that goes exactly into the topic you're interested in:
https://www.youtube.com/watch?v=CjFdkwZ7Gy0
ArtLover357@reddit (OP)
Thanks a lot! I think I'll learn to use Unity then!
Chrykal@reddit
I would actually advise against unity, in my experience it can be a bit kludgy, I don't think their was a cohesive plan for all the features they jammed into it.
Also they had a license scandal recently, which I can't help but feel was triggered by the amount of money they've wasted the last few years. Not trusting that they'll still be around to update in a few years, I moved to Godot and have found it to be a much better experience.
vu47@reddit
Best of luck! I hope it goes well and you're able to realize your goal! Stick with it: it might be frustrating at times, but with some perseverance, I'm willing to bet you can do it. Don't be afraid to ask questions to reddit groups: just make sure you ask in the right places, because otherwise you can get some snarky responses.
Merry-Lane@reddit
Unity or react native
Chrykal@reddit
Unity has a ton of assets you can buy, but if that's not your thing I wouldn't even say it's worth it over the many other game engine options out there. Their lack of a plan for how and what features to add is starting to show at this point.
That scandal with the licenses want for nothing either, unity are struggling with the amount of money they've wasted, I'd not want to invest time in learning something that big that may not be getting updates in a few years.
Dark_Souls_VII@reddit
SQL. For projects like this I would recommend SQLite.
Illustrious_Prompt20@reddit
You are evil lmao
Dark_Souls_VII@reddit
Why? Knowing how to database is really helpful. And with SQLite he can just embed it without additional dependencies.
vu47@reddit
Knowing SQL is obviously an important skill for most programmers to have, and SQLite is perfect for some projects, but for making games (unless they're online), I'd say it's a skill that isn't critical to have, and if they're online, you definitely need a much more robust DB system than SQLite.
OP: In all seriousness, check out Godot. It's cross-platform gaming engine (dunno about Android and iOS - I'm not a phone gamer), has a simple built-in language based on Python but even more simple (though offers other choices), and is easy to learn.
vu47@reddit
Too basic. I'd say use Excel spreadsheets, or if you're really serious about it, master CSV files.
ArtLover357@reddit (OP)
So you're suggesting me to save player's decisions and outcomes using a database?
PlanZSmiles@reddit
Databases are used often for video games, just depends on the features such as player inventory, mmorpgs for example saving player world position for loading them on next login.
Dark_Souls_VII@reddit
I am not a game developer but you will definitely end up with quite some data for the player. If your player has an inventory for example how do you plan to represent that in a persistent way? SQL gives you a platform independent standard for stuff like that. SQLite as an embedded DBMS is used pretty much everywhere. I don’t suggest to use it but it doesn’t hurt to look at it.
cheezballs@reddit
Guys, its time to stop pulling punches with posts like this. There are thousands of these a week.
RamaMikhailNoMushrum@reddit
You need to learn programming language based on what your trying to build and thats easy when u understand what ur goal is and what each language does and how computers work( all can be summarzied before in depth study)
Comprehensive_Mud803@reddit
First of all learn how to program. Then you can think more the language/framework combination you might want to use.
Illustrious_Prompt20@reddit
Sounds like a simple game, so Go for python. Or c# If you want more Power
grantrules@reddit
Look into the Unity engine