April 10, 2013
Am 10.04.2013 19:14, schrieb Nick Sabalausky:
> On Wed, 10 Apr 2013 08:38:26 -0400
> Jeff Nowakowski <jeff@dilacero.org> wrote:
>
>> On 04/09/2013 04:43 PM, Nick Sabalausky wrote:
>>>
>>> - Starcraft?: Starcraft is 15 years old, so it isn't an example of a
>>>     modern AAA title in the first place.
>>
>> StarCraft II came out a few years ago and sold very well. They also
>> just released the second installment of it within the past month or
>> so, and considering it is essentially an over-priced expansion pack,
>> it also sold very well.
>>
>>> In the ones I identified as "interactive movie", cinematic
>>> presentation deeply permeates the entire experience, gameplay and
>>> all.
>>
>> Translation: Wearing your gumpy-old-man goggles, you dismiss games
>> that feature lots of cinematics as "interactive movies", even though
>> there is plenty of core gameplay to be had.
>>
>
> "Dismissing" isn't the right word for it (Although I have gone
> straight from "teenage angst" to what can be interpreted as "old dude
> crotchetyness"). Like I said, I do like CoD: Modern Warfare (at least
> what I've played). I'd also confidently toss the Splinter Cell series in
> the "interactive movie" boat, and yet that's actually one of my all-time
> favorite series (at least 1-3, and to a slightly lesser extent 4,
> wouldn't know about 5). Same goes for the Portal games (although I
> would have *very much* preferred they had actually included a
> "fast-forward / skip-ahead" feature for all the scripted sequences.
> Every movie in existence can handle that no problem, it's a *basic*
> *expected* feature, why can't a videogame with a whole team of
> programmers actually manage it? A true FF/Rewind obviously has
> technical hurdles for real-time cinematics, but a "skip" sure as fuck
> doesn't).
>
> I guess I haven't been entirely clear, but the complaints I do have
> about what I've been calling "interactive movies" are that:
>
> A. I think the non-indie industry has been focusing way too much on
> them, to the detriment of the medium itself, and possibly the
> health of the industry (and yes, to the determent of my own opinion on
> modern videogaming as well).
>
> It's strongly analogous to the irrationally high obsession with "3D" in
> the mid 90's: 3D isn't bad, but it was WAAAAAY over-obsessed, and it
> certainly isn't the *only* good way to go. A *good* 2D game would
> have sold well: Rayman and Castlevania: SoTN proved that. The
> problem was, publishers and developers pulled this notion that "Gamers
> will only buy 3D" *completely* out of their asses, with absolutely zero
> meaningful data to back it up, and instead shoveled out load after load
> of mostly-bad, and mostly-ugly 3D games. I still consider that easily
> the worst console generation. "Cinematic" is very much the new "3D".
> Everything still applies, and history is repeating itself.
>
> B. Most of them (from what I've seen) are very poorly done. Just to
> rehash some examples:
>
> - Skyward Sword is easily one of the worst Zeldas ever made. Same with
>    the last Metroid (the one from the Ninja Gaiden reboot developers).
>    Personally I thought Metroid Prime 3 had taken the series straight
>    downhill too, but I guess I'm alone in that.
>
> - Assassin's Creed (at least if AC2 is any indication) is one of the
>    absolute worst multimedia productions ever created, period. It's just
>    inane BS after inane BS after more inane BS. You may as well watch a
>    soap.
>
> - And the first 45 minutes of Bulletstorm is wretched as well. The
>    "walking on the skyscraper's wall" *could* have been
>    absolutely fantastic - *if* there had actually been anything to *do*
>    besides listen to horrible dialog while walking to the next cutscene.
>
> Portal and Splinter Cell did their story/dialog/presentation very well
> (despite Portal's asinine *forcing* of it, which is a royal PITA when
> you just want to play the puzzles), but quality in "interactive movie"
> storytelling is extremely rare in general. And the thing is, if you
> can't do a feature *well*, then it doesn't belong in the finished game,
> period.
>
> I guess I've rambled again clouding my main points but basically:
>
> Cinematic/Story/etc is the new 3D: It's not inherently bad, but it's
> usually done bad, and even if it weren't done badly it's way too heavily
> focused/obsessed on and over-used, to the detriment of the medium and
> possibly the industry.
>
>
>> There *are* games that are essentially interactive movies, like Heavy
>> Rain for example, or LA Noire, but putting shooters like BioShock
>> Infinite or GTA (when doing the missions) in this category is
>> ridiculous.
>
> Well yea, Quantic Dream goes WAAAAAY off into the "interactive movie"
> realm. (Ex: Indigo Prophesy started out looking promising but quickly
> devolved into one long quicktime event). Quantic Dream is basically the
> new Digital Pictures or...whoever made Dragon's Lair.
>
> Keep in mind, I'm using "interactive movie" largely for lack of a
> better term. "Videogame" definitely isn't the right word for them. But
> at the same time, these "interactive movie" things tend to swing back
> and forth (within the very same game) between "more of a game than a
> *true* interactive movie" and "literally *less* interactive than
> a Hollywood movie, because you can't interact with a cuscene *and* you
> can rarely fast-forward past it". (And then there's...dumb...shits like
> Nintendo that *do* put in a skip feature, for *some* cutscenes, and
> then deliberately *disable* it on any save-game that hasn't gotten at
> least that far. Seriously, they could write a book on how to be an
> asshole developer.) And for the record, in case anyone at Valve,
> Irrational, or Human Head ever reads this: A cutscene that you can walk
> around in while you wait is still a f&*@#*$ cutscene.
>

This is what makes me happy while travelling on the bus and train:

https://play.google.com/store/apps/details?id=com.larvalabs.gurk

--
Paulo
April 10, 2013
On 11 April 2013 02:49, Andrej Mitrovic <andrej.mitrovich@gmail.com> wrote:

> On 4/10/13, Manu <turkeyman@gmail.com> wrote:
> > On 10 April 2013 23:15, Andrej Mitrovic <andrej.mitrovich@gmail.com>
> wrote:
> >> On 4/10/13, Manu <turkeyman@gmail.com> wrote:
> >> > It's a trivial problem to solve, however it's a major breaking change,
> >> > so
> >> > it will never happen.
> >>
> >> I wouldn't say never.
> >>
> > ... don't get my hopes up!
>
> Just take a look at the upcoming changelog:
>
>
> https://github.com/D-Programming-Language/d-programming-language.org/pull/303
>
> (You can clone the repo and run
> git fetch upstream pull/303/head:pull303 && git checkout pull303)
>
> There is a ton of breaking language changes. Pretty much every release is a breaking one in one way or another.
>

O_O
There's HEAPS of breaking changes in there!
Okay, you've successfully re-ignited me ;)


April 10, 2013
Am 10.04.2013 18:05, schrieb ixid:
>> It is possible, but it heavily crippeles the language and requires
>> modifications to druntime.
>>
>> See: http://3d.benjamin-thaut.de/?p=20
>>
>> Also see my GC free version of druntime:
>> https://github.com/Ingrater/druntime
>>
>> My GC free version of phobos (heavily crippeled):
>> https://github.com/Ingrater/phobos
>>
>> And my little GC free "standard library":
>> https://github.com/Ingrater/thBase
>>
>> Its quite fun doing it when you want to learn new things, but I would
>> not recommend doing so in a real wordl project.
>
> Given what you have learned about GC-free D how practical would it be to
> modify D's core to work without garbage collection and then build
> libraries on top of this which make their GC use explicit? It seems to
> me that this is a level of modularity that should have been built in
> from the start.

For Druntime this is possible without much issues. For phobos it gets more compilcated especially for functions which have to allocate, like string processing functions and other things.

In my experience the API of an Library looks different if is uses a GC versus not using a GC. The advantage of a GC is that you can make the API more slim, easier to understand and "safe" because you know that you can rely on the GC.

Some parts of phobos already are written in a way that does not require a GC. E.g. std.random, std.traits, std.typetuple and others are useable right away.

The problem I see with such an approach is that everyone who is providing a library would basically have to maintain two version of the library. One without a GC and one with GC.

But with some compiler support it would be perfectly doable, it would just be more work.

Kind Regards
Benjamin Thaut

-- 
Kind Regards
Benjamin Thaut
April 10, 2013
Am 10.04.2013 19:06, schrieb Manu:
> On 11 April 2013 02:59, Manu <turkeyman@gmail.com
> <mailto:turkeyman@gmail.com>> wrote:
>
>     In time, programmers will learn to be cautious/paranoid, and 'final'
>     will dominate your code window.
>
>
> Or more realistically, most programmers will continue to be oblivious,
> and we'll enjoy another eternity of the same old problem where many 3rd
> party libraries written on a PC are unusable on resource-limited
> machines, and people like me will waste innumerable more hours
> re-inventing wheels in-house, because the programmer of a closed-source
> library either didn't know, or didn't give a shit.
>
> None of it would be a problem if he just had to type virtual when he
> meant it... the action would even assist in invoking conscious thought
> about whether that's actually what he wants to do, or if there's a
> better design.
> </okay, really end rant>


Manu, maybe something you might not be aware:

- Smalltalk
- Eiffel
- Lisp
- Java
- Self
- Dylan
- Julia
- Objective-C
- JavaScript

Are just a few examples of languages with virtual semantics for method call. Some of those only offer virtual dispatch actually.

Some of them were developed in an age of computer systems that would make today's embedded systems look like High Performance Computing servers.

Julia is actually a new kid on block, hardly one year old, and already achieves C parity in many benchmarks.

So I think how much could be a problem of D's compilers and not the virtual by default concept in itself.


--
Paulo
April 10, 2013
On Wednesday, 10 April 2013 at 17:33:55 UTC, Manu wrote:
> Why? Sorry, that article didn't sell me. Maybe I need to sit and simmer on
> it for a bit longer though. I like static methods (I prefer them to
> virtuals!) ;)

