Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
hendersa
Sep 17, 2006

I'm in the final stages of getting another BeagleSNES release ready. Here's the trailer that I uploaded to YouTube a little while ago:

http://www.youtube.com/watch?v=e0Kh4pzAHoY

I'll make the video public once I get all of the software packages uploaded. I have to rebuild all of the kernels for the release targets, do the final packaging, etc. For these embedded system software releases, it takes about 50 hours to package up the codebase and binaries and get everything ready for download once the code is "done".

Edit: Its released! :toot: Version 0.5 of BeagleSNES is now available for download at beaglesnes.org. I'm going to go curl up on the floor and sleep for a few days, now.

hendersa fucked around with this message at 00:47 on Feb 19, 2014

Adbot
ADBOT LOVES YOU

Drastic Actions
Apr 7, 2009

FUCK YOU!
GET PUMPED!
Nap Ghost




I'm making my first Android app! And now I actually have screenshots! :toot:

Coming from Windows Phone/Windows 8, it's a bit of a departure to say the least. But it's actually been going quite smoothly; At least once I figured out how to handle Async tasks and my OAuth tokens. Porting my entities and managers from C# to Java has been pretty straightforward so far, but getting the UI up and running has been a bit harder. Still, I'll keep plugging away it.

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

hendersa posted:

I'm in the final stages of getting another BeagleSNES release ready. Here's the trailer that I uploaded to YouTube a little while ago:

http://www.youtube.com/watch?v=e0Kh4pzAHoY

I'll make the video public once I get all of the software packages uploaded. I have to rebuild all of the kernels for the release targets, do the final packaging, etc. For these embedded system software releases, it takes about 50 hours to package up the codebase and binaries and get everything ready for download once the code is "done".

Edit: Its released! :toot: Version 0.5 of BeagleSNES is now available for download at beaglesnes.org. I'm going to go curl up on the floor and sleep for a few days, now.

50 hours of your time, or 50 hours after typing "make package" because you've automated the poo poo out of the release process?

Congrats though, it's fun watching your project even if I've currently got no use for it whatsoever!

Jewel
May 2, 2009

Environment maps :shepface:

https://www.youtube.com/watch?v=dDPLD76EcNA&hd=1

Took me a while to work out the math for it. It's using a two triangles in screenspace and working out the texture coords via math.

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe
Nice vacation photos, dork.

(Actual nice job, though. I love shiny things)

hendersa
Sep 17, 2006

pokeyman posted:

50 hours of your time, or 50 hours after typing "make package" because you've automated the poo poo out of the release process?

Congrats though, it's fun watching your project even if I've currently got no use for it whatsoever!

Because I am working with physical hardware, there are limits to what can be automated. Some of the 50 hours can be done in parallel with other tasks, so I can streamline the process somewhat. It isn't just running make files and the like. There is regression testing on all six configurations, more documentation updating, lots of time to upload the files, updating the web site, submitting the release announcements to the appropriate sites, and updating my notes and checklists to streamline the process better for next time. Regression testing involves starting and stopping each board with the new software, running through a series of tests, and basically performing a checklist to make sure I have not missed anything.

The last thing I want is a pile of mails saying "I downloaded your software and it doesn't work" because I missed something simple that would take me two minutes to fix if I caught it at the right time.

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

hendersa posted:

Because I am working with physical hardware, there are limits to what can be automated. Some of the 50 hours can be done in parallel with other tasks, so I can streamline the process somewhat. It isn't just running make files and the like. There is regression testing on all six configurations, more documentation updating, lots of time to upload the files, updating the web site, submitting the release announcements to the appropriate sites, and updating my notes and checklists to streamline the process better for next time. Regression testing involves starting and stopping each board with the new software, running through a series of tests, and basically performing a checklist to make sure I have not missed anything.

The last thing I want is a pile of mails saying "I downloaded your software and it doesn't work" because I missed something simple that would take me two minutes to fix if I caught it at the right time.

I guess I shouldn't be surprised, given how thorough your documentation is, but drat that's a lot of work. Very impressive.

hendersa
Sep 17, 2006

pokeyman posted:

I guess I shouldn't be surprised, given how thorough your documentation is, but drat that's a lot of work. Very impressive.

