A Dark Room - minimalist text-based game(adarkroom.doublespeakgames.com) |
A Dark Room - minimalist text-based game(adarkroom.doublespeakgames.com) |
But again, it's only valid to complain about/mock javascript on non-interactive pages like blogs.
More to the point, if at least you didn't care, then why did you comment?
Why didn't you "just move on"?
With that in mind, what the hell were you expecting? Even in the 90's web based games used flash. What exactly was the 'secure' alternative? A game needs to run code, whether natively or in your browser.
That's what I thought this particular game might be.
In fact, there is a slew of standalone, non-browser-based Interactive Fiction game engines like Frotz[1], Zoom[2], and Inform7[3] out there that this particular game might have been written in. And I would have had no problem playing it then.
[1] - http://frotz.sourceforge.net/
[2] - http://www.logicalshift.co.uk/unix/zoom/
[3] - http://inform7.com/
You mean you have yet to become aware that your browser has been owned through some Javascript exploit.
Somehow that isn't very comforting to me.
You prefer running a binary to play a game?
Obviously, you didn't live through the age of X11 popup adds or javascript exploits.
Well, I'm annoyed by these other people's announcements of their minor decisions to play this game despite it being a threat to their security and privacy.
So, I don't agree with the mouthbreathing masses. It won't be the first nor the last time.
You know these same people would probably be exploited by some dancing baby app, punch the monkey game, or porn app which they fell all over themselves to install, and then announced to the world how great it is!
Yeah, I don't want to be hacked or tracked like the rest of these morons are. Sue me.
The developer would have to ship their own custom engine, at which point you have unsandboxed code running under your user account on your computer, instead of code sandboxed in the browser (which is probably the most generally available and secure sandbox for arbitrary code that exists right now). You are quite unlikely to give the game a full code review to make sure it's not making any analytics requests or shipping your data off to the program author, so that is probably worse from a logical security standpoint.
Now, if you're worried about the request to load JQuery from ajax.googleapis.com, you could've pointed out originally that this is a concern for those who worry about their privacy, and most on here would agree with you. I'm not actually sure why the author of this game decided to use the CDNed JQuery, when the rest of their scripts are unoptimized and loaded from their own server.
This game was billed as a "minimalist text-based game", for which any of the standard Interactive Fiction interpreters would have been more than adequate.
Incidentally, many of these IF interpreters are able to display graphics, and sometimes even sound -- though the usefulness or appropriateness of those features in the context of IF is debatable.
EDIT: Remember, your votes decide the type of discussion you'd like to be having in the future. So down vote me if you'd like to see more bullying on HN.
Please don't assume that your abundance of caution entitles you to dismiss others as ignorant or indifferent to security matters.
It's possible that your security has been compromised and you are simply unaware of it. It's great that you monitor your network and take other security precautions. It would probably be even better if you also avoided running Javascript apps written by people you don't trust. Wouldn't you agree?
If you trust native code simply because it's open source, why don't you trust browser-interpreted code?
No thank you to opening my browser up to Javascript exploits and GoogleAPI tracking!
That's not the usual definition. The usual definition of "open source" revolves around having an open source license.
> I may not have a copyleft license, but for that we have other terms like "Free Software".
"Free Software" and "open source" are approximately equivalent (the FSF "free software" definition and the OSi standards for "open source" aren't identical, and there are probably some license that meet one but not the other, but they are close enough in practice that its not a huge difference.
"Copyleft" is a much narrower term than either "open source" or "free software". Most open source or free software licenses are not copyleft.
Which is a bit part of the point of this, it is an interactive page. Though again I'll disagree further and say it isn't valid at all to simply complain and mock. A reasonable discussion on usage of javascript, or browser-based applications would be worth having. Just saying "not gonna use it" isn't interesting.
You know, not everything that needs code needs to be run in a web browser.
Is it really so ridiculous of me to oppose opening my browser up to Javascript exploits and spying by the likes of GoogleAPI?
I'd be happy to run the game in any of the standalone, non-browser-based Interactive Fiction game engines like Frotz[1], Zoom[2], and Inform7[3] out there that this particular game might have been written in. And I would have had no problem playing it then.
[1] - http://frotz.sourceforge.net/
[2] - http://www.logicalshift.co.uk/unix/zoom/
[3] - http://inform7.com/
Probably? This is purely speculative.
I'd be interested to see any actual exploits of Interactive Fiction engines. So far, they are a much less attractive target to malware authors than web browsers are. That alone makes me prefer them over web browsers, no matter what their theoretical vulnerabilities may be.
"incognito mode / using a separate browser profile / portable browser installs are all options to completely preserve privacy"
Users are often tracked by their IP addresses as well as OS and browser fingerprinting, which Javascript can facilitate. Try going to Panopticlick[1] with Javascript turned off and then with it turned on and see the difference.
"that are either as convenient or more convenient than installing an interactive fiction engine."
But I already have multiple Interactive Fiction engines installed, so using them is perfectly convenient for me. As for others, how many people do you think actually bother to use a separate browser profile or even "incognito mode"? Not a hell of a lot. And if they do, they might also do what I do and disable Javascript altogether.
I love games ( I actually _pay_ for games I like ). I also run with my browser fairly locked down. If you've made a game like this and want me to take more than 10 seconds on the web page, at the bare minimum have it load _something_ without scripts and without requesting anything from another domain ( this means jquery, google apis etc )
This game is a great example of one I wouldn't look at because it loads nothing until a request to googleapis is enabled and scripting is turned on. Perhaps it is overly judgemental on my part, but I assume that failing to provide _any_ level of graceful degradation in a design indicates a poor effort. It takes 5 minutes to add this to your landing page and will save you a tiny percentage of bounces.
tldr: make sure your landing page loads something. anything. Ideally a short message telling users what awesome things enabling the site scripting does for us.
(I would agree with you if there is some significant flow of visitors that don't already know it's a game, but not until then.)
Have you ever heard of games that don't run within web browsers?
That's what I thought this particular game might be.
In fact, there is a slew of standalone, non-browser-based Interactive Fiction game engines like Frotz[1], Zoom[2], and Inform7[3] out there that this particular game might have been written in. And I would have had no problem playing it then.
[1] - http://frotz.sourceforge.net/
[2] - http://www.logicalshift.co.uk/unix/zoom/
[3] - http://inform7.com/
State.stores.wood = 99999; State.stores["alien alloy"] = 99999; State.stores["laser rifle"] = 1
World.water = 60; Path.outfit["energy cell"] = 80; Path.outfit["cured meat"] = 40; Path.outfit["grenade"] = 10
I sympathise but find it quite contrary that you prefer to download standalone engines over something sandboxed in the browser. Although I believe there is some unknown percentage of users who won't turn on Javascript for this game, I can only imagine that a vanishingly small percentage of those might take a stance similar to yours.
The other obvious flip-side of your argument is: Javascript has a much bigger potential audience than IF engines these days. That alone makes Javascript preferable to develop for. The security and privacy issues do not make enough of a dent in Javascript's userbase to make this a serious consideration for developers.
In fact, I don't expect them to.
Most users are ignorant, technologically illiterate, blind to security issues, and lacking of any concern for their online privacy. Most developers aren't much better, and aim for the low-hanging fruit, without many scruples as far as respecting the privacy of their users goes.
No. Most of them aren't going to change. But that doesn't mean that I'm going to suddenly give in and start using Javascript myself. And though I be a lone voice crying in the wilderness, I'm going to stand up for what I know is right.
Honestly, aside from not making a point in your initial comment you chose to make it in an unnecessarily snarky manner. Completely uninteresting and irrelevant to someone saying "hey check out my game". If you don't want to check it out, then don't, it isn't necessary to share that non-information with the rest of us.
I'm sure most of us (as I can see from the extended comments on this here) would have been more than happy to have a reasonable discussion on the pros and cons of browser based distribution of applications if you had started there instead of where you did.
First, I much prefer open-source games, where I can see the code. So I would avoid binaries. And whether an app I use needs to be recompiled for some operating system other than the one I use is really not my problem.
Second, I loathe the move to making everything accessible only through the web, usually through bloated, insecure web browsers and crappy web technologies. If 99.9% of the web died tomorrow, I would be overjoyed. This includes virtually everything done in Javascript (not to mention Flash).
Third, I've yet to hear of an exploit of a standalone Interactive Fiction engine, while Javascript browser exploits are a dime a dozen. I prefer not to make my browser more vulnerable by running untrusted, unnecessary Javascript code.
Fourth, I don't want to be tracked through spyware like GoogleAPI, thank you very much!
"Honestly, aside from not making a point in your initial comment you chose to make it in an unnecessarily snarky manner. Completely uninteresting and irrelevant to someone saying "hey check out my game"."
Except that developers did find it interesting. Like the following comment from sillysaurus[1]:
As a game developer, I care. Any sign that my potential audience is
cut by a technology choice I make is valuable information to me.
And my comment clearly generated a lot of discussion, so I feel I made a positive contribution."If you don't want to check it out, then don't, it isn't necessary to share that non-information with the rest of us. I'm sure most of us (as I can see from the extended comments on this here) would have been more than happy to have a reasonable discussion on the pros and cons of browser based distribution of applications if you had started there instead of where you did."
I should have gone in to more detail as to why I am opposed to running Javascript in my browser, and why I prefer to run standalone apps rather than web-browser apps. And had I seen the gigantic backlash that my little comment generated, I would have -- had I not gone to sleep immediately after making my comment. So I'm replying now that I'm awake. I hope my current comment helps clear up why I made my initial (all too brief and snarky) comment.
Speed of execution, and independence regarding what you can do with a browser, compared to what C/C++ offers you, especially libraries and access to the metal.
I'm not saying those are better ways to make games, but if you want real time stuff, like physics or animating several units at the same time, real time inputs, networking, a browser is not going to cut it. A browser is not an OS in itself, it just makes apps easier to make.
The web has been developing a lot since v8, it's really a good thing for developers who want to make things quickly, with pretty good performance, but I doubt it enables dev to do all sorts of applications imaginable. Games are mostly always resource intensive.
This game is really great, but remember, it's free, doesn't seem to run well on smartphone (when in fact v8 aimed to do just that), and it's not like it will be the most played game in your life. You can't make people buy this or play it at a game show. This game is a pearl, it's well done and I had a very good time with it (although short, and I doubt I'll come play it again), but it does not mean all game should be made using this platform.
Button.cooldown = function (btn) { var cd = btn.data("cooldown"); if(cd > 0) { $('div.cooldown', btn).stop(true, true).width("100%").animate({width: '0%'}, cd * 10, 'linear', function() { var b = $(this).closest('.button'); b.data('onCooldown', false); if(!b.data('disabled')) { b.removeClass('disabled'); } }); btn.addClass('disabled'); btn.data('onCooldown', true); } }
Be careful about them, since they seem to be finite in supply. Though I don't losing all of them and not being able to talk to that man would make any discernable difference in the long run.
"Tanner: 0", "Hunter: 0", etc, have little icons next to them, but clicking does nothing...
I've maxed out my village etc (and am accumulating huge quantities of wood I can't use for anything anymore), but can't seem to advance until I get some leather!
thank you... :)
Really enjoyed the game the whole way through, but I agree with other people on this thread, the ending (or lack of) kinda ripped my heart out. Glad I took some screenshots before flying off into space.
http://bit.ly/17K3a1D - Building Screen
http://bit.ly/12tUk37 - Production Screen
http://bit.ly/17K3ldl - Dusty Path Screen (After getting Compass)
http://bit.ly/14Eyk4u - Map Screen
http://bit.ly/17sIVSm - Starship Screen
Sorry, no screenshots of end sequence - was too busy dodging falling ASCII characters.
If you turn on the remote web inspector (in Settings it's under Safari > Advanced), and then open Safari on a Mac, you can copy the game's save state (localStorage.gameState) to an instance of the game running on your computer.
Another automatic click script, clicking the buttons only when necessary:
var checkAll = setInterval(function() { var bn = ['stoke','gather','traps']; for (var i=0; i<bn.length;i++) $('#'+bn[i]+'Button:not(.disabled)').click(); }, 500);
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script src="lib/jquery.color-2.1.2.min.js"></script>
<script src="script/Button.js"></script>
<script src="script/engine.js"></script>
<script src="script/header.js"></script>
<script src="script/notifications.js"></script>
<script src="script/events.js"></script>
<script src="script/room.js"></script>
<script src="script/outside.js"></script>
<script src="script/world.js"></script>
<script src="script/path.js"></script>
<script src="script/ship.js"></script>
<script src="script/space.js"></script>
<!-- Event modules -->
<script src="script/events/global.js"></script>
<script src="script/events/room.js"></script>
<script src="script/events/outside.js"></script>
<script src="script/events/encounters.js"></script>
<script src="script/events/setpieces.js"></script>
With the exception of the two minimized libraries, none of this code is obfuscated in the least. It even has comments in it!Though I found the sudden restart pointless, and I think it took away from the ending a little. Unless the point of course was that you crash, and find yourself in a room with a fire that's nearly gone out... [kinda like that book of the guy who rhymes with Peevin' Ping haha]
The first time I saw that "You're not coming back disclaimer", I knew: "Oh boy, they're not gonna throw me a parade when I get in space, nor generate another level... I'm just gonna get back in a dark room and start again. All this for...this!?"
"TVTropes Will Ruin Your Life"
Happy to know the game ends in the way that you described and I didn't miss anything.
edit: Ah ok, if you view-source it mentions Candy Box as an inspiration.
- Wait until you have 60 candies (new options appear)
- Click the cowboy hat 4 times
- Buy the wooden sword
Edit: Oh, and also Fallen London [5] and other StoryNexus games. In fact, in terms of mechanics A Dark Room is probably the closest to Fallen London of all the games of which I can think.
[1] Sadly, the HTML sample at http://www.wwnorton.com/college/english/pmaf/hypertext/aft/ appears to not work in modern browsers. It was created in a pre-HTML hypertext system called Storyspace; you can see what it is supposed to look like on its native platform at https://www.youtube.com/watch?v=djIrHF8S6-Q.
[2] http://www.eastgate.com/VG/VGStart.html
[3] http://www.ryman-novel.com/
By the way, and if you're at all interested in the history of hypertext fiction do watch this video: http://vimeo.com/15561443. The speaker in the video talks about a fascinating parallel culture of hypertext writers and readers who paradoxically seem to resist the idea of putting their creations on the Web. Instead, some of the authors choose to disseminate their works on physical media: floppy disks, CD-ROMs and now flash drives.
If you're in the cave, and something attacks you, at the end if you press "eat meat", sometimes, exactly at the point when you want to click it, the buttons become "leave cave" instead, and you accidently press that. Then, a next fight may begin, and you're at low health.
Please provide some consistent way to heal yourself before a next fight.
If the combat action buttons didn't self organize, but rather sat in the same spot (perhaps in order of discovery?), then combat frantic clicking could be consistent.
Also, sometimes the tooltip that shows the cost of a "shoot" hangs over the "eat meat" button, leading to unclickable death if you're almost dead. Clicking the tooltip doesn't shoot, nor does it yield increased health. Either behavior would be preferable to nothing.
Then later once you're maybe 10 minutes in you can switch away for extended times if you want to wait for the continuous income, no need to press buttons, no 'intermittent rewards'.
It could be changed but it's not actually depending on any kind of psychological tricks. The delays are just a minor throttle at the start.
Edit: Actually, to be precise, you only have to stoke the fire once. It's just a deliberately paced cutscene. No psychology there.
Yeah, interesting call, that. When I played Candybox, I was told "before you dismiss So what it, wait until you get 60 candies, then shit gets real".
So, what does a self-respecting hacker do, when faced with 60 seconds of "literally nothing to do" ... except the challenge of opening the JS Console to see if I can make that counter run faster, preferably in less than 60 seconds? ;-)
(answer: yes, it was in fact fairly easy)
window.Engine._incomeTimeout = setTimeout(Engine.collectIncome, 500) // default 1000
IMO it's not a cheat, because it just shortens somewhat tedious waiting early in the game, but doesn't alter it otherwise.
function pushButtons(){if(!$("#gatherButton,#trapsButton").hasClass('disabled')){$("#gatherButton,#trapsButton").trigger('click');}}setInterval(pushButtons, 1000);
See inside and outside at the same time
Another tip for fighting: equip different weapons. I had only equipped the best weapon, as is customary in games, not knowing you can attack with all equipped weapons at once basically (each weapon has a separate timer). This makes a huge difference.
Even though it was surprisingly mostly playable on mobile (except: small buttons, tooltips)
Very addictive game.
1) Add keyboard shortcuts, make them discoverable via an underlined character
2) increase the amount of space between the buttons so the tooltips appear over whitespace.
That said, I played for hours before giving up! Had tons of fun, thanks for making this!
Love the minimalist interface.
Seems like there'd be a use for a way to "save" games by emailing a parameterized URL to yourself... Or just an alternative to arrow keys for all of those tablet users out there.
Still a great game, though! Next time I'm feeling like procrastinating on a 2007 vintage netbook, I'll know where to look :)
Some usability issues from memory for the next iteration (some that others have pointed out):
- The 'up' and 'down' arrows when allocating workers have a much-too-small clickable area. Compounding this was a slight offset between the arrow image and the clickable area
- Allocating workers & allocating the spoils after a battle both shared the problem of only being able to increment by one unit at a time. Lots of annoying clicking.
- When you hover over the worker allocation button when there are no workers allocated it doesn't indicate whether the various resources will be consumed or produced. You have to allocate at least one worker to find out this info.
- It took me ages to figure out that the 'gather wood' button is independent of the villagers gathering wood. I still don't really understand the relationship between 'check traps' and bait and allocating extra hunters/trappers.
- as mentioned elsewhere here, there's a popdown over buttons showing what resources are required by the button. This is incredibly annoying when it obscures another click target, especially during a fight.
- (As Aardwolf pointed out) When gathering the spoils or as an enemy denies, the layout changes and the buttons jump around, meaning it's very easy to unintentionally click on e.g. 'leave city'
- It's a bit annoying to have to switch between the 'raucous village' and 'small room' tabs to figure out which resources are low and how to allocate workers
- When you find fur etc. in the traps it should say how much fur is found
- It's kind of hard to figure out what resources are going where. Maybe each message from the stream of messages down the right hand could be positioned as a callout bubble beside the resource or item that is affected.
Hope this is constructive and super job — great originality!
http://www.indiana.edu/~p1013447/dictionary/sked.htm
Edit: I got bored quickly anyway, probably because I just don't find computer games to be a satisfying way to spend time. Never have.
Frog Fractions is much more linear, I suppose. You move from one game type to the next, instead of having multiple in parallel.
It would probably be ok with a mouse instead.
var stoke = function(){if(!$('#stokeButton').hasClass('disabled')){$('#stokeButton').trigger('click')}}
var check = function(){if(!$("#trapsButton").hasClass('disabled')){$("#trapsButton").trigger('click')}}
var gather = function(){if(!$("#gatherButton").hasClass('disabled')){$("#gatherButton").trigger('click')}}
g = setInterval(gather, 1000) c = setInterval(check, 1000) s = setInterval(stoke, 60000)
This works:
function pushGather(){if(!$("#gatherButton").hasClass('disabled')){$("#gatherButton").trigger('click');}}setInterval(pushGather, 1000);
function pushCheck(){if(!$("#trapsButton").hasClass('disabled')){$("#trapsButton").trigger('click');}}setInterval(pushCheck, 1000);
function pushStoke(){if(!$("#stokeButton").hasClass('disabled')){$("#stokeButton").trigger('click');}}setInterval(pushStoke, 60000);
Ship.init();State.ship = {hull:10000, thrusters:10000};Ship.liftOff();
Dodging optional.