• What are you working on?
    5,004 replies, posted
Unless they're in the middle of a Java project, obviously. [editline]18th May 2016[/editline] AUTOMARGE
[QUOTE=geel9;50345486]I'm not talking about runtime speed, I'm talking about actually programming in it.[/QUOTE] Interesting. How does programming Java compare vs. C++ vs. C#? [editline]18th May 2016[/editline] [QUOTE=Nigey Nige;50345484]I loved developing in Java, but I had three main problems with it (just my experiences though, pinch of salt): 1) For lots of reasons, the average quality of online Java tutorials is pretty poor. Stanford's Engineering Everywhere course was the very best I could find, but it was limited in that it wasn't really designed for online learning. (Indebted to it though for giving me my first real start in programming.) 2) Finding an engine/library to use was difficult, and the learning paths for Java programmers are treacherous because of the low standard of tutorials. I was constantly running into half-finished documentation and indecipherable forum threads from developers 3) Deployment. I can't remember who but I vividly remember someone on this forum saying "Java: proving that 'cross-platform' means 'only works on one machine' since 1995". My inexperience might have been the reason I always struggled with deployment, but the lack of accessible engines and tutorials certainly didn't help. I never had issue with the automatic garbage collection or things like that. 'Java is slow' might be broadly true, but I doubt the actual reasons for it being slow affect more than 5% of users. I'd recommend anyone doing game development to switch from Java to C#. Can't think of any reason not to.[/QUOTE] I'm not against C#, I just don't feel like putting the effort into learning it, and I want the finished product to work out of the box on Linux and OSX, and I don't know about how Mono works. Is Mono sort of like the JVM, or does Mono compile to native code? Also can you cross-compile to OSX with C#?
[QUOTE=Topgamer7;50316782]A change in job expectations should be a negotiation, ask for a raise and a title change. I'd suggest C# over VB. These days both utilize the same framework (.NET). However C# has garnered more popularity. For sql, there is still free sql hosting out there, but most of its shit. You're better off paying for hosting at a cheap rate. Or hosting the server internally (which is what I'd recommend). I'd also recommend you stay away from MySQL. Choose PostgreSql (can host free by yourself), or Microsoft SQL Server.[/QUOTE] I'm not really worried about the money or job title aspect. It's more that it's become an expectation instead of just something I do to help out our team. As far as using VB goes, I only chose it because since I've been doing a LOT of VBA (because Excel), and I figured it would be easier for me to jump right in with since it's somewhat similar. However, I find myself having to research VB as I'm trying to do things, so I might as well learn a better language. It's not really a big deal. And I also decided to use Microsoft Azure for sql hosting, since it's cheap and I can cancel and resubscribe any time I want. This project isn't really intended to be implemented at work, although if it comes out great I may see if they want to. It's more just for my learning, and something to put in my portfolio.
[QUOTE=proboardslol;50345502]Interesting. How does programming Java compare vs. C++ vs. C#? [editline]18th May 2016[/editline] I'm not against C#, I just don't feel like putting the effort into learning it, and I want the finished product to work out of the box on Linux and OSX, and I don't know about how Mono works. Is Mono sort of like the JVM, or does Mono compile to native code? Also can you cross-compile to OSX with C#?[/QUOTE] It just [b]feels[/b] very clunky and slow to program, as compared to C# (my language of choice). Perhaps it's the IDEs that are all awful, perhaps it's the verbosity of the syntax, perhaps it's some other low-level thing that I can't identify...but it just feels really clunky, slow, and annoying to program in Java. It feels like going through bureaucracy every time you want to do something.
[QUOTE=geel9;50345564]It just [b]feels[/b] very clunky and slow to program, as compared to C# (my language of choice). Perhaps it's the IDEs that are all awful, perhaps it's the verbosity of the syntax, perhaps it's some other low-level thing that I can't identify...but it just feels really clunky, slow, and annoying to program in Java. It feels like going through bureaucracy every time you want to do something.[/QUOTE] For me it's the IDE's, because I actually prefer Java over C++, but I have Visual Studio for C# and C++, and really nothing for Java. There's just nothing out there like Visual Studio imo.
[QUOTE=geel9;50345564]It just [b]feels[/b] very clunky and slow to program, as compared to C# (my language of choice). Perhaps it's the IDEs that are all awful, perhaps it's the verbosity of the syntax, perhaps it's some other low-level thing that I can't identify...but it just feels really clunky, slow, and annoying to program in Java. It feels like going through bureaucracy every time you want to do something.[/QUOTE] I can understand that, in a way. I think it may be in part because Java is one of the universal beginners languages and so you could many hundreds of volumes of encyclopedias with all the bad code and tutorials out there to compare to. I, likewise, dislike the IDEs like Eclipse and Netbeans, so I compile from the command line and edit in Vim, which makes it feel a lot more like native code to me. Also, Java's JVM is sort of always in your face, for the most part, letting you know it's a bytecode/semi-interpretted language while C#, for the most part, appears to compile to native code and runs standalone (even though, from what I understand, it compiles to bytecode and runs through CLR, which is sort of invisible to the user).
Unity's WebGL is surprisingly good. There a few little discrepancies between browsers but overall it's been painless. [t]http://i.imgur.com/vt7BY8V.png[/t] The game behind this splash screen releases June 27th and I can share the work involved then :)
[QUOTE=geel9;50345402]Java, to me, is just really....clunky.[/QUOTE] Maybe its just my way of thinking but when I write Java I feel like im being less productive or that I need to write more code than in say C# even though the 2 are pretty much the same dialect
[QUOTE=proboardslol;50345502]Interesting. How does programming Java compare vs. C++ vs. C#?[/QUOTE] It's very similar, but you usually have to type a lot less in C#. You can do the same things, but with less code since C# has a few additional features over Java. The standard library is better too (at least in my experience), so unless you want to make games you usually don't need additional middleware. There are a lot of libraries available and many are searchable from VS through [URL="https://www.nuget.org/"]NuGet[/URL] (which is bundled with the installer). You can call native C code directly. The CLR supports custom value types. C# supports (limited) operator overloading. C# has [I]var[/I], so you don't have to explicitly type your variables. You can define properties with getter and/or setter in a way that's not messy. Generics don't use [I]Object[/I] behind the scenes, so they behave a little differently (better). C# and the CLR have [I]way[/I] better reflection than Java (afaik), so if you want to do really obscure meta-programming, you can do that platform-independently. [QUOTE]I'm not against C#, I just don't feel like putting the effort into learning it, and I want the finished product to work out of the box on Linux and OSX, and I don't know about how Mono works. Is Mono sort of like the JVM, or does Mono compile to native code? Also can you cross-compile to OSX with C#?[/QUOTE] Both the .NET and Mono (both are CLR implementations) JIT the platform-independent executable format, much like the JVM. In my experience they're faster, but then again it seems more like Java programs just tend to be written in a way that makes them slow (meaning I've used two where that isn't the case so far). .NET also supports mixed-mode assemblies but Mono doesn't (meaning VC++ compiled without /clr:pure won't run on Unix systems). Otherwise... it's pretty easy to create mixed-language solutions for the CLR, so you can have one assembly written in F# and one in C# and one in some kind of Python or whatever, and they can call into each other and share classes. You can also compile multiple languages into a single assembly, but that's a bit tricky to do from VS. If you write your code properly, one assembly will run on Windows (.NET or Mono) and also both Unix and OSX (Mono). It's normally unnecessary to recompile it, unless you have native dependencies that have API mismatches (and even then you can figure that out at runtime, [I]technically[/I] speaking). You may have to use an older framework version, but you can still use the newest language features since the CIL code in the executables never changed afaik. There's an ongoing effort to modularise and open-source the base framework and runtime to make it platform-independent: [URL="https://github.com/dotnet/coreclr"]CoreCLR on GitHub[/URL] It's not [I]quite[/I] there yet, but once it is, CLR applications should work equally well on the platforms it targets (minus the Windows-specific stuff like WPF, but there are alternatives like [URL="https://www.xamarin.com/forms"]Xamarin Forms[/URL] which at least looks like a decent replacement). Most game frameworks are cross-platform anyway though. You can also target iOS and Android using [URL="https://store.xamarin.com/"]Xamarin[/URL], which Microsoft recently bought and made freely available for small teams. That's about it. (There's probably more, but these are the main points that come to mind.)
[QUOTE=proboardslol;50345599]I can understand that, in a way. I think it may be in part because Java is one of the universal beginners languages and so you could many hundreds of volumes of encyclopedias with all the bad code and tutorials out there to compare to. I, likewise, dislike the IDEs like Eclipse and Netbeans, so I compile from the command line and edit in Vim, which makes it feel a lot more like native code to me. Also, Java's JVM is sort of always in your face, for the most part, letting you know it's a bytecode/semi-interpretted language while C#, for the most part, appears to compile to native code and runs standalone (even though, from what I understand, it compiles to bytecode and runs through CLR, which is sort of invisible to the user).[/QUOTE] When I wrote C# I thought you simply couldn't access private members of an object. Only public ones appeared in the autocomplete list so I just assumed that if you wrote anything else you'd get an error about an unknown property. Only when I accidentally wrote the full name of some property lowercase did I see that there's an actual error telling you it's a private member. Kind of shows how much VS and C# go hand in hand. Btw, what do you mean JVM is in your face? I don't write Java but I always imagined it's the same as with CLR.
[QUOTE=Darwin226;50345666]When I wrote C# I thought you simply couldn't access private members of an object. Only public ones appeared in the autocomplete list so I just assumed that if you wrote anything else you'd get an error about an unknown property. Only when I accidentally wrote the full name of some property lowercase did I see that there's an actual error telling you it's a private member. Kind of shows how much VS and C# go hand in hand. Btw, what do you mean JVM is in your face? I don't write Java but I always imagined it's the same as with CLR.[/QUOTE] Well, when you compile C# to some .exe executable, to the user it runs as if it were a C++ executable. You don't see the CLR working in the background. Java, on the other hand, compiles to .jar files, sort of subtly reminding you that it's java, not native code, which I think is a psychological factor, rather than an actual factor of developing in java. Also, aside from runtime, java constantly bitches at you for updates, reminding you that Java is not a native part of the windows ecosystem like .net/CLR is. It just makes it [B]feel[/B] clunkier.
[QUOTE=Tamschi;50345657]It's very similar, but you usually have to type a lot less in C#. You can do the same things, but with less code since C# has a few additional features over Java.[/QUOTE] I wish C# had static interface methods and intersection interfaces (maybe not that big of a deal since you can have multiple constraints on the same generic type instead).
It's interesting to me that you guys like how little you have to type in C# compared to Java, but at the same time there seems to be a distaste for Javascript, which is my favorite language to do anything in because it feels very simple to me (especially with dynamic typing).
[QUOTE=proboardslol;50345694]Well, when you compile C# to some .exe executable, to the user it runs as if it were a C++ executable. You don't see the CLR working in the background. Java, on the other hand, compiles to .jar files, sort of subtly reminding you that it's java, not native code, which I think is a psychological factor, rather than an actual factor of developing in java. Also, aside from runtime, java constantly bitches at you for updates, reminding you that Java is not a native part of the windows ecosystem like .net/CLR is. It just makes it [B]feel[/B] clunkier.[/QUOTE] The funny part is, they could make the updates completely seamless. The main reason they don't do that seems to be so that they can show the (legally required?) bloatware opt-outs. [editline]18th May 2016[/editline] [QUOTE=proboardslol;50345719]It's interesting to me that you guys like how little you have to type in C# compared to Java, but at the same time there seems to be a distaste for Javascript, which is my favorite language to do anything in because it feels very simple to me (especially with [B]dynamic typing[/B]).[/QUOTE][emphasis mine] That's the problem (to me). C# gives you very good compile time errors, while you actually have to run JavaScript to stumble across those. JS isn't really [I]that[/I] much shorter than C# though, save for declarations.
[QUOTE=thatbooisaspy;50345347]No it works great for editor ui's and other non-gameplay stuff (that's the entire reason imgui was created no?). If you look at the screenshot thread in the imgui github lots of people are using it for their engines and other tools. The argument would be valid if you were trying to use imgui for something like game ui :v:[/QUOTE] Its not that, its just that using an immediate mode UI for a project with a lot of GUI elements isn't very cheap.
[QUOTE=proboardslol;50345719]It's interesting to me that you guys like how little you have to type in C# compared to Java, but at the same time there seems to be a distaste for Javascript, which is my favorite language to do anything in because it feels very simple to me (especially with dynamic typing).[/QUOTE] Javascript is hated for many reasons, but one of them is not the succinctness of code. (At least, not one of the [I]major[/I]​ reasons.)
[vid]https://files.catbox.moe/iyd7ko.webm[/vid] Was working on this for the past few days. The video is a bit dark because I haven't tweaked the lighting yet and still have shadows enabled in the shop. But everything seems to be working. I just have to sync hats over the network now. If anyone wants to make a hat (32x32 to 64x64) just pm me it and I'll probably add it to the game
[QUOTE=proboardslol;50345719]It's interesting to me that you guys like how little you have to type in C# compared to Java, but at the same time there seems to be a distaste for Javascript, which is my favorite language to do anything in because it feels very simple to me (especially with dynamic typing).[/QUOTE] I mostly mess around with Javascript myself when I do any programming of any sort because I find it easier to accomplish what I'm trying to do most of the time (also Visual Studio's debugger seems to really hate my computer for some reason and will sporadically freeze my entire system) but it's far from a perfect language. Dynamic typing is both really convenient but an enormous pain in the ass at the same time. It can be really difficult to work out a bug resulting from dynamic typing if you're not careful with how you handle the variables. For example take this function I was messing with recently: [CODE]function getDigits(num, digS, digE) { "use strict"; var out = ''; for (var i = digS; i <= digE; i++) { out += num.toString()[i] || ''; } return parseInt(out); }[/CODE] This will get specifically the given digits in a number between digS and digE but to do so it has to treat the number as a string. Despite the output looking like a number, if I didn't use the parseInt() on the return bit I could easily end up with a bug that makes things fail to work correctly but which isn't obvious at all and doesn't give any errors or warnings.
I've been very very slowly working on what is going to be a game of some sort, but right now I'm just working on the framework of it, specifically ECS and the event system. During the day I work at a company that makes routers or something for broadcasting. To be honest I have no idea what I'm doing 90% of the time, with the remaining 10% filled up with sudden epiphanies of great knowledge.
Some stuff I've been doing with my Vive: [media]https://www.youtube.com/watch?v=gBK-KDBQ_w8[/media]
[QUOTE=WTF Nuke;50346705][...] To be honest I have no idea what I'm doing 90% of the time, with the remaining 10% filled up with sudden epiphanies of great knowledge.[/QUOTE] Is that about your game project, your job, or both? :v: It was roughly the same for me with those systems, if my dispatcher counts as event system (but it probably doesn't. I haven't needed a proper one so far).
[QUOTE=Rocket;50345915]how succinctly you can express an idea is not a good measure of a language i can write something in K that would take ten, twenty times as much code to write in C#. but i would much rather use C#.[/QUOTE] I'd say it depends on what you consider an idea. When you let it include entire implementations of libraries or applications the terseness of a language becomes a much better metric. Mostly every feature considered "good" in a programming language saves you some writing in some way. Even safety feature like static typing save you some literal typing by reducing the number of tests you need.
[QUOTE=Tamschi;50346997]Is that about your game project, your job, or both? :v: It was roughly the same for me with those systems, if my dispatcher counts as event system (but it probably doesn't. I haven't needed a proper one so far).[/QUOTE] Uh my game I'm understanding mostly completely, just taking my sweet time. Like I wanted to allow any functor to be used as a callback (including lambdas) but I made an overload for rvalue std::functions. However, the template for the non moving code is less constraining and is picked as the overload. I think it's fine though. Can lambdas even be moved? Can they have rvalues? Apparently yes they can. Can you have move only std::functions though? I remember that was a defect, but I don't know how it has been ratified. Apparently also yes, but you can't have a move only lambda initialize a std::function because that constructor creates a copy.
Hey guys, I don't post often, but lurk everyday like many do. Got a spur of inspiration to make a simple game using established game mechanics, but then try and incorporate loads of progression into it. After 2 weeks of on and off work and polish, now you can try it out too! [URL="https://play.google.com/store/apps/details?id=com.AvalancheGames.TapTrap&hl=en_GB"]*Da link*[/URL] If the game feels a bit sparse, please be kind, I felt releasing the game as it is would push me to finish the updates for it quicker, so at the moment I'm working on what I would call the other 75% of the game as a massive update including a lot of stuff that I will reveal soon! :smile: Hope you like. (back to lurking)
[QUOTE=Protocol7;50345972]Javascript is hated for many reasons, but one of them is not the succinctness of code. (At least, not one of the [I]major[/I]&#8203; reasons.)[/QUOTE] Dynamic typing is my main issue with Javascript and PHP. One time my PHP script wasn't working and turns out you can just leave out parameters to functions and it will just put a null in instead of telling you you fucked up. How unhelpful can a language get, christ. I also hate how all web technologies just keep going when there's an error, it's like I'm using BASIC with ON ERROR RESUME NEXT. :sick: I think it's slightly worse than the 100 errors that GCC will throw if you leave out a single ; (and none of them will mention the ; either, naturally).
[img]https://dl.dropboxusercontent.com/u/2276133/ShareXmod/05-2016/javaw_2016-05-18_21-07-37.png[/img] Hats now work in MP... this is getting out of hand
[QUOTE=boomer678;50347800][img]https://dl.dropboxusercontent.com/u/2276133/ShareXmod/05-2016/javaw_2016-05-18_21-07-37.png[/img] Hats now work in MP... this is getting out of hand[/QUOTE] Do you work for valve
[QUOTE=Map in a box;50343208]the sound on that video is so horribly mixed, but otherwise nice job [editline]18th May 2016[/editline] (no offense :v:)[/QUOTE] yeah i was supposed to bring my professional mic and we ended up recording using an old phone. there was a shitload of noise/static but i was too lazy to remove any of that. (at least professionally.. i just added a gate) all i did was sidechain the music using vocals as input and added a de-esser.
[QUOTE=Alice3173;50346301]I mostly mess around with Javascript myself when I do any programming of any sort because I find it easier to accomplish what I'm trying to do most of the time (also Visual Studio's debugger seems to really hate my computer for some reason and will sporadically freeze my entire system) but it's far from a perfect language. Dynamic typing is both really convenient but an enormous pain in the ass at the same time. It can be really difficult to work out a bug resulting from dynamic typing if you're not careful with how you handle the variables. For example take this function I was messing with recently: [CODE]function getDigits(num, digS, digE) { "use strict"; var out = ''; for (var i = digS; i <= digE; i++) { out += num.toString()[i] || ''; } return parseInt(out); }[/CODE] This will get specifically the given digits in a number between digS and digE but to do so it has to treat the number as a string. Despite the output looking like a number, if I didn't use the parseInt() on the return bit I could easily end up with a bug that makes things fail to work correctly but which isn't obvious at all and doesn't give any errors or warnings.[/QUOTE] Come on, on line 3 you clearly defined the 'out' variable as a string. It should come as no surprise to you that without further processing it will return it as a string. Also your whole function can be summed up as: [CODE]parseInt(String(num).substr(digS,digE))[/CODE]
[QUOTE=SFArial;50349230]Come on, on line 3 you clearly defined the 'out' variable as a string. It should come as no surprise to you that without further processing it will return it as a string.[/QUOTE] It was the only example I had handy but you're missing my point. I was pointing out how easy it is to overlook something that's actually simple but just doesn't cross your mind. A better example would probably be doing some math with that data before returning it. If you were to do something like "out += 9" then it would still treat it as a string but on the other hand "out -= 9" would automatically convert it into a number. It makes sense when you stop and think about it but it still works in a way that is going to trip up quite a lot of people. [QUOTE]Also your whole function can be summed up as: [CODE]parseInt(String(num).substr(digS,digE))[/CODE][/QUOTE] This is a good point though. I use that function so rarely I completely forgot it existed, lol.
Sorry, you need to Log In to post a reply to this thread.