Thanks! I try my best. Probably harder than I should, actually. But, I'm of the opinion that people interested in learning need solid examples to learn from. The documentation and tutorials out there for the Beagle SBCs, while they are getting better over time, still are pretty tough for a beginner to work with. If I hand over a solid, working system and provide some easy-to-follow directions, more people can get their hands dirty with this stuff.

And maybe play some SNES games, too.

I'll occasionally have people write me a mail about how they bought a BeagleBone Black on a whim because they saw BeagleSNES and can't figure out some of the basics that they need to know prior to ever loading new software on it. Things like "nothing shows up on my display, here are my logs, what do I do?" I spend a few hours each week answering those mails to help those folks out. It is usually a student (who I bend over backwards to help), but sometimes it will just sound like your average hobbyist running into some trouble. A few of those hobbyists that I've helped have turned out to be CTOs and senior R&D engineers, though I didn't know it at the time that I was helping them. I find out when I get a notification that someone donated :20bux::20bux::20bux::20bux::20bux: via PayPal and I almost swallow my tongue in shock.

DeathBySpoon
Dec 17, 2007

I got myself a paper clip!

Megaman posted:

What did you write this in?

Writing it in Java with LibGDX. It's a solid library.



Added a status screen, now you can see everything you need to know about your units and your enemies. I'm really happy with how this came out.

clockwork automaton
May 2, 2007

You've probably never heard of them.

Fun Shoe
Nothing too special just figuring out how to do weather using LÖVE's particle systems

https://www.youtube.com/watch?v=-t1MwZ-wxNs

Megaman
May 8, 2004
I didn't read the thread BUT...

DeathBySpoon posted:

Writing it in Java with LibGDX. It's a solid library.



Added a status screen, now you can see everything you need to know about your units and your enemies. I'm really happy with how this came out.

How difficult would this be to write it in c++? I've been thinking very hard about getting into solo independent game design with c++, or least just for my own learning. I develop scripts in Python every day, so do you know how hard this transition would be?

Scaevolus
Apr 16, 2007

Megaman posted:

How difficult would this be to write it in c++? I've been thinking very hard about getting into solo independent game design with c++, or least just for my own learning. I develop scripts in Python every day, so do you know how hard this transition would be?

Garbage collection and memory safety saves a lot of developer time. Some performance is sacrificed, but you don't need to squeeze every ounce of it out of a system like an AAA game does.

Many indie developers choose to use Java or C# because they represent a good balance between development effort and performance.

Scaevolus fucked around with this message at 02:19 on Feb 21, 2014

Rottbott
Jul 27, 2006
DMC
I don't believe that's true. If you're using modern C++, and you at least know enough to use smart pointers and not call new or delete, it's more difficult to get it wrong than right.

You still get resource leaks in garbage collected languages anyway.

tef
May 30, 2004

-> some l-system crap ->

Scaevolus posted:

Many indie developers choose to use Java or C# because they represent a good balance between development effort and performance.

(Most of the indie devs I know tend to use Unity, Flash and other platforms. The only ones who manage their own memory are the ones who port things to iOS)

Zlodo
Nov 25, 2006

Rottbott posted:

I don't believe that's true. If you're using modern C++, and you at least know enough to use smart pointers and not call new or delete, it's more difficult to get it wrong than right.

You still get resource leaks in garbage collected languages anyway.

yup
I have a friend working on software for industrial test benches in .net who told me stories of memory leak hunts that were much worse than anything i experienced even in the largest c++ projects i worked on

Megaman
May 8, 2004
I didn't read the thread BUT...

Scaevolus posted:

Garbage collection and memory safety saves a lot of developer time.

What's a LOT of time? Can you make a guess in %? Are we talking like 5%-10%? If so, that's a lot, but not enough to deter me. If it's like 50-75%, that's simply unreasonable for me to pick up the language.

Dred_furst
Nov 19, 2007

"Hey look, I'm flying a giant dong"

Megaman posted:

What's a LOT of time? Can you make a guess in %? Are we talking like 5%-10%? If so, that's a lot, but not enough to deter me. If it's like 50-75%, that's simply unreasonable for me to pick up the language.

