Thanks so much to everyone who made the alpha a great success! I’m blown away that people were able to look past the bugs and crashes and clunky controls and somehow get a positive experience out of it! It gives me hope and motivation to press on.
I got a ton of very useful feedback. Here’s a quick summary of what I learned:
- The atmosphere and tone is cool and unique.
- The text-message-driven story works pretty well.
- Everyone immediately says “Mirror’s Edge + Minecraft”… but then realize they’re okay with that!
- The physics is kinda buggy.
- Mouse inversion, gamma settings, and vsync toggling are a must.
- The controls are unnecessarily complex. Too many keys.
- Buggy physics. Player gets stuck in the environment a lot. Large objects occasionally start floating around on their own. Swimming doesn’t really work at all.
- Combat is weak. You left-click once and hope that kills the enemy before it kills you.
- It’s rather disconcerting being able to look down your own nose. Also, everyone thinks the player model is a female when in fact it’s a male with big pecs. Yikes.
- Oh yes, there’s lots of physics bugs.
- The tutorials are sometimes easy to miss, and the game expects you to have a move fully mastered immediately after learning it.
- Handling publicity and responding to feedback is a lot more work than I originally thought! And hosting large downloads on “pay for what you use” web hosts is a baaad idea. Good problems to have though.
I’ve already set to work fixing a lot of these issues, especially with the controls and physics. My number one priority is getting the player animation and movement perfect, which is a pretty long way from where we are now.
I tentatively fixed the “seeing down your own nose” issue. But look what I had to do:
Freaking creepy, amirite? But this way facial features don’t show up in first-person view, and the shadows still look okay.
Could make for an interesting creepy NPC maybe. Who knows.
Also someone on Reddit I think asked about the possibility of a third-person view. I don’t think it will make it into the final cut, but I got a quick demo working. Here’s what it looks like:
Notice I switched to a female model since everyone thought that’s what it was anyway. The animations look pretty rough in third person, but then again, Mirror’s Edge looks like this in third person.
Just a quick update this time. Been thinking about creating little development videos similar to Wolfire’s. Would anyone be interested in seeing that?



