Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
It contain a lot of good and clean code.
I have learned a lot from Carmack's Quake source code :)
In my opinion, you should include it with the games if you don't want to give it away. That would not just give you an advantage over the Uplink competition, but it also follows Carmack's spirit more closely. Furthermore, I'm not quite sure the complexity of either game legitimizes charging money. Without criticizing the games for what they are, putting some text boxes and overlays on screen is comparably simple, whereas both Quake and Doom provided state of the art concepts in CG. Your example regarding the difficulty of aligning a circle and a line despite your background in mathematics might be true [even simple problems sometimes take time to be solved elegantly], but it is just magnitudes away from what Carmack provided for free.
We released it as a product. Meaning we offer (our world famous) tech support and some of my personal time if you need help with any aspect.
Whoever want to spend serious time with the source code, will find solid tech support usefull and the $50 paid for being able to get hands on help from who made the game ... a solid deal :)
Programming a game like this is more than "putting boxes and texts" on the screen.
Here is a deal.
Write me a simple C text mode app that replicates the command line parser functionality.
It doesn't have to execute the in-game commands.
Just the code that allows you to input the command (with editing function, using the arrows, autocompletion, etc).
For every command, just have the code write out the command name it parsed and parameters given.
I will give you a free STEAM key for the source code and 50 bucks.
You will see that is far from easy :)
Streaming here: http://www.twitch.tv/mjbrune
Completed. BSDL license so feel free to use it in whatever, for free, without paying me anything.
Exosyphen please let me know how to contact you for my 50 dollars and the source code key. ;) If there are any missing features let me know and I will even add them.
A few remarks:
a) You can easily make it fail, e.g.
Type 'e', autocomplete to "exit", delete chars and press <Tab>
Results in:
Debug Assertion Failed!
Program: C:\Windows\system32\MSVCP120D.dll
File: c:\program files (x86)\microsoft visual studio 12.0\vc\include\vector
Line: 159
Expression: vector iterator + offset out of range
...
Line: 160
Expression: "Standard C++ Libraries Out of Range" && 0
b) It doesn't seem to really parse parameters and autocompletion seems limited [only "exit" is supported by default - should include "decrypt" etc. to illustrate autocompletion better, esp. for commands with identical prefixes]. That's also when it becomes interesting: Polymorphism etc. How do you differentiate decrypt/2 and decrypt/3? How do you support nested commands like decrypt encrypt <key> <plain text>? Those are likely the problems he wanted me to see.
In essence, I think exo wanted a way to do two things: Show me how complex his seemingly simple work really is [since he couldn't have known that I'm already aware of it] and offer me as a dedicated customer with limited budget a way to read the source without just giving it away. And I even think I might have declined, since I do get his point: Writing a half-decent shell for $70 bucks is not possible. Your best bet might be to use an existing framework like GNU readline or libtecla, but this is cheating and even then the other tasks take enough time that it just doesn't make too much economic sense.
Also, autocompletion is much more complex to implement than one might think: Good autocompletion does not just complete entire commands, but actually parts of commands as well. "ming", for instance, might autocomplete to "mingw32-" and then 'm' might autocomplete to "mingw32-make.exe" and then the parameters also require specialized autocompletion, e.g. only autocomplete to file and directory names in proper UNIX or Windows notation after file commands.
And I haven't even started talking about proper lexing and parsing - you can attend entire lectures about these topics.
I mainly wrote it quickly because I had some free time on a sunday and PezOfDoom suggested I do it so here we are. :D
While the autocomplete isn't perfect and I will admit I didn't think to delete then tab again and etc. I also didn't cover how advanced of autocomplete but with a few more hours it wouldn't be hard to get it working in a state exactly to what Bash terminals do. As for only one command the challenge said "It doesn't have to execute the in-game commands." So if it doesn't have any commands but exit to run then it doesn't need to auto-complete to them, although the system is written to support any number of commands. The auto-complete system also has a space on line 276 where you could easily implement a system that deals with multiple partial commands.
That said I never really expected to get 50 dollars and the key but hell, it's always worth a shot ;)
Although my feelings on the hacker evolution source code and it's (unfound) license is that it seems like 50 dollars is very steep for a non-commerial copy of the source. Why not just GPL it and give it away to everyone who buys the game like Jason Rohrer? Why restrict commerical usage of it? What is the license to the source code? It's not easily accessible from actively looking for it on the store front. I'm not going to state that the code was easy or hard because I really don't know. I also don't know what sort of conditions it was made under and what sort of time frame. Judging people from just purely written code isn't the way to go around this.
Really in the end though the fact the license isn't displayed up front and the steep cost has kept me away from purchase. For 50 dollars I don't see anything this code can teach me that a good C++ or C book couldn't do and more. (maybe that is because I've not seen the code.) If you buy a copy of K&R or The C++ Programming Language books you get the written words from the language creator themselves teaching you through code in the same way but better because its in a full book.
So really what does this offer that a book doesn't? Can I put this code up on a public github? What license covers it?
♥♥♥♥ it, I'll take sides: While I still think that it wasn't intended like this [and would have liked to get the source myself], I think you should get both rewards. I mean we are behind nicknames, so whether he challenged "Rock" or "Mr. Fishy" doesn't matter and you finished before I even read the challenge, so you won fair & square in my book. If he doesn't want to leave me out, he can send me an e-mail with the code, but I understand if he does not. You, however, should definitely get it.
What is interesting to me is that when we two would like to read the source, but decided against paying 50 bucks, how many others must feel the same way. Maybe split the product into a read-only offer and a premium one with support? Someone mentioned the similar Uplink offering for about $50. I actually know this source and it a) is not worth $50 in my opinion [not much, uninteresting] and b) it was available for much less [like $3.5 or similar] for a long time.
Finally, if this was my product, I would solve the issue as follows: Make the source without assets [namely images, sounds etc.] freely available to everyone with thanks to John Carmack and as PR - everyone can read it for educational purposes, but noone can compile it into the final game without actually owning it. Give everyone who owns the game general access to the source plus assets in a separate package, so the game can be installed without the source and the source compiled into the complete game as it is on Steam. Charge for support and commercial licensing in dedicated products.
PS:
No. I agree with everything else you said, but bash has >150k loc with all kinds of goodness. Now I'm close to offering you another $50 if you do [before anyone starts: close to, no actual offer]. Even bash-completion has about 10k loc, so that's no weekend project, either. Look at how long it took Microsoft to get a decent shell...
What do you think about those books that teach you C from scratch and retail for $25?
Those shouldn't exist because a few of us already know C and screw the rest.
Lastly there are tons of open source games out there. Little sell their source only like you are doing and little more sell them for the price of a triple A retail game. When they do sell the source you can actually do something with it. Seeing you can grab the source of the Unreal Engine 4 for free.
https://en.wikipedia.org/wiki/List_of_open-source_video_games is a list of open source games.
https://en.wikipedia.org/wiki/List_of_commercial_video_games_with_available_source_code is a list of commercial games that released their source
https://github.com/KeenSoftwareHouse/SpaceEngineers is the source code to space engineers.
http://www.introversion.co.uk/store/ here is the one for uplink. It's the closest thing I've seen to you're 50 dollar price point but with them you get access to their SVN. Which includes commit history.
So while I am not saying you shouldn't release your source what I am saying is that if you want people to learn from it. Make it cheaper. Right now there are clearly better avenues of learning than reading someones (hopefully commented, but not over commented) source code.
Lastly the games above aren't selling their source to sell it, it's so programmers that are already experienced can pick it up and do something with it. Your EULA restricts this completely. So I don't see the reason for the price point being so high if you are just trying to allow people to learn.