You don't have to worry about hanging pointers, pointers at all really, or worrying about cleaning everything up precicely. in c# at least there's an IDisposable interface for things that have to have a fixed lifespan (such as streams)

edit: for your %, its hard to say, it saves a lot of headaches with horrible pointer arithmetic and really depends on what you are doing. There's no direct guide for this. It could be 5%, it could be 50% depending on your approach.

Zaphod42
Sep 13, 2012

If there's anything more important than my ego around, I want it caught and shot now.

DeathBySpoon posted:

Writing it in Java with LibGDX. It's a solid library.



Added a status screen, now you can see everything you need to know about your units and your enemies. I'm really happy with how this came out.

LibGDX is my favorite game library right now; it does almost all the low level poo poo for you but doesn't marry you to some high level architecture. You still get to write your own engine and organize it how you want, but you don't have to deal with openGL directly and stuff.

Your RPG really looks amazing. If you released a level editor or made it open source, I'm really confident that it could become the next rpg maker. I guess that'd require lots of GUI tools to really be popular with non-developers and that'd be work, but I think lots of technically minded people would use it.

Either way looks like a really cool game.

glompix
Jan 19, 2004

propane grill-pilled

Dred_furst posted:

You don't have to worry about hanging pointers, pointers at all really, or worrying about cleaning everything up precicely. in c# at least there's an IDisposable interface for things that have to have a fixed lifespan (such as streams)

edit: for your %, its hard to say, it saves a lot of headaches with horrible pointer arithmetic and really depends on what you are doing. There's no direct guide for this. It could be 5%, it could be 50% depending on your approach.

You definitely need to be aware of anything that implements IDisposable. I wouldn't say you can be imprecise; it's just easier. Another thing people forget about in C# are events. Gotta unbind those when you destroy whatever holds those references.

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
Playing with hexagons.







Source (Java)

That Turkey Story
Mar 30, 2003

Rottbott posted:

I don't believe that's true. If you're using modern C++, and you at least know enough to use smart pointers and not call new or delete, it's more difficult to get it wrong than right.

You still get resource leaks in garbage collected languages anyway.

Seconding both of these points. If you're programming in modern C++, you're generally not manually managing memory. This has been true for a while, but is even more the case since C++11. In fact, I'd argue that it's much easier to do proper resource management in modern C++ than in a language such as Java or C#.

Shalinor
Jun 10, 2002

Can I buy you a rootbeer?

That Turkey Story posted:

Seconding both of these points. If you're programming in modern C++, you're generally not manually managing memory. This has been true for a while, but is even more the case since C++11. In fact, I'd argue that it's much easier to do proper resource management in modern C++ than in a language such as Java or C#.
This just isn't true. There is no C++11 magic that would ever make me let a junior engineer within a mile of a DirectX/OpenGL texture. They are SO easy to leak. In terms of what juniors do in a big studio, where they can never touch rendering code and have STL or a studio equivalent that they don't change? Sure, they're safe with C++. But that isn't what we're talking about here.

You guys are also brushing over the development speed issue. I get that you like C (I used to be that way too - giant AAA codebase), but the rate at which you can develop with C# or Java is absurdly faster than what you can generally do with C++.

EDIT: ... and the way you avoid dangling references with delegates is: not using delegates. :getin:

EDIT2: though I'm still not entirely sold on C# for huge studio work, specifically because of how awful it is to track garbage collection failures. For small studios, though, you really don't need to worry about squeezing every ounce of power out of the system.

Shalinor fucked around with this message at 16:00 on Feb 22, 2014

biznatchio
Mar 31, 2001


Buglord
I've always found tracing down semantic garbage a lot easier than tracking down memory leaks in unmanaged languages. Just attach a memory profiler, take three snapshots, see what was new in #2 that survived to #3; along with an easy to read diagram showing how it stayed rooted. I don't think I've ever run into a leak that's taken more than 15 minutes to pinpoint; which is certainly not something I can say for a language where you're more or less responsible for freeing memory yourself. Valgrind will tell you where something was allocated, but it's a bit less useful in tracking down why you didn't free it.

Avenging Dentist
Oct 1, 2005

oh my god is that a circular saw that does not go in my mouth aaaaagh
You fools have awakened me from my slumber. Now, reap what you have sown.

