Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
Sorry about my question, I know that this is a stupid one. I want to begin in game dev, where should I start? Should I start with libGDX, Love2D or with Monogame. I know how to program in this languages (JAVA, LUA and C #). I just wnat an opinion from those who have more expirience than I. Please, help me. Thank you
I'm afraid the answer to questions like these is "It depends."
There are several factors you'll want to consider:
Do I know the programming language?
Does it support the platforms I want to put my game on?
How complex is my game?
How big/present is the community?
In full disclaimer, my experience has primarily been with libGDX and Unity, with a smattering of SFML.
Programming Language
Learning to create games becomes a lot easier if you already know how to program, but only if you know the language you're writing the game in. For example, I'm most knowledgeable with Java, and while C# is similar in many regards, I still lose a lot of time in Unity to understanding the quirks of the language.
If you know Java, go libGDX
If you know C#/.NET, go Monogame
If you don't know how to program, Lua is probably the easiest to pick up (although you might also consider a tool like GameMaker).
Platforms
Honestly, this is becoming less and less of an issue as more interpreted languages are supported on more platforms. It is worth noting that some frameworks make it easier to be cross-platform than others. For example, libGDX provides a tool which generates all the Android/iOS/HTML template code for you when you create your project.
Targeting all PCs: I recommend libGDX. MonoGame and LOVE also provide cross-platform support, but in my limited experience, Java tends to provide better cross-platform support as a language- it's been doing it for a long time.
Console Platforms: Of the three, I recommend MonoGame. To my knowledge neither libGDX nor LOVE support consoles.
Web Platforms: I recommend libGDX, as you can export your game as a web app powered by GWT.
Complexity
The more complex your game is (in terms of computation, graphics, physics, etc.), the more sophisticated a game engine you require. Conversely, the simpler your game, the more those shiny game engine features are going to get in the way. Another hint here is to look at what published indie game developers have used (Bastion is a good game that was written in MonoGame, so you know it works).
Complex: Go with libGDX or MonoGame. These languages are typically more performant than Lua.
Not Complex: If you're just learning to program, then LOVE might be a good place to learn the basics, although you'll still probably want to move up to a more robust game engine.
Community
Especially when you're getting started, community is important. You need a bunch of friendly people who can help answer your questions or look at your buggy code with you. Rather than try to find a way to measure involvement, let me give you an example of some things to look for:
IRC Chat: An active IRC imho is an excellent way of knowing that there is a helpful community.
Forums: If you look at the forums and see that the last post was in 2014, that's a pretty good indicator that the community is small or dead.
Game Galleries: This gives you an idea of how many people are using the library, and what they were able to do.
StackOverflow Activity: The more questions you see on SO around that game engine, the more people are likely using it, which means the larger community it is likely to have.
Hopefully this helps- there are dozens of other game engines out there (many of which might fit your needs better than these three), but we'll need more details to go on in order to give a good recommendation.
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I'm an old C++ / algorithm guy who is making a first attempt at building a web application. I could use the community's help in making correct architectural / tech stack decisions. Here's what we're trying to do:
There is a simple relational model for the data. Most of the application is simple CRUD, with a high usability and variety of UI controls needed to match a fairly complex workflow a company follows. Often data from multiple tables need to be displayed / edited in one page - think of an editable dashboard that takes full advantage of large monitors (grids, drag-drop, tree displays of data, etc.). There is a bit of server-side text processing to be done as well, with Python being the company's processing language of choice.
The company wants to use open source where possible but wants the best UI controls/widgets and will pay for a commercial UI package. They want to make sure there is a good-sized community of developers who use all the technologies involved so they never have trouble finding someone else to maintain/enhance the app once it has been built. There will be under a dozen concurrent users.
I've read various questions/answers here, done some research on my own, and talked with a few colleagues who build web apps in an effort to decide on a proper technology stack for this application. Here is what I've come up with:
Sencha ExtJS for the UI
JSON for data transmission
Django as the web application framework on the server
Apache as the web server
MySQL as the RDBMS
Linux as the O/S
Github for the development repository
Webfaction for the app hosting (full shell access, long-run process support, Linux/Apache/MySQL/Django support, etc.)
Authentication via username/password in database
I'd love to get this tech stack validated by a few experienced people. If you've built high-usability CRUD-style web apps, please let me know what you think of my intended choices, and also please let me know if I am leaving anything important out.
Thanks!
Ron
It will come down to what you are comfortable with as you go along -- don't lock in your combination too early. I believe you've listed a very usable stack. I don't have any experience with Sencha ExtJS, but the rest is solid stuff. Django is a beautiful thing, and even if you don't have Python experience it is really easy (and fun!) to learn.
But as you go you will find some things don't feel right just because of your background, or because of the way it fits with other pieces of your stack, and may find something more suited to your situation.
I've actually come to the conclusion that these days, the pieces available for a web stack are so well evolved and so well explored that you (almost) can't go wrong -- what is far more important is the application design. People tend to get wrapped up in technology decisions and lose focus on the app itself.
http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks
Since we are ambitiously aiming to be big, scalability is important, and so are globalization features. Since we are starting out without funding, price/performance and cost of licences/hardware is important. We definitely want to bring AJAX well present in the web interface. But apart from these, there's no further criteria I can come up with.
I'm most experienced with C#/ASP.net, PHP and Java, in that order, but don't turn down other languages (Ruby, Python, Scala, etc.).
How can we determine from the jungle of frameworks the one that suits best our goal?
What other questions should we be asking ourselves?
Reference material: articles, book recommendations, websites, etc.?
For me, the most important things to consider were:
Fantastic lead developers who I trust to keep working on the project.
Googling a question brings a lot of good answers.
Most importantly, I have to like the way the code flows.
Edit: Also they have to be anal about coding standards. If there is inconsistency, I get very annoyed.
Those 3 points brought me to Symfony. It is always using the latest cutting edge features of the latest PHP version. Symfony 2.0 is using namespaces before any other framework.
Two of your points were:
i18n - there is great support for it (helps that the company behind it is French, so i18n is a first class citizen).
Scales - Yahoo Answers and Vimeo use Symfony and contribute back code. If those guys can scale Symfony to 100 million users, you can too :)
It all depends on the type of project you will be developing.
Are you building a web application or a heavy content website or something else?
You also mix up programming languages with frameworks. The frameworks for PHP that I know are: CakePHP, CodeIgnitor, Zend and Symfony. For an out-of-the-box heavy content website I would suggest Drupal or Expression Engine.
It seems you won't be developing yourself. In that case I would determine the cost and availability of programmers and how widely the framework is supported and by who it is backed. The Zend framework is backed by the guys behind PHP, while CodeIgnitor is backed by the guys behind Expression Engine. Drupal has professional support packages,...
IMHO, for something that will have a lot of users, go for a compiled language.
If you don't try it, you will not know. So, I'd say do a small project in each of the frameworks you are seriously thinking about. I would prepare myself to do a lot of testing if it's something I'll be maintaining for some years. It's better to start off on the right foor than to get half way through a project only to realize you took the wrong path. There may be some requirements that end your search. For example, your servers' OS, a framework feature, or scalability. If you lay out your software plans and requirements, you probably will have very little left to choose from - unless your project really is quite generic or simple.
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I've got a young nephew who aspires to grow up to be a game programmer and i'd like to introduce him to the world of open-source as well as get him a sweet gift.
Anything like that out there?
Well, this is a tricky question because we don't know the level your nephew is at, nevermind the fact that it's difficult to produce a very nice showy game without a lot more work than a beginner might put forth.
X Game Station
Nevertheless, André LaMothe's X Game Station is meant to be exactly the system you're asking for - a beginner's guide and system on how to develop complex programs with interactive elements and gameplay on resource limited hardware. Which is pretty much what a game designer is called on to do.
GP32
The GP32 was also meant to fill this gap, but with a much more powerful processor. The successor was never released, and the company went bankrupt shortly after, but you may still be able to find one on ebay or within the communities that developed around the original machine.
Google Android
You might also consider looking toward the Google Android platform. Cell phone gaming is now and will be one of the biggest platforms in the future. The android isn't set up perfectly for gaming, but it's a good first approximation, isn't horribly expensive and includes a robust development toolset for a high-end mobile processor. Several big name game development companies have already pledged support for this platform, so it will also look good on a resume.
But a cheap computer and a VGA graphics book is surprisingly fun as a kid...
-Adam
There are a number of Open Source platforms out their for game development, if you go to here there are a large number of game engines and development platforms. For a beginner with little programming experience I would suggest a game engine like Game Maker or RPG Maker, which are drag and drop game engines. Both of these are free open source game engines. The other problem with these two game engines is that they are limited to 2D games only, even though Game Maker allows you to make and FPS that is like Doom style graphics.
For a more intermediate or beginning programmer I would honestly suggest Torque, which has both a 2D and 3D game engine. This engine is licensed as open source, but you still have to pay for the compiled version from their site. I have had much success with Torque in the past, especially Torque Game Builder (2D Game Engine). It is very simple to pickup and begin making good looking/functional games. In fact, a number of XBOX live games have been built using Torque game engines, like Marble Blast.
Another open source game engine I have heard good things about, but have not had a chance to try, is Multiverse. Multiverse is actually aimed at MMOG creation. The nice thing about Multiverse is that it provides for the creation of a 3D game environment, but also allows for the integration of Flash content into the game world.
For a more advanced programmer I would suggest looking into the SDL, OpenGL, and OpenAL. These are not game engines but graphics and sound libraries for game programmers. These are completely open source and are free to use. Most game technologies will have some implementation of one or all of these libraries in their software.
Even though XNA is not open source, it is also a good place to start for more advanced programmers. Not only does it allow for the creation of XBOX games, but you can also develop for the PC and Zune also.
Another thing you may want to suggest to your nephew is to modify existing games he owns. Most PC games and many console games allow for game modification of some form or another (level design, rescripting, etc). Some of the more popular game engines that I have seen mods for are the Source Engine and Unreal Engine. There are a number of tutorials at MODDB and 3DBuzz (which also has great tutorials on other aspects of game programming and design).
In addition to what I have listed, I have also heard good things about Ogre3D and Havok (a physics engine used in many many games). He can also go to such sites as IGDA, Gamasutra, GameDev,Game Career Guie, 3D Buzz for additional information on game development.
Hope this information helps.
I saw a question earlier about programming on a Nintendo DS. That sounds like it might be what you're looking for.
Also, I recently read about the BUG which looks like a really cool platform for building any number of handheld devices.
You might be interested in the XGameStation. It's a hardware console designed to teach programming a game console. It was created by Andre LaMothe who has written several books on game programming.
http://devmaster.net/devdb/engines/sylphis-3d#general-overview looks pretty nice, c/c++ oriented, GPL license, and Free.
I'd third the Nintendo DS recommendation - grab a R4 "homebrew" cartridge and you're pretty much set.
Another idea is one of the independent handhelds - something like the GP32, though there's certainly newer devices on the market.
I believe this is somewhat like Basketball, start from close to the basket and work your way out and you'll be hitting 3's with practice.
In my opinion, game programming is 3pt, without learning to shoot the basketball properly, you will probably cheat and start slinging it or just chucking the ball at the backboard hoping it's going to go in.
If you have a youngster without the ability to shoot a mid-range basket properly, do you think he will be able to motivate himself to keep trying, rather then trying something closer to the goal and working himself outside when he is confident?
If your nephew is serious about learning programming, get him a python book or vb.net/c# book. Maybe he will become more interested in application development because of these languages (it was the case with me, I'm 14). :)
Edit: This is assuming he doesn't have much programming experience.
well, this is not completely open source (the editor isn't, the engine is), but I recommend RPG Maker VX (if he likes role playing games):
http://tkool.jp/products/rpgvx/eng/index.html
I have used this (and the earlier versions) for some time. It is nice because there is a great editor and event system which can teach basic programming concepts without writing any code. Once your nephew wants to write some real code, there is an entire API (RGSS2) written in ruby that they he is free to manipulate and extend. This API makes up most of the game engine, hiding only low level implementation stuff.
There are other programs out there like GameMaker, but RPG Maker is the most user friendly, while still providing a way to get at the more advanced stuff.
EDIT: I forgot to mention one of the best parts; there is a large and active community around RPG Maker. There are many forums completely dedicated to the program where people will be happy to help on even the most basic tasks, not to mention the great resources that are avilable.
Well programming on the NintendoDS is possible, however you'll be breaking and stretching quite a few laws there.
However, I should say that I learned most of what I did about hardware doing stuff just like that while I was back in school. I learned a LOT from doing that sort of stuff ;)
But I wouldn't recommend it to youngsters or newcomers because you'll be totally out of support (lots of frustration), might break your game console, and unless you already know about programming the learning curve is WAY to high.
Might I recommend starting out with flash or PC games before console programming?
Edit: When I mean breaking/stretching laws, I don't mean writing code for your hardware, that's up to you. But it is illegal to buy pirate memory cards and card writers (that infringe on patent laws). Also funding hardware piracy will unlikely be something to proud of.
Edit:#Mike F did you read my post? I said, I HAVE done this while I was a student, and I learned a lot. But it's still piracy, and yes I did my fair share of piracy when I was a poor student, but it's not something I'd want to teach someone just getting into programming. Would you?
Besides there are plenty of perfectly great ways to learn game programming without needing to hack stuff like RPGMaker, XNA, etc...
#Mike F: Once more just for the sake of it NDS flash-roms are produced through patent piracy(/infringement), not software piracy, as in it is illegal to produce such hardware because it goes against patent laws. And the companies that make such flash rom hardware are piracy companies that traffic their goods in the grey market, Its as simple as that. I'm not talking about "software piracy" at all here. Thats why I mentioned twice already that anyone is free to run whatever software on their hardware, be homebrew or whatever.
Ars Technica just came out w/ an article about open-source gaming consoles. They are hand-helds, so I don't know if that's an issue but they seem to be pretty nice, with lots of features to tinker with.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
Let's say I woke up today and wanted to create a clone of StackOverflow.com, and reap the financial windfall of millions $0.02 ad clicks. Where do I start?
My understanding of web technologies are:
HTML is what is ultimately displayed
CSS is a mechanism for making HTML look pleasing
ASP.NET lets you add functionality using .NET(?)
JavaScript does stuff
AJAX does asyncronous stuff
... and the list goes on!
To write a good website to I just need to buy seven books and read them all? Are Web 2.0 sites really the synergy of all these technologies?
Where does someone go to get started down the path to creating professional-looking web sites, and what steps are there along the way.
While I have built my knowledge largely based on using the internet to search out what I want to know (w3schools.com helped a lot, as did A List Apart), a few good books have helped me along the way, though they have been platform/language-specific, so I'll avoid mentioning them unless someone is curious. For me, at least, having a book open so that I don't have to resize windows or switch between them is very valuable.
The first part of your list is ok, but the last few items need tweaking. ASP.NET adds server-side functionality (for the most part) to your application. This lives outside of the browser and is thus quite powerful and easily shared with a variety of end-users.
The problem (some say) with server-side processing is that your application must make a new HTTP request when you ask for an action to be performed. So if you click on a link to a page that yields a new set of data, you don't get instant results. The page reloads, or loads a separate page.
Javascript solves this to a degree--it allows you to respond to user input instantaneously. Do you want to display the sum of two numbers when the user clicks a button? You can do it with Javascript.
The problem with Javascript is that it can't talk directly to databases, or explore your server's file system, or other stuff like that. It lives in the browser--period.
AJAX bridges the gap between your user's browser and your server. With AJAX, Javascript makes the HTTP request without refreshing your page or loading a new one. Javascript talks to a server-side script (not necessarily ASP, either--works with PHP, Rails, Coldfusion, etc.) and sends and receives information. And because Javascript isn't dependent on page loads, a quick, snappy AJAX script can almost give the feeling of a common desktop application, in which you don't have to wait for HTTP requests when performing simple actions on your application's data.
I think that this series of Opera Articles will give you a good idea of web standards and basic concepts of web development.
2014 update: the Opera docs were relocated in 2012 to this section of webplatform.org:
http://docs.webplatform.org/wiki/Main_Page
Ian's answer has a lot of weight. You could buy all those books and read them all and know nothing about web development. What you really need to do is start with something that is not nearly as big as Stack Overflow. Start with your personal site. Read some web dev/css articles on a list apart. Learn about doctypes and why to use them. Add some css and change the colors around. Go over to quirksmode and peruse the site. Add some js. Follow some links on Crockfords site. You will probably stumble across his awesome video lectures, which you should watch. Then after that go back to all the js that you wrote and rewrite it. Then pick a server side language that you want to learn. Python is pretty easy, but it really doesn't matter what you pick. Then come back and integrate all those together in your site. At this point you will at least be getting started with web development and will have worked with several different technologies.
EDIT: I forgot to mention. READ BOOKS.
Many developers that I have worked with in the past have gotten through their career without really advancing after a certain point. I could be totally wrong, but I attribute it to not reading enough books and relying on using their same bad code over and over.
You could go out and buy a bunch of books and start reading them and quickly get overwhelmed in the seemingly massive learning curve it takes to go from nowhere, which is where it appears you are, to a rich internet entrepreneur, which is where you want to be.
Alternatively, and what I would suggest is, you could define a problem you want to solve, and then go about finding the solution to that problem. Start with something small. "I have a problem: I don't have a web site about myself.". Define what you need to do to solve that problem, learn the basics, and do it. Then, define a new problem, which probably relies on the solution to the first problem, find what you need to do, and do it.
This is how all technology professionals evolve. My first website was a personal site with nothing but text. Then I added some jokes and some movie quotes. Then I got tired of man-handling all the updates to I learned how to put them into a database and retrieve them from the database for display. It goes on and on.
Call me when you've got more money from your financial windfall than you know what to do with.
If you really just want to jump in with both feet, I would suggest looking at ColdFusion from Adobe. The developer edition is free and runs on windows, os x and linux. The documentation is authoritative and extensive, there is a very active developer community and only a few books you might want to dig into. The definitive guide is a series of books that can be found on Amazon
The nice thing about ColdFusion is that you can use it as a stepping stone to other languages and remain productive along the way. You can even mix it together with Java since it is itself written in java. There are also lots of goodies built in that you would have to scour the web for or pay more for in other languages. Things like full text indexing, graphing, server monitoring, ajax based controls, flash/flex integration, asynch os calls, etc.
You even have the choice of building object oriented code or procedural code, although some people would not count that as a benefit. Those people rarely agree on which style should win, though.
Cheers!
I think sitepoint is the best resource for learning best practices in web development. They have great articles, good references, and probably one of the best forums. However the people there can be a bit grumpy. ;)
If you are a real nerd, reading the specs for HTML 5 and CSS is also a good way to learn.
I'm with Ian on this one. Reading books is all well and good, but nothing beats getting stuck in. I actually started with a Dummies Guide to ASP (that'd be "classic" ASP), back in 1999.
If I was going to start from scratch today I'd be looking at something that covered a full stack solution, whether Apache/PHP/MySQL, RoR or whatever.
ATM I have no experience of Rails, but it might be a pretty good place to start as it includes a lot of stuff that you'd have to figure out early on otherwise (integration with a Scriptaculous, a JS framework) - you can always learn what going on under the hood at a later date.
.NET is always an option, and if you're comfortable with Visual Studio it may be the way to go, but it's not the easiest thing to pick up otherwise.
If you know a bit of HTML but are basically new to server-side programming you might look at ColdFusion. It's actually extremely powerful and like Rails includes lots of "out of the box" benefits. There's a Swiss company called Railo who are currently in the process of releasing an Open Source ColdFusion engine that is affiliated with JBoss.
Last and not least - don't forget databases! Sooner or later you'll need to get to grips with some pretty serious SQL...
CFML (aka "ColdFusion" even though that's really an Adobe product, not the language) is definitely easy to learn, and if you want FOSS for CFML, in addition to Railo you can use Open BlueDragon which is a GPL CFML engine.
Designing with Web Standards is a great first read!
http://www.zeldman.com/dwws/
I would recommend this book:
http://www.amazon.com/MCTS-Self-Paced-Training-Exam-70-528/dp/0735623341/ref=sr_1_1?ie=UTF8&s=books&qid=1218830714&sr=8-1
I have just read it to take the exam, and although I knew the web theory part, I found it to be of great value.
This of course is a ASP.NET specific book, but that is what I would recommend learning anyways.
After you learn all the ASP.NET stuff, I would suggest reading up on JQuery.
Happy coding :)
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
It looks interesting and I've played around with it some --- but the development IDE in a web browser seems to be nightmare eventually.
Does anyone have experience using it and what are your thoughts?
We evaluated GI a few months ago for a project but didn't end up selecting it.
The IDE-in-a-browser (which is itself build with GI) actually works surprisingly well, though there are some features you normally expect from an editor that it lacks, most notably (and irritatingly) an Undo command. It's also impossible to do things like subdocument includes (practically a necessity for team development) from the IDE, though you can do them manually in the underlying XML and the IDE will respect them.
In the end the main reason we didn't go with it was that it was difficult to make the resulting web application look as good as the designers really wanted. It was relatively easy to build functionality, but the components were very restrictive in look and feel. The way GI renders its own document model to HTML involves a lot of style attributes which makes skinning in CSS all but impossible. It seems to prefer making web applications that look like applications, instead of web applications that look like websites.
So it would probably be great for building intranet type applications where look and feel isn't a huge issue, but I probably wouldn't use it to make a public facing site.
By the way for those that don't know, TIBCO GI is a completely separate product from the rest of TIBCO's SOA business integration stuff - General Interface was a separate company that was acquired by TIBCO a couple of years ago.
From a coworker who used to work at TIBCO:
TIBCO is a complicated, hard to use system because it's used for complicated, hard to solve problems.
Kieron does a good job of summarizing GI. It's really for enterprise web applications, not consumer-y widgets. The overhead of loading the entire GI framework and waiting a second or two for it to load doesn;t seem like much if you're firing up a call center or an employee provisioning application you're going to use for the next few hours. But, it seems like forever if you're waiting for a widget to load into an existing web page. And, even though, GI supports some nice functional and performance QA tools, they really are overkill unless you're working on something important and complex. So, if all you want is to toss a sexy looking datepicker on screen, use something else for sure.
Yup, couldn't agree more. I have developed a few applications with TIBCO GI and integrated it with TIBCO CIM. I work for TIBCO and GI is something I have been working with quite heavily doing some complicated stuff. Whilst doing it, I came across the odd sides of GI, things you sometimes can't explain but are just the way they are, working with JavaScript and dealing with multithreading issues can be a nightmare etc. It's good to create something quick without being too fussy about the sexiness of the application hence good for internal apps but not for consumers unless you want to get lost in a jungle of crazy CSS styling. The XML Mapping utility is a great feature saving you lots of time to implement SOA applications. The other good part is that deployment is really easy - GI apps use a combination of XML, XSLT, X-Path and JavaScript. In GI 3.8 there are also a couple of testing tools. Unfortunately, development inside GI's editor is slow and painful, so I recommend using an external editor like Notepad++.
you dont need to run tibco-GI from a web-browser, but you need to run the Programfile GI_Builder.exe which is an ActiveX application. just double-click on it and run-it.