I agree with Andrei here and it is one of those rare moments when his opinion actually matches embedded needs :P Virtual functions are powerful and dangerous, the more they are separated from the other code the better. Programming in such way is quite innovative paradigm shift but I think it is superior to current C++-derived approach and it is a place where UFCS truly shine.

Actually, if you can afford to spend some time - send me sample or description of design you try to create in C++ way and I'll consider it a personal challenge to implement it in D way with extended comments why it is better :P I believe it _should_ be possible.
April 10, 2013
On Wed, 10 Apr 2013 19:35:27 +0200
Paulo Pinto <pjmlp@progtools.org> wrote:
> 
> This is what makes me happy while travelling on the bus and train:
> 
> https://play.google.com/store/apps/details?id=com.larvalabs.gurk
> 

Cool. Heh, I love these lines in the description:

"this ain't your parent's RPG... it's your grandparent's!" "Oh yes indeed, there will be pixels!"

:)

Shit, I really need to finish up my current work project and try to get back to some indie game dev again.

April 10, 2013
Am 10.04.2013 18:08, schrieb Andrei Alexandrescu:
> On 4/10/13 8:44 AM, Manu wrote:
>> On 10 April 2013 22:37, Andrei Alexandrescu
>> <SeeWebsiteForEmail@erdani.org <mailto:SeeWebsiteForEmail@erdani.org>>
>> wrote:
>>
>>     On 4/10/13 2:02 AM, Manu wrote:
>>
>>         I do use virtual functions, that's the point of classes. But most
>>         functions are not virtual. More-so, most functions are trivial
>>         accessors, which really shouldn't be virtual.
>>
>>
>>     I'd say a valid style is to use free functions for non-virtual
>>     methods. UFCS will take care of caller syntax.
>>
>>
>> Valid, perhaps. But would you really recommend that design pattern?
>> It seems a little obscure for no real reason. Breaks the feeling of the
>> OO encapsulation principle somewhat.
>
> It may as well be a mistake that nonvirtual functions are at all part of
> a class' methods. This has been quite painfully seen in C++ leading to
> surprising conclusions: http://goo.gl/dqZrr.
>
>> I've started using UFCS more recently, but I'm still wary of overuse
>> leading to unnecessary obscurity.
>
> UFCS is a "slam dunk" feature - simple and immensely successful. The
> only bummer is that UFCS arrived to the scene late. If I designed D's
> classes today, I'd only allow overridable methods and leave everything
> else to free functions.
>
>
> Andrei