Let's be honest here: Megaman is never going to finish his game. He should pick the language that is going to teach him the most useful poo poo. A bad/newbie programmer might actually learn something about memory management? Heavens to Betsy, we've got to stop him!!

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe
Megaman, choose whatever you want to do. Avenging Dentist's right, you won't finish your game, simply because it's your first one.

Do you want to get something up and running right away? But do you want to have an excuse for learning C/C++?

We can argue for ten more pages about what's the "best" language for making a game for beginners, but it really depends on what your goals are.

Curious about what memory management is? Go right ahead and start using C++.

Avenging Dentist
Oct 1, 2005

oh my god is that a circular saw that does not go in my mouth aaaaagh
Whatever you do Megaman, please don't learn C/C++ though. Trying to learn both C and C++ at the same time will probably turn you into a schizophrenic nutcase...



LIKE ME!! *shines flashlight under my chin, makes spooky ghost sounds*

Trabisnikof
Dec 24, 2005

The best language for beginner game developers that want to make money is javascript. There I said it.

Megaman
May 8, 2004
I didn't read the thread BUT...

Trabisnikof posted:

The best language for beginner game developers that want to make money is javascript. There I said it.

Why did you say that.

Trabisnikof
Dec 24, 2005

Megaman posted:

Why did you say that.

Easiest to churn out skinner-box web games in! Remember, when your user is frustrated or impatient with your game that's a good thing if you can monetize it!

kayakyakr
Feb 16, 2004

Kayak is true
This discussion is fascinating, but it decidedly lacks screenshots.


Though I will use this as a place to say that the size and age of the game development megathread has scared me away.

And also that Javascript is probably the best for beginner game devs that want to make money and don't want to deal with porting.

That Turkey Story
Mar 30, 2003

Shalinor posted:

