March 31, 2010
March 30, 2010
Work simply and with focus.
“Do the difficult things while they are easy and do the great things while they are small. A journey of a thousand miles must begin with a single step.” ~Lao Tzu
- Start early
- Limit your hours
- Make a short list
- Batch distractions
- Write shorter emails
- Limit meetings
- Automate
- Eliminate paperwork
- Clear your desk
- Get away
- Take breathing breaks
- Practice a focus ritual
- Schedule big blocks of creative time
[...] Focus is about saying no – Steve Jobs
[...] Focus happens pretty easily when you manage to filter out the lesser things.
See also:
March 27, 2010
CorsixTH
Like OpenTH, CorsixTH uses the original graphics. So you will need an original copy of the game installed, or alternatively a copy of the demo. As previously, don’t forget to open up config.txt before launching CorsixTH to ensure that the path to the original data is correct (if you take advantage of the new CorsixTH Windows installer, then this is handled for you).
PS. Video parameters “&w=800&h=500&fmt=18″
March 25, 2010
Gaming can change the world
- Urgent optimism
- We like people better when we play a game with them
- Gamers are willing to work hard given the right work
PS. Video parameters “&w=800&h=500&fmt=18″
March 24, 2010
keeping development projects on track
- Explicitly define the one-point vision for your app
- Work from large to small
- Find the core market for your application and focus solely on that.
- Scale later.
- Build half a product, not a half-ass product.
- Essentials only.
- Start with no.
- Expose the price of new features.
- Avoid preferences.
- Ask people what they don’t want.
See also: Know the difference between urgent and important by Wedge
See also: Urgent Important Matrix
See also: If you had one shot would you capture it or let it slip? by Ashley
March 21, 2010
Developing successful games
Spiking: The process of creating small isolated tests is broadly useful in development, but is especially applicable to game development.
March 19, 2010
Forget booleans
While watching this Out of Browser Experience video I got the idea to reuse the is keyword:
Thoughts?
Update: IntelliSense for is operator should filter to types known to subclass the referenced member.
Mad tools make your development proccess faster
- Build tools to empower creativity
- Limit creativity blockage via complex tools
Be sure to see this talk by Sean T Cooper – Boxhead (unreleased) Deconstruction.
March 18, 2010
The Psychology of Game Design