Everyone seems to be having them, it is as if after realizing that in many cases aggregation is better than inheritance, multi-methods is also a better way to add attach behaviour to objects.

--
Paulo
April 10, 2013
On Wednesday, 10 April 2013 at 17:48:39 UTC, Nick Sabalausky wrote:
> Cool. Heh, I love these lines in the description:
>
> "this ain't your parent's RPG... it's your grandparent's!"
> "Oh yes indeed, there will be pixels!"
>
> :)
>
> Shit, I really need to finish up my current work project and try to get
> back to some indie game dev again.

You should probably like some recently founded Kickstarter RPG stars ;)
April 10, 2013
On Wed, Apr 10, 2013 at 07:35:27PM +0200, Paulo Pinto wrote:
> Am 10.04.2013 19:14, schrieb Nick Sabalausky:
[...]
> >Keep in mind, I'm using "interactive movie" largely for lack of a better term. "Videogame" definitely isn't the right word for them. But at the same time, these "interactive movie" things tend to swing back and forth (within the very same game) between "more of a game than a *true* interactive movie" and "literally *less* interactive than a Hollywood movie, because you can't interact with a cuscene *and* you can rarely fast-forward past it". (And then there's...dumb...shits like Nintendo that *do* put in a skip feature, for *some* cutscenes, and then deliberately *disable* it on any save-game that hasn't gotten at least that far. Seriously, they could write a book on how to be an asshole developer.) And for the record, in case anyone at Valve, Irrational, or Human Head ever reads this: A cutscene that you can walk around in while you wait is still a f&*@#*$ cutscene.
> >
> 
> This is what makes me happy while travelling on the bus and train:
> 
> https://play.google.com/store/apps/details?id=com.larvalabs.gurk
[...]