This just isn't true. There is no C++11 magic that would ever make me let a junior engineer within a mile of a DirectX/OpenGL texture. They are SO easy to leak.
Huh? It's been true since well before C++11. There are plenty of smart pointer implementations out there that will work fine with DirectX, and all of COM, even if someone doesn't understand how to make one on their own. In fact, Microsoft themselves provided their own smart pointer types for COM since the 90s (although I personally wouldn't recommend them now).

That said, with Boost, even making one on your own is extremely trivial -- just define intrusive_ptr_add_ref and intrusive_ptr_release to call AddRef and Release respectively (each a one-liner) and use Intrusive Ptr. You are done in something like 5 lines of code and you now have a smart pointer for all of your COM objects, not just for textures, and the code is general enough to be used for any number of projects.

Beyond that, the determinism of RAII on the C++ side of things also makes it so that your resources are automatically cleaned up once you're done with them, including in the face of exceptions and without requiring additional effort (I.E. no need for C# using statements). This is true not just for memory but for any resource and is generally not the case in Java or C#. Herb Sutter has a now 10-year-old post about this that is still true today. It uses C++/CLI but the example is true regardless.

It's easy to convince people that superficially garbage collection makes resource management a thing of the past, but it's simply not true, especially given the language designs of Java and C# in relation to how they deal with garbage collection.

Shalinor posted:

You guys are also brushing over the development speed issue. I get that you like C (I used to be that way too - giant AAA codebase), but the rate at which you can develop with C# or Java is absurdly faster than what you can generally do with C++.
C++ is very different from C. I don't think anyone is recommending C here. I also simply disagree with the statement that you can develop in C# or Java "absurdly faster" than in C++. Perhaps it's the case that you can get simple apps going in a dynamically typed language such as Python faster than something like C++, Java, or C#, but I have extreme doubts that given a skilled programmer in C++, Java, and C#, that any of those three would march along remarkably faster or slower than the other in the general case. If you think that GC in Java or C# is really saving you tons of programming time and/or making your program more correct, then I can't imagine that you are anything but behind the times in the C++ world by 10-15 years. It is extremely rare that a person has to touch new or delete in C++, and properly handling resource clean up, especially when exceptions can be thrown, is also more trivial in C++ than the other languages that have been mentioned.

seiken
Feb 7, 2005

hah ha ha

That Turkey Story posted:

seriously, all of this

For an anecdote, on my recent (40kloc) C++ personal project, I've had exactly one memory-related bug. That bug wasn't even a memory leak, it was unbounded (but still-reachable, so GC wouldn't have helped) memory usage due to incorrect use of a library. 99% of the time the problem is completely solved by "use unique_ptr"

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
Here's a version of that gif which loops perfectly because seiken wouldn't shut up about it:

Dolex
May 5, 2001

^^^ that looks awesome!

Have you taken a look at Processing? ( http://processing.org )

It's a Java based creative programming framework that could make your life easier.

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
I teach middle-schoolers how to program in Processing, and in fact this afternoon I ported that little program. Ends up 20 or 30 lines shorter and a little simpler, but I was somewhat annoyed to discover that the builtin Processing math functions don't include tanh.

Slurps Mad Rips
Jan 25, 2009

Bwaltow!

seiken posted:

For an anecdote, on my recent (40kloc) C++ personal project, I've had exactly one memory-related bug. That bug wasn't even a memory leak, it was unbounded (but still-reachable, so GC wouldn't have helped) memory usage due to incorrect use of a library. 99% of the time the problem is completely solved by "use unique_ptr"

At work, the only problems we've had with C++ are someone treating it like Java (At one point the phrase "I'll let C++'s garbage collector take care of it" was uttered. I have referred to this person as hellfucker. They will not be with us much longer) and the bespoke special snowflake SDK you are forced to used reorders destructors for the OS X platform. Granted at that point you're not really using C++ anymore. (I wish I were joking. Never use Marmalade)

Shalinor
Jun 10, 2002

Can I buy you a rootbeer?
You literally spent 3 paragraphs to enumerate the specifics of what a novice engineer would have to do to use C++ in the way that would let them not worry about allocations. The odds of them actually figuring that out on their own are effectively non-existent. Also, the last C++ (huge AAA) codebase I worked in 2 years ago was wall to wall custom smart pointers and manual allocations.

That's the issue, and why engineers generally shouldn't start there these days. Java/C# "just works."

That Turkey Story posted:

I have extreme doubts that given a skilled programmer in C++, Java, and C#, that any of those three would march along remarkably faster or slower than the other in the general case.
This... I don't want to argue. I find I'm way faster in C#, but that's really just because C#'s builtin STL equiv is fantastic, and my code is sitting on top of monogame/Unity which makes porting a dream.

That isn't to say you couldn't set up exactly the same thing with C++, it's just that most of the cross-platform solutions that are worth using went for a different language. Marmalade is the only C++ one I know of, and it's just not very good, or so I gather. Maybe Moai?

Anyways, that's where the "skilled" comes in. By that, you're implying an engineer that has taken the time to probably by-hand build up an equivalent engine/framework of their own. Which is great if you have it, but I would never in a million years recommend someone build that up on their own over just using C#/monogame, or Java/(pick an engine), hence my arguing that the Java/C# route is orders of magnitude faster by aggregate.

(Sorry thread, this'll be my last geeky C#/Java post... and I'll post a video of a working toilet in my game later, by way of an apology)

EDIT: VV I am indeed a "C++ all my life until the last two years" person who would say what he said.

Shalinor fucked around with this message at 04:26 on Feb 23, 2014

Jewel
May 2, 2009

Hey I primarily use C++ and I still find myself blazing through C# much faster because I don't have to think "uhhh should I use a shared pointer or a unique pointer or just a standard pointer" or "a vector of objects on the heap or a vector of objects on the stack or something else" I just... add stuff to a suitable container. And the syntax is much friendlier and linking things is a million times simpler and errors are simpler and the STL is so much better and everything is geared towards being user friendly, there's really no way you can say "C++ is faster to use" in any circumstance. Even the people who've used C++ all their lives will probably agree C++ sucks balls and is only good for it's sweet spot level of abstraction to speed.

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
more fun variations.



Adbot
ADBOT LOVES YOU

Rottbott
Jul 27, 2006
DMC

Jewel posted:

Even the people who've used C++ all their lives will probably agree C++ sucks balls and is only good for it's sweet spot level of abstraction to speed.
Nope - I preferred C# at one point but eventually changed my mind. Partly for templates, and partly for destructors/smart pointers and usable value semantics. The only things I miss from C# are the superior standard library and LINQ.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply