Charas-Project

Off-Topic => All of all! => Topic started by: Prpl_Mage on August 07, 2015, 08:48:46 PM

Title: Software for some c++ and c# / anything else?
Post by: Prpl_Mage on August 07, 2015, 08:48:46 PM
Seeing some of DB's code made me want to get into the whole programming thing again. Problem is that it has been over 5 years since I did anything outside Gamemaker or RPGM. So what software is "hip" these days? And should I even bother with refreshing my c++ and c# knowledge or just move onto something newer?

I suppose I won't make anything huge with this, just some hobby tinkering with compiling programs that can execute simple things like mathematical formulas, maybe some quizes and eventually I might move onto relying completely on pictures for everything.
Title: Re: Software for some c++ and c# / anything else?
Post by: Momeka on August 08, 2015, 08:27:21 AM
Well, Unity3D got C# scripting. If you want pure coding I either go with Otter2D (http://otter2d.com/)  or Monogames (http://www.monogame.net/). They are both C# and should be pretty easy to get started in. Haven't actually used any of them but they seem to be pretty user friendly and got some communities around them.
Title: Re: Software for some c++ and c# / anything else?
Post by: zuhane on August 08, 2015, 11:23:36 AM
I do all my programming in XNA, as it's virtually C# but with all the under-the-bonnet content pipelining crap done and out the way. It also comes
with loads of simple libraries of things that programmers would use, such as geometry, maths, shaders, etc. It's also worth mentioning that XNA was
discontinued by Microsoft and no longer gets support. This doesn't mean that it's no longer usable, though, and many indie titles are still being created
for PC using it. It's also worth noting that all the under-the-bonnet code was created by Microsoft-endorsed employees, so it's not exactly like re-writing the whole engine yourself will make it more optimized. The guys working on this were clearly very good at what they did.

As far as I know, Monogame is pretty much an open-source, better version of XNA which supports multiple platforms, and the syntax of the code
is identical to XNA, so whatever you've already created can be ported at a later date.

Anyway, XNA gets lots of stick because it has many people rushing out unfinished/messy products, which probably leads to a generalized and uneducated
view of the framework as a whole. It's a brilliant framework and is only limited by your imagination. It takes care of all your garbage collection and most of
the deep-down stuff, letting you get straight on with building a game engine. The only time I'd recommend against it is if you were working on something
commercial and AAA-standard using next-gen graphics, as most devs want to squeeze every last drop out of modern GPUs to make a terrorist's
facial hair ever so slightly shinier. But where's the fun in that? Indie developers are here to make games - not to take orders and do stomach-churning, thankless work!

C++ is generally EXTREEEEMELY overkill for most 2D games (unless you're a total C++ wizard).
Title: Re: Software for some c++ and c# / anything else?
Post by: DragonBlaze on August 09, 2015, 08:49:59 AM
First off, don't use C++. While it was a good language, C# is far superior in most cases. 

For what what language is best to use now a days is very hard to say. Depending on what the actual use case is, there are a lot of options. If you're looking for the languages that are hip, right now C#, JavaScript, Java, and Swift are your options. If you're interested in game development XNA, like Zuhane mentioned, is good and uses C#. It takes care of a lot of the core game/graphics for you, but you still need to be pretty good with code to make anything. On the other hand Unity will take care of a lot of the basic game elements for you. Unity uses scripts that are made with C#, JavaSctipt, and another language I forgot, but elements can be dragged and dropped into the game, and a lot of other game mechanics are built in to a further extent than XNA. There's also the option of making 3D web games with WebGL and ThreeJS. With WebGL you can make 2D and 3D games run directly in a web browser without flash(I'm working on a WebGL project myself). WebGL by itself is very difficult to work with, but ThreeJS is a nice wrapper to native WebGL that takes care of most of the difficult stuff. To think of it, I think the new version of Unity can export games to WebGL and allows your games to be played in web browsers. Swift is only for iOS development, but from what I've seen so far is really nice. Java is a universal language, but it wouldn't be my top choice for anything other than Android development.

For my day to day work as a software engineer, I kind of work on everything (I've complained to my manager multiple times about this), but I listed what I use and recommend below. When possible, I recommend using a JetBrains IDE as they are awesome and make my work 10x more easy. I cringe when I have to make an iOS app with XCode because XCode is so terrible compared to an IDE made by JetBrains.

For iOS:
Use: Objective C
Recommend: Swift
IDE: XCode
Objective C is the legacy language of the iOS world, and XCode is the only editor that can really work with it well. Most existing jobs and apps will still use Objective C, but for new apps, you should learn and use Swift. Swift looks more like Javascript, has a few usage advantages over Objective C, but looks much nicer than Objective C and is easier to work with.

For Android:
Use/Recommend: Java
IDE: Android Studio
For Android development you don't have much of a choice, you need to use Java. Technically you can use C# and xamarin and somehow port your project to Android, but I haven't tried it and I don't know how well it actually works. For an IDE, definitely use Android Studio, it's free and its JetBrains.

For Websites
Use/Recommend: JavaScript with AngularJS and BootstrapJs
IDE: Webstorm
You have lots and lots of options with web development. I prefer AngularJS over any other library because it allows you to hook up html with javascript very cleanly and promotes something known as MVC (model view controller), which is very important in any sort of professional project. Bootstrap is a CSS framework that makes responsive websites (websites that can scale to any size smoothly and look nice) very easy. Webstorm is a JetBrains web editor that I love.

For Servers (web services)
Use: Java with Spring and Hibernate
Recommend: JavaScript with NodeJS, ExpressJS, and MongoDB
IDE: IntelliJ or Webstorm
There are countless options for developing a web service. At work, we use Java with Hibernate (the tool to save and retrieve object from a database) and Spring (allows for APIs and a bunch of other neat things in a Java application). Personally I don't think Java is the best option. For ease of use, using NodeJS and MongoDB is the best option because it allows for your entire stack, frontend, backend, and database, to use javascript. You don't need to worry about converting sql to java, and then java to json/javascrpt. Every piece uses the same language, javascript, and it allows you to use common tool files on both the front end and back end. Recently I've been looking into various options with Amazon Web Services, and Amazon Gateway API, Lambda, and DynamoDB may be a very powerful and easy option. It is usually very painful to make a web service that will scale from one person to millions of people in a cost effective manor, but using Amazon API gateway, Lambda, and DynamoDB will take care of all of that for you,

For Desktop Applications
Use/Recommend: C#
IDE: Visual Studio
To be honest, I do very little desktop development. But I like visual studio, and there are very few situations where you should use C++ instead of C#. C# takes care of memory management for you and has a lot of other nice features. Unless you have a really good reason to use C++ over C#, don't use it. There is also a JetBrains IDE for C#, but I haven't tried it yet.


If anyone would like help or advice with programming, feel free to reach out to me. I'm a senior software engineer so hopefully I can help. Plus I've taken advance graphics and game development courses in collage, so I'm familiar with most of the algorithms needed in game development.
Title: Re: Software for some c++ and c# / anything else?
Post by: GaryCXJk on August 09, 2015, 09:15:34 PM
I wouldn't exactly say C# is superior, it's still a language that primarily is made for Windows devices and operating systems. While Mono is kind of similar to the point of it being basically easy to port to other operating systems with only minor adjustments, there's a reason many public libraries are written in C++, as that's generally a bit more cross-platform compatible.

That and if you know C++ you essentially know C#, but the other way around isn't necessarily true, as C++ does require you to do most of the memory management yourself.
Title: Re: Software for some c++ and c# / anything else?
Post by: DragonBlaze on August 10, 2015, 01:23:44 AM
Yeah superior probably wasn't the right word. I think it's more that C# is a bit more user friendly, especially if you have more of a Java background.
Title: Re: Software for some c++ and c# / anything else?
Post by: zuhane on August 10, 2015, 09:40:35 PM
Sorry, I'm just assuming you want to make games for PC :p

RPG Maker is like having a rented house and being told you can decorate it.
C# is lovely though. C# is kind of like having a bag of work tools to build a house. The tools are efficient and will have to do.
C++ is like having a bag of molecules, and you have to arrange them into more specific tools, then build a house once you've made the tools.

Weird analogy but whatever.
Title: Re: Software for some c++ and c# / anything else?
Post by: Prpl_Mage on August 12, 2015, 05:37:40 PM
These are all some great tips. I'll check them out and see what i like the most.