Yeah!!! I recently played Gurk II (which according to reviews is even better than the original Gurk), and totally loved it!! It was so nostalgic that it inspired me to fire up my trusty old dosbox and relive the good ole ultima 4&5 days. :-)

Granted, I *did* discover to my dismay that the pixel graphics and tinny sounds of the *original* ultima 4&5 are a lot worse than how my memory recalls they were (the pain was somewhat relieved upon installing the graphics upgrade patch) -- but man, the gameplay was excellent. The NPC dialogues were obviously trivial, monster AI was trivially predictable, and there are tons of loopholes that you can exploit -- but the important thing was, it was FUN. I could totally immerse myself in the virtual world and forget about the pixels and loopholes.  I'm afraid I can't say the same for most modern games with their fancy 3D graphics, CD-quality sound, superior AI, etc.. The fun factor is just missing, even though all the superficial elements -- graphics, sounds, AIs, storylines -- are all far more developed.

Gurk II captures some of the fun gameplay of the original (pre-7) ultimas, and proves that a modern game without 3D graphics and a multimillion budget *can* be fun (and, judging from the reviews, it's selling pretty well too).


T

-- 
INTEL = Only half of "intelligence".
April 10, 2013
On 4/10/13 1:33 PM, Manu wrote:
>     It may as well be a mistake that nonvirtual functions are at all
>     part of a class' methods. This has been quite painfully seen in C++
>     leading to surprising conclusions: http://goo.gl/dqZrr.
>
>
> Hmm, some interesting points. Although I don't think I buy what he's
> selling.

That article ain't sellin'. It's destroyin'. It destroys dogma that had been uncritically acquired by many. That puts it in a nice category alongside with e.g. http://goo.gl/2kBy0 - boy did that destroy.

> It looks like over-complexity for the sake of it to me. I don't buy the
> real-world benefit. At least not more so than the obscurity it
> introduces (breaking the location of function definitions apart), and of
> course, C++ doesn't actually support this syntactically, it needs UFCS.
> Granted, the principle applies far better to D, ie, actually works...
>
>
>     If I designed D's classes today, I'd only allow overridable methods
>     and leave everything else to free functions.
>
>
> Why?

With UFCS the only possible utility of member functions is clarifying the receiver in a virtual dispatch. Even that's not strictly necessary (as some languages confirm).


Andrei