Had another 48hr game jam this weekend...
Rikki Cattermole
alphaglosined at gmail.com
Sat Aug 31 21:09:39 PDT 2013
On Sunday, 1 September 2013 at 03:17:29 UTC, Trent wrote:
> On Sunday, 1 September 2013 at 02:05:51 UTC, Manu wrote:
>> We have to get the user experience and first impressions under
>> control...
>>
>> I'd really love to to see a general roadmap and list of
>> priorities. Even if
>> goals are high-level, they might help direct focus?
>>
>> So I had another game-jam this weekend with a bunch of friends
>> who are all
>> industry professionals.
>> The point of a 48 hour game jam is to prioritise productivity
>> and
>> creativity.
>> Choosing a language like D here makes sense from a
>> productivity point of
>> view... that is, if it 'JUST WORKS'™.
>>
>> There were 7 programmers, they were all using D for the first
>> time (except
>> me).
>>
>> Most running windows, one on OSX, one on Linux.
>> We ran into the same problems old that have been giving me the
>> shits as
>> long as I've been using D.
>>
>> Configuring compilers:
>>
>> Naturally, this is primarily a problem with the windows
>> experience, but
>> it's so frustrating that it is STILL a problem... how many
>> years later?
>> People don't want to 'do work' to install a piece of software.
>> Rather, they
>> expect it to 'just work'. We lost about 6 hours trying to get
>> everyone's
>> machines working properly.
>> In the context of a 48 hour game jam, that's a terrible sign!
>> I just kept
>> promising people that it would save time overall... which I
>> wish were true.
>>
>> The only compiler you can realistically use productively in
>> windows is
>> DMD-Win64, and that doesn't work out of the box.
>> We needed to mess with sc.ini for quite some time to get the
>> stars aligned
>> such that it would actually compile and find the linker+libs.
>>
>> Walter: DMD needs to internally detect installations of
>> various versions of
>> VisualStudio, and either 'just work', or amend sc.ini on its
>> own. Or the
>> installer needs to amend sc.ini. Either way, leaving it to a
>> user to fiddle
>> with an ini file just isn't acceptable. We had to google
>> solutions to this
>> problem, and even then, we had trouble with the paths we added
>> to sc.ini;
>> are spaces acceptable? Do they have quites around them?...
>> I might also suggest that Microsoft supplied (ie, 'standard'),
>> libraries
>> should be automatically detected and path entries added in
>> there too:
>> C:\Program Files (x86)\Microsoft SDKs\...
>> C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\...
>> These are on basically every windows developers machine, and
>> each of us had
>> to configure them ourselves.
>>
>>
>> Getting a workable environment:
>>
>> Unsurprisingly, the Linux user was the only person happy work
>> with a
>> makefile. Everybody else wanted a comfortable IDE solution
>> (and the linux
>> user would prefer it too).
>>
>> !!!!!!!!!
>> This has to be given first-class attention!
>> I am completely and utterly sick of this problem. Don made a
>> massive point
>> of it in his DConf talk, and I want to
>> re-re-re-re-re-re-re-stress how
>> absolutely important this is.
>> !!!!!!!!!
>>
>> I have come to the conclusion that treating IDE integration as
>> ancillary
>> projects maintained by usually just one single member of the
>> community has
>> absolutely failed.
>> I suggest:
>> * These should be made central D community projects.
>> * I think they should be hosted in the same github
>> organisation as DMD.
>> *** As many contributors as possible should be encouraged to
>> work with
>> them every day.
>> - Deprecate DMD makefiles. Seriously! Insist that
>> contributors use the
>> IDE bindings to work on DMD.
>> - The fact that you all laughed at the prior point suggests
>> clearly why
>> it needs to be done. It will cease to be a problem when all the
>> druntime/phobos contributors are suffering the end-user
>> experience.
>> * They should receive bugs in the main github bug-tracker, so
>> EVERY D
>> contributor can see them, and how many there are.
>>
>> IDE integration absolutely needs to be considered a first
>> class feature of
>> D.
>> I also suggest that the IDE integration downloads should be
>> hosted on the
>> dlang download page so they are obvious and available to
>> everyone without
>> having to go looking, and also as a statement that they are
>> actually
>> endorsed by the dlanguage authorities. As an end-user, you're
>> not left
>> guessing which ones are good/bad/out of date/actually work/etc.
>>
>> Obviously, we settled on Visual-D (Windows) and Mono-D
>> (OSX/Linux); the
>> only realistic choices available. The OSX user would have
>> preferred an
>> XCode integration.
>>
>> Overwhelmingly, the biggest complaint was a lack of symbolic
>> information to
>> assist with auto-completion. Visual-D tries valiantly, but it
>> falls quite
>> short of the mark.
>> This goes back to the threads where the IDE guys are writing
>> their own
>> parsers, when really, DMD should be able to be built as a lib,
>> with an API
>> designed for using DMD as a lib/plugin.
>> I think continuous code compilation for auto-completion and
>> syntax
>> highlighting purposes should be a service offered and
>> maintained by DMD.
>> That way it will evolve with the language, and anyone can use
>> it without
>> reinventing the wheel.
>>
>>
>> Debugging:
>>
>> Poor debugging experience wastes your time every 5 minutes.
>> I can only speak for the Windows experience (since we failed
>> to get OSX
>> working); there are lots of problems with the debugging
>> experience under
>> visual studio...
>> I haven't logged bugs yet, but I intend to.
>> There were many instances of people wasting their time chasing
>> bugs in
>> random places when it was simply a case of the debugger lying
>> about the
>> value of variables to them, and many more cases where the
>> debugger simply
>> refused to produce values for some variables at all.
>> This is an unacceptable waste of programmers time, and again,
>> really burned
>> us in a 48hour context.
>>
>>
>> Documentation:
>>
>> Okay for the most part, but some windows dev's want a CHM that
>> looks like
>> the typical Microsoft doc's people are used to. Those that
>> aren't familiar
>> with the CHM viewer; it's just HTML but with a nice index +
>> layout tree.
>>
>>
>> Containers:
>>
>> The question came up multiple times; "I don't think this
>> should be an
>> array... what containers can I use, and where are they?"...
>> Also, nobody could work out how to remove an arbitrary item
>> from an array,
>> or an item from an AA by reference/value (only by key).
>>
>> This code:
>> foreach(i, item; array)
>> if(item == itemToRemove)
>> array = array[0..i] ~ array[i+1..$];
>> Got a rather 'negative' reaction from the audience to put it
>> lightly...
>>
>>
>> Bugs:
>> Yes, we hit DMD bugs, like the one with opaque structs which
>> required
>> extensive work-arounds.
>> struct MyStruct;
>> MyStruct*[] = new MyStruct*[n];
>>
>> We also ran into some completely nonsense error messages, but
>> I forgot to
>> log them, since we were working against the clock.
>>
>>
>> One more thing:
>> I'll just pick one language complaint from the weekend.
>> It is how quickly classes became disorganised and difficult to
>> navigate
>> (like Java and C#).
>> We all wanted to ability to define class member functions
>> outside the class
>> definition:
>> class MyClass
>> {
>> void method();
>> }
>>
>> void MyClass.method()
>> {
>> //...
>> }
>>
>> It definitely cost us time simply trying to understand the
>> class layout
>> visually (ie, when IDE support is barely available).
>> You don't need to see the function bodies in the class
>> definition, you want
>> to quickly see what a class has and does.
>>
>>
>> Conclusion:
>> I think this 48 hour jam approach is a good test for the
>> language and it's
>> infrastructure. I encourage everybody to try it (ideally with
>> a clean slate
>> computer).
>> The lesson is that we need to make this process smooth, since
>> it mirrors
>> the first-experience of everybody new to D.
>> It also highlights and magnifies time-wasters that are equally
>> unacceptable
>> in a commercial environment.
>>
>> I don't think I made any converts this weekend wrt the above
>> issues
>> encountered. I might have even just proved to them that they
>> should indeed
>> stick with C# (the IDE's work!)... :(
>>
>> Please, we need a road-map, we need to prioritise these most
>> basic aspects
>> of the experience, and we need to do it soon.
>> I might re-iterate my feeling that external IDE integration
>> projects should
>> be claimed by the community officially, and user experience +
>> debugging
>> issues should be first-class issues in the main d language
>> bug-tracker so
>> everybody can see them, and everybody is aware of the stats.
>> Also, the DMD front-end should be a lib offering
>> auto-completion and syntax
>> hilighting data to clients.
>>
>> I'm doing some more work on premake (a nice light buildsystem
>> that
>> generated makefiles and project files for popular IDE's) to
>> tightly
>> incorporate D into the various IDE's it supports.
>>
>> </endrant>
>
> I've hinted a few times here and on Reddit that I've been
> working
> on revamping/redoing CMake support for D.
>
> This project would have gone public almost a month ago if it
> weren't for the situation on Windows, but as it stands, I would
> only make it easier for new users to hit a brick wall when they
> try to do D development on Windows. I don't think that's very
> beneficial.
>
> To add to Manu's gripes:
>
> OMF vs COFF / optlink is ridiculous
>
> One of CMake's appeals is that it can check the system for
> needed libraries, and aid in linking to them. DMD32's
> need for OMF libraries throws an uncomfortable wrench into
> the situation, which I have yet to resolve to my satisfaction.
>
> VisualD generation was fairly straightforward. VS generation
> for mixed C/D projects is not something I'm even sure I can
> do (on Win32/DMD, that is), since to get VS to use a different
> C compiler (dmc), I need to make a VS config that defers to a
> makefile config. I'm not sure that CMake is set up to support
> this.
>
> I'm still working on it during my (ever-shrinking) free time,
> but it's pretty slow going.
I also would love to see Microsoft's linker support for Win32
added. Although not as a replacement for Optlink. More as an
option that can be enabled.
So maybe at the same time a rethink of PE-COFF support should be
in order? We could also fix the paths issue at the same time.
About the whole IDE thing my target for DOOGLE[1] is to
eventually be able to build an IDE out of it. Possibly even a
full windowing environment. Because honestly we need one fully
written in D (IDE).
[1] https://github.com/rikkimax/DOOGLE
More information about the Digitalmars-d
mailing list