No matter how cool your graphics are, no matter how cool your tech is – the player can always visualize something more compelling and more dynamic. – Sid Meier
- Use players imagination!
- Go with the flow!
- Tap into what player already knows!
Unholy alliance
I am gonna pretend certain things. You are gonna pretend certain things. Together we are going to have a great experience.
PS. Video parameters “&w=800&h=500&fmt=18″
March 12, 2010
Detail
Unlimited Detail is a fourth system, which is more like a search algorithm than a 3D engine. It is best explained like this: if you had a word document and you went to the “SEARCH” tool and typed in a word like “MONEY” the search tool quickly searches for every place that word appeared in the document. Google and Yahoo are also search engines that go looking for things very quickly. Unlimited Detail is basically a point cloud search algorithm. We can build enormous worlds with huge numbers of points, then compress them down to be very small. The Unlimited Detail engine works out which direction the camera is facing and then searches the data to find only the points it needs to put on the screen it doesn’t touch any unneeded points, all it wants is 1024*768 (if that is our resolution) points, one for each pixel of the screen. It has a few tricky things to work out, like: what objects are closest to the camera, what objects cover each other, how big should an object be as it gets further back. But all of this is done by a new sort of method that we call MASS CONNECTED PROCESSING. Mass connected processing is where we have a way of processing masses of data at the same time and then applying the small changes to each part at the end.
The result is a perfect pure bug free 3D engine that gives Unlimited Geometry running super fast, and it’s all done in software.
March 11, 2010
March 10, 2010
8-Bit NYC
It’s interactive (like Google Maps), letting you zoom from a view of the whole city, down to an individual street — any address, anywhere in the city.
March 9, 2010
Core – What really makes us different
In this astonishing, inspirational and practical session, Geoffrey “Crossing the Chasm” Moore talks about what you need to be great at, what you need to be merely good enough at, and how companies consistently mix these two categories up.
The next generation of software can be built on top of jsc.
Your Core, My Context, I pay.
My Core, Your Context, you pay.
[#13:44] The purpose of neutralization and innovation is to get the maximum input from the minimum input output for the minimum input and be good enough.
Differentiation – How you make money
Neutralization – How to stay in the game
See also: Before product-market fit, find passion market fit by Naval
WebGL on Old Hardware with MESA
WebGL now seems to be mature enough to add support in jsc. This would mean you could develop your WebGL applications in C#, Visual Basic or F#. The trick is to get it working on my machine. It seems my graphics card does not support OpenGL ES 2.
TypeError: Object #<a WebGLRenderingContext> has no method 'getShaderi'
Running dxdiag tells me that my Video card Chip Type is ATI Radeon Xpress 1200 Series.
The last time I updated Video card drivers on my machine there were some serious issues due to the fact the application had some issues with the .net framework. As a developer I have all versions of it and it caused problems.
While searching around I found GPU Caps Viewer.
As I can see I have GLSL Version 1.2 – not good.
[...] many common Intel graphics cards doesn’t have OpenGL drivers
[khronos] I’ve found that Firefox needs at least OpenGL 2.0 support on the graphics card’s driver, otherwise it will fail over to using MESA if it knows where to find the library. I usedhttp://www.realtech-vr.com/glview/ to find out what version of OpenGL the driver supported, though there may well be better ways.
Maybe I should try the MESA software rendering with Minefield?
firefox.exe -no-remoteyou need to tell Firefox where to find:open up about:config, and set the preferencewebgl.osmesalib to the path of OSMESA32.DLL
Are we done? No.
Error: gl.getShaderi is not a functionLine: 31Error: gl.getShaderi is not a functionSource File: http://people.mozilla.com/~vladimir/webgl/spore/sporeview.jsLine: 31
Are we done? Yes.
Software rendering seems to be very slow. The Minfield (almost) locks up.
- Animated Cube
- Lesson 1
- Lesson 2
- Lesson 3 – rotating, cool
- Lesson 4 – rotating mesh, a little slower
- Lesson 5 – rotating textured cube, quite slow
- Lesson 6 – user rotated textured cube, rather slow
- Lesson 7 – with light
- Lesson 8 – transparent cube, very slow
- Lesson 9 – moving objects
- Lesson 10 – nano doom, too slow
- Lesson 11 – sphere, too slow
- Lesson 12 – rotating sphere with light – a little slow
- Lesson 13 – too slow
- Lesson 14 – teapot model, nice
- Lesson 15 – rotating earth, too slow
Should jsc also support converting (C#, F#) IL to HLSL “x-shader/x-fragment“?
Would be cool to write a shader effect, debug it in Windows Presentation Foundation and run it in browser on javascript within WebGL.
OpenGL ES 2.0 is not supported on lots of common hardware. That means
there are a lot of machines that will not be able to run WebGL.
WebGL, being 100% dependent on JavaScript to do an application’s scene
graph, is going to have serious problems drawing more than a few pieces of
geometry at 60hz except in very special cases or on very fast machines
March 7, 2010
Seagate FreeAgent losing files
So a while ago I did buy this cool 1 TB external hard drive. Today it lost some of the new files I uploaded. Again. To overcome this issue I needed to run Check Disk Tool.
If it finds some orphaned files they might be placed here:
\found.000\dir0000.chk
Update: As do others. And here.
Windows was unable to save all the data for the file F:/$Mft. That data has been lost. This error may be caused by a failure of your computer hardware or network connection. Please try to save this file elsewhere.
Index verification completed.CHKDSK is recovering lost files.Recovering orphaned file TOF~3 (5821) into directory file 250.
March 5, 2010
How to learn
“I see and I forget, I hear and I remember, I do and I understand.” Confucius
- Analogies and Metaphors
- Mental Pictures
- Dig a Foundation
- Become the Teacher
- Stop Taking Rigid Notes
- Diagram
- Pegging
16578 = The sword cut through the loop before Jonathan…
Thanks Scott Young!
See also:
March 4, 2010
JSC Ultra Application to Support FSharp
This is awesome
You will basically be able to write code for javascript, java applets and flash in F#!

March 1, 2010
MonetizationUseCase
Your game has been bound to a market place. The compiler will help you integrate to it by rewriting method calls to actually show up Shop User Interface at the right time.
What are we selling?
Buy MoreArmor for 40 €
This post is about a probable future feature of MonetizationAttribute.
15 static class MonetizationUseCase
16 {
17 class Player
18 {
19 public bool MoreArmorBought;
20
21 public bool AppearBigger;
22 }
23
24 [Monetization(Prize = 40 /*€*/)]
25 public static void BuyMoreArmor(
26 this Player p,
27 string ArmorType,
28 Action YieldReturn)
29 {
30 // the rewriter injected code to ask user for cash
31 // if he did not pay this code did not get called
32
33 // lets add some value what the user payed for
34 p.MoreArmorBought = true;
35
36 // this method finished and now we should let
37 // the callee know about it
38 YieldReturn();
39 }
40
41 public static void ByMoreArmor_Click(this Player p)
42 {
43 p.BuyMoreArmor(“BetterArmor”,
44 delegate
45 {
46 if (p.MoreArmorBought)
47 {
48 // BetterArmor makes the player bigger
49 p.AppearBigger = true;
50 }
51 else
52 {
53 // no cash? too bad…
54 Console.Beep();
55 }
56 }
57 );
58 }
59 }
xxx

