I think it would be best to remove the head altogether. You don’t actually see much of your face when you look down (well, depends on the face’s and the nose’s shape, but anyway).
Development videos? Yes please.
I just kept the head to make the shadows work properly.
That’s a very good point, didn’t think about that.
Would also second development videos, Wolfire’s videos are always something I look forward to watching each week. The more technical the better ;D
Looks you got some great feedback, that should keep you busy for a bit
Well, wolfire is the best game dev team ever, so copying their practices can’t be bad usually.
Really good news!
Development videos FTW!
System.NullReferenceException: Object reference not set to an instance of an object.
at Lemma.Components.Water.Lemma.Components.IUpdateableComponent.Update(Single dt)
at Lemma.Main.Update(GameTime gameTime)
at Lemma.GameMain.Update(GameTime gameTime)
at Microsoft.Xna.Framework.Game.Tick()
at Microsoft.Xna.Framework.Game.HostIdle(Object sender, EventArgs e)
at Microsoft.Xna.Framework.GameHost.OnIdle()
at Microsoft.Xna.Framework.WindowsGameHost.RunOneFrame()
at Microsoft.Xna.Framework.WindowsGameHost.ApplicationIdle(Object sender, EventArgs e)
at System.Windows.Forms.Application.ThreadContext.System.Windows.Forms.UnsafeNativeMethods.IMsoComponent.FDoIdle(Int32 grfidlef)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at Microsoft.Xna.Framework.WindowsGameHost.Run()
at Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun)
at Lemma.Program.Main(String[] args)
Crashed on me, Crash dump:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Lemma.Components.Map.addBox(Box box)
at Lemma.Components.Map.buildFromBoxes(IEnumerable`1 boxes)
at Lemma.Components.Map.Regenerate()
at Lemma.Factories.PlayerFactory.c__DisplayClass6a.c__DisplayClass70.b__58()
at Lemma.Components.Animation.Execute.UpdateInterval(Single x)
at Lemma.Components.Animation.Sequence.UpdateInterval(Single x)
at Lemma.Components.Animation.Interval.Update(Single dt)
at Lemma.Components.Animation.Lemma.Components.IUpdateableComponent.Update(Single dt)
at Lemma.Main.Update(GameTime gameTime)
at Lemma.GameMain.Update(GameTime gameTime)
at Microsoft.Xna.Framework.Game.Tick()
at Microsoft.Xna.Framework.Game.HostIdle(Object sender, EventArgs e)
at Microsoft.Xna.Framework.GameHost.OnIdle()
at Microsoft.Xna.Framework.WindowsGameHost.RunOneFrame()
at Microsoft.Xna.Framework.WindowsGameHost.ApplicationIdle(Object sender, EventArgs e)
at System.Windows.Forms.Application.ThreadContext.System.Windows.Forms.UnsafeNativeMethods.IMsoComponent.FDoIdle(Int32 grfidlef)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at Microsoft.Xna.Framework.WindowsGameHost.Run()
at Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun)
at Lemma.Program.Main(String[] args)
Also love your game. Got addicted from the first time I played. Can’t wait for the full release.
Thanks! Glad you like it! I think I’ve fixed the errors you reported. Thanks for checking in.
System.NullReferenceException: Object reference not set to an instance of an object.
at Lemma.Components.Water.Lemma.Components.IUpdateableComponent.Update(Single dt)
at Lemma.Main.Update(GameTime gameTime)
at Lemma.GameMain.Update(GameTime gameTime)
at Microsoft.Xna.Framework.Game.Tick()
at Microsoft.Xna.Framework.Game.HostIdle(Object sender, EventArgs e)
at Microsoft.Xna.Framework.GameHost.OnIdle()
at Microsoft.Xna.Framework.WindowsGameHost.RunOneFrame()
at Microsoft.Xna.Framework.WindowsGameHost.ApplicationIdle(Object sender, EventArgs e)
at System.Windows.Forms.Application.ThreadContext.System.Windows.Forms.UnsafeNativeMethods.IMsoComponent.FDoIdle(Int32 grfidlef)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at Microsoft.Xna.Framework.WindowsGameHost.Run()
at Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun)
at Lemma.Program.Main(String[] args)
Awesome game! Some really unique elements! Found a bug though:
System.IndexOutOfRangeException: Indexet låg utanför gränserna för matrisen.
vid Lemma.Components.Map.addBox(Box box)
vid Lemma.Components.Map.buildFromBoxes(IEnumerable`1 boxes)
vid Lemma.Components.Map.Regenerate()
vid Lemma.Factories.PlayerFactory.c__DisplayClass6a.c__DisplayClass70.b__58()
vid Lemma.Components.Animation.Execute.UpdateInterval(Single x)
vid Lemma.Components.Animation.Sequence.UpdateInterval(Single x)
vid Lemma.Components.Animation.Interval.Update(Single dt)
vid Lemma.Components.Animation.Lemma.Components.IUpdateableComponent.Update(Single dt)
vid Lemma.Main.Update(GameTime gameTime)
vid Lemma.GameMain.Update(GameTime gameTime)
vid Microsoft.Xna.Framework.Game.Tick()
vid Microsoft.Xna.Framework.Game.HostIdle(Object sender, EventArgs e)
vid Microsoft.Xna.Framework.GameHost.OnIdle()
vid Microsoft.Xna.Framework.WindowsGameHost.RunOneFrame()
vid Microsoft.Xna.Framework.WindowsGameHost.ApplicationIdle(Object sender, EventArgs e)
vid System.Windows.Forms.Application.ThreadContext.System.Windows.Forms.UnsafeNativeMethods.IMsoComponent.FDoIdle(Int32 grfidlef)
vid System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
vid System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
vid System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
vid System.Windows.Forms.Application.Run(Form mainForm)
vid Microsoft.Xna.Framework.WindowsGameHost.Run()
vid Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun)
vid Lemma.Program.Main(String[] args)
System.NullReferenceException: Object reference not set to an instance of an object.
at Lemma.Components.Water.Lemma.Components.IUpdateableComponent.Update(Single dt)
at Lemma.Main.Update(GameTime gameTime)
at Lemma.GameMain.Update(GameTime gameTime)
at Microsoft.Xna.Framework.Game.Tick()
at Microsoft.Xna.Framework.Game.HostIdle(Object sender, EventArgs e)
at Microsoft.Xna.Framework.GameHost.OnIdle()
at Microsoft.Xna.Framework.WindowsGameHost.RunOneFrame()
at Microsoft.Xna.Framework.WindowsGameHost.ApplicationIdle(Object sender, EventArgs e)
at System.Windows.Forms.Application.ThreadContext.System.Windows.Forms.UnsafeNativeMethods.IMsoComponent.FDoIdle(Int32 grfidlef)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at Microsoft.Xna.Framework.WindowsGameHost.Run()
at Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun)
at Lemma.Program.Main(String[] args)
Also, trying to build with the red blocks is /really/… would obtuse be the right word? It’s kinda wonky.
Doing excellent so far, though; I really like the aesthetic of the game world. The phone texting is pretty cool too.
System.InvalidOperationException: This resource could not be created.
at Microsoft.Xna.Framework.Audio.AudioEngine..ctor(String settingsFile, TimeSpan lookAheadTime, String rendererId)
at Lemma.Main..ctor()
at Lemma.GameMain..ctor(Boolean allowEditing, String mapFile)
at Lemma.Program.Main(String[] args)