Grimind gameplay trailer

I created official website for Grimind http://www.grimind.com

And the first gameplay trailer is ready, after some troubles with uploading on youtube

Basicly, I spend whole day on struggling with youtube video quality. Every time I uploaded my trailer to youtube, there were unacceptable glitches in the video. Of course on my computer the video looks fine, there was only problem when I uploaded it to youtube. I tried sending different extensions ( .wmv , .mp4 ) , with different frame-rates, bitrates and resolutions – they were ALL corrupted! Finally after some research, I found the solution. The problem was not in my output video but with process of sending it.  I have quite poor internet connection and while uploading video some packets were lost.

This is the link witch I used for uploading videos with glitches:

http://upload.youtube.com/my_videos_upload

and this is the link that sends videos very well

https://upload.youtube.com/my_videos_upload

See the difference? The second one is ssl youtube uploader which is reliable and it sends acknowledgment for every packet. By the way, I don’t know why youtube doesn’t use ssl uploader by default.

Here is glitched trailer if you want to see https://www.youtube.com/watch?v=_3K7wyr2ync

Character change and progress

My friend Młoteczka created for me player graphics which in my humble opinion is awesome! I really like it. So forget about little green mint, now there is great, mysterious and mature green character that perfectly fits into game world. Thank you Młoteczka for that. Check out the art bellow( it is print-screened from game ) and compare with the old one.

And what about game?

Development, Development, Development.

I have full hands of work with Grimind. But hopefully there is progress, I planned everything carefully and I really believe that I will finish the game before next year. For now I have done 5 levels, not much you say? Yeah, maybe… but I really want to polish every detail in game, that’s stronger than me. And I am not talking here about polishing only graphics but especially game play. Every level has his own story, non-repeating game mechanics and puzzles . Now I think about some speeding up work and I came up with new system. I decided to create one level every week, so:

[code]
1 level = 1 week
15 levels(planned) – 5 levels(done) = 10 weeks + C
C = constant of delay
[/code]

Except the game, I plan to create first game trailer soon

upgraded logo and GRIMIND alpha v0.3 release

Helllooooo!

My friend Marcin Dragan updated logo for me, previous one (letter “M”) was too similar to monster energy drink (link lol). Actual one is perfect for me, thank you Marcin. And it’s final logo ( I don’t care about similarity anymore)

Also the game itself got update. Version 0.3 contains the same level as before. But there are few changes, mostly added because of your feedback(thanks a lot):

  • added possibility to pause game, return to menu etc.
  • now player can die/drown if he’s too long under water
  • reduced heaviness of the player, so he’s now easier to control
  • when player stays too long in shadows or dark area, then he starts to be scared. You can feel his heartbeat and disturbed breathing
  • annoying cut scene is shown only once
  • fixed grammar mistakes

mirror: http://www16.zippyshare.com/v/90778184/file.html

And one more thing: I plan to complete whole game to the end of this year, so it could be possible to play GRIMIND during New Year’s Eve party (link related)

GRIMIND logo and game playtest

Yeah, as you noticed above GRIMIND now has it own logo which is designed and drawn by my friend Marcin Dragan. thank you Marcin, I like it very much. It fits well into game theme =dark | scary | horror like.

Since the last post ie. form GRIMIND alpha release, I got huge feedback from people. Not only from my close friends and academic community, but also from people I don’t know personally. That’s good, I like it. The most noteworthy is the video created by the user Pandara from tigsource.com. He’s hardcore tester, I really enjoyed watching his video review. Generally, many people gave me lots of helpful tips (I am waiting for more) that will take into account when creating the next levels of GRIMIND. Here is the Pandara’s play-test:

GRIMIND release v0.2 – fixed launch bugs

I had some troubles with deploying my GRIMIND setup. Here is link to upgraded (hopefully no more bugs) version:

download upgraded GRIMIND v0.2

The freshest version of Grimind is available on www.grimind.com 

There was actually two problems:

First. The game wasn’t running at all on some computers that have had graphics card with OpenGL support less than version 2.0. This was a failing from my side because I forgot to delete some lines from source code which I put some time ago when I was playing with GLSL shaders. Only OpenGL 2.0 and higher supports basic GLSL

Second bug was not my fault. Some group of people which uses Windows 7 was saying that game has a bug and crashes when they change something in game menu or at the beginning of play. On the other hand there was  group of people who have no error occurred (naturally also Windows 7 users). To solve problem and force game to run correctly they have to set program compatibility with Windows XP service pack 3 (operating system which I’m developing on) or run it with administrator rights. I was very confused about this. How is that? some people have bug, some not, and operating system is the same. Cause of the problem was Windows 7 itself and its data protection. I read that Windows 7 doesn’t allow to modify files on partition where operating system is located ( most cases “c:” drive). So now I know, that the people who said that game is broken have installed it on drive “C”. Finally, I solved this issue by forcing application to be run with administrator rights. Fortunately, Visual Studio has such possibility included, and enabling this feature is pretty simple:

Project Properties -> Configuration Properties -> Linker -> Manifest File -> set UAC Execution Level to requireAdministrator

That’s all, now after building project our executable file will by always forced to run as administrator

To sum up, the new version contains following changes:

  • now game runs with OpenGL support less than version 2.0
  • solved issues with runtime errors on win7
  • removed light border on screens that have display ratio different than 16:10
  • simplified game part when the “…” – that was actually to hard as for first level 🙂
  • game resolution can be changed without game restart

alpha version of GRIMIND released

It has began.

Alpha version of GRIMIND is released to public.

recomended: see upgraded static page for game configurations details

Download GRIMIND alpha

(click download now button)

If you have runtime crashes then set compatibility with windows xp (service pack 3) changed to upgraded version, bug not exist

Two words about game and gameplay:

  • Game contains only first level / episode which is rather easy (i think). Gameplay is maximally linear, the puzzles are also not really complicated. Next chapters of game will give more freedom to player, also scenario will expose more details about player and his amnesia.
  • Actually tiny group of people have already played that game. I have noticed that most difficulty is to get used to player dynamics and his inertia. After about 5 minutes of playing you should start to feel player
  • You should really play in dark as welcome text suggests. This is because 2 reasons:  first- game is more climatic, second- game is really dark, in some moments you wont be able to see your main character if your room in full of light
  • Level contains nearly 1 000 objects mostly rectangles, and about 20 hard coded scripts which are really comfortable to use

As I said before: this is teaser i have used only couple mechanics that are possible in current state of engine, there are many other things I want include in game.

I also love to see your feedback about the game, especially if it was fun to play? what you dislike? how long took you to pass level?

Good luck in playing GRIMIND early version

Enjoy!

GRIMIND

main character of GRIMIND

Finally, I started to develop game named “GRIMIND” – physics based platformer,  more about game itself you can read on dedicated page.  Since this time I am actually focused on building the game,  so levels, scenario, puzzles, valid sounds. Previously I was mostly extending possibilities of my engine “Szamanegnine”  and world editor, now these things are quite in working order and there is no more serious bugs (I hope).

During creation GRIMIND I spotted that this whole thing which is game design it’s not like programing which i was used to. Maybe this is quite obvious but for me It was new experience. Whole thing is based on tools and requires some fantasy in thinking (especially in designing puzzles). Now it’s time to think what playable value my engine has, what will gamers like to see. Turning engine features into game mechanics that’s the deal.

 

 

Currently I’m creating first level. So, stay tuned – playable early alpha demo of GRIMIND is coming!

 

 

water

Hello

It’s been long time since last post, but it wasn’t wasted (i hope so). I fixed a lot of bugs and made few changes that improves performance of engine. Most important upgrade applies to lighting – previously I was clearing screen alpha component for each visible light with glClear(…) then i noticed that this is the bottleneck of lighting system, now I’m just drawing quad with certain dimensions  which set alpha to zero – this approach is faster. Additionally i restrict shadow drawing area to AABB of current light via glScissior(…)  – this helps because shadows were projected to “infinity” (far away of light) what consumes a lot of fillrate.

OK that was not interesting part of work I have done. Let’s look closer on new features (yey) I added.The easiest to  see and most complex is water. To really to talk about it, we must to split it into two planes:

graphics part: which is responsible for general outlook of water so looking wavy and… splashes when something is getting into water or out of water. Splashes are made of particles of which I have mentioned some time ago. Simply – physics part of water reports when, where and how big splash (determined by velocity) should be shown. Splash also is modifying water surface to generate waves on water which are simulated by modified algorithm described in presentation Real Time Fluids in Games (link) by Matthias Müller which general rule goes like this:

[code language=”cpp”]
u[N] – water surface peaks
v[N] – velocity of peaks

for(unsigned int i=1;i<N-1;++i)
{
v[i] +=(u[i-1] + u[i+1])/2 – u[i];
v[i] *= 0.99;
u[i] += v[i] *delta_time;
}
[/code]

when splash occurs i simply add velocity to certain group of vertices, negative velocity when something falls into water, positive otherwise.
– physics part – responsible for applying “fake” buoyancy force. Linear buoyancy itself isn’t hard – just add central force to body. The problem  is with correct rotating body in water which is not so obvious. I was searching  how to do that, i found that is implemented in bullet but it was not enough flexible and complicated (complicated = much lines of code = probably slow 🙂 ) I was looking for something lightweight. I also found that someone implemented buoyancy controller in box2d (see http://personal.boristhebrave.com/project/b2buoyancycontroller and flash demo) but this also was to heavy (computing centroid including rotations). So I came up with my own solution, very approximate btw. It’ based only on AABB of objects so it’s very quick. Most of physics engines uses AABB so i have more than half at the beginning. Next step is to try to minimize object AABB if it is floating on water by applying torque in specific direction. That’s all. As I said,  it has nothing with real buoyancy  but for my purposes it is enough (we all know game programing is art of cheating). Moreover I added new parameter for physics objects which decide if object would sink or float (x<1.f sink ; x>1.f float ; x=1.f stay).

I got some concepts for levels with water… and maybe You have ideas for some puzzles with such mechanics? (yes fluids can also kill like toxic water or immortal lava <pshhhh>).

On video you can see actual state of game / engine. I added some interesting items to this map like trampoline (on the left in beginning) but during video recording I forgot about jumping on it several times to show how it behaves. I collected also new nice textures and climatic ambient sounds that creates climatic scary atmosphere. Of course you should enable full screen for better look.

lighting

Welcome everybody!                                 
Last time I made something for outlook of my game. Previously  I was able to darken environment via manually setting color per each vertex, now besides that, I can also specify global ambient color which is darkening level. Furthermore, it is possible to attach light spot to any object on scene, then every objects that are in certain radius from light are illuminated. Additionally, I implemented shadow casting algorithm basing on this article. But let’s start from the beginning, general recipe for that effect looks pretty simple:

1. Clear screen with ambient color
2. For each lightgradient
     a) set drawing only to alpha channel
     b) remove existing on screen alpha channel
     c) set blending to additive
     d) for each object near light: render shadow using only alpha color
     e) set drawing only to r g b channels
     f) render light only where, there is no shadow
3. copy light-map  existing  on screen to texture
4. clear screen
5. draw scene normally
6. set multiplicative blending ( wherever light-map is black  there will be dark)
7. draw quad with dimensions of  screen textured with light-map
8. bonus:  if emissive light needed draw it again with additive blending

Re 2.f

just draw quad with light gradient texture like image on right, you may also change light color by glColor…

Re 1, 2.b and 4

in opengl we can clear screen by using glClear(GL_COLOR_BUFFER_BIT)  function as long in this case we aren’t using depth and stencil buffers. Additionally  we can set global ambient color via  glClearColor(ambientR,ambientG,ambientB,0.f);  so it will immediately fill screen with wanted color

Re 2.a 2.e

setting true or  false in parameters enables or disables drawing to that channel  glColorMask(red,green,blue,alpha); Re 3 we can copy pixels to texture by using glCopyTexSubImage2D function or… we can skip this point if we previously set rendering directly to texture via FrameBufferObjects (FBO) then we can avoid copping pixels from  screen to texture. It seems to be large optimization, In by case glCopyTexSubImage2D works faster than FBO and everywhere people are writing that it should be slower. I don’t know why this is so. I suspect that it can be because my old integrated graphics card (intel GMA X3100)

Re 2.c 2.f and 6

blend function so the way how existing color of pixel and currently drawing is mixed we can set by glBlendFunc(enum ,enum) it is still bit confusing to me but I understood couple of setups

  • multiplicative: previous color * actual color  = glBlendFunc(GL_DST_COLOR, GL_ZERO)
  • additive: previous color + actual color =  glBlendFunc(GL_ONE, GL_ONE)
  • drawing inversely proportional to amount of alpha =  glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_ONE)

Note: this lighting system was done without any shaders,  only pure OpenGL with fixed pipeline. The essence is to know how to generate light texture and using appropriate blending functions

2.d is most complicated step. It consist in drawing shadows only with alpha set to 1.0. Firstly my must find all overlapping objects with light, I have done that by comparing axis aligned bounding boxes. Then for each vertex in found object we must calculate vector from light, next we perform dot product on it and object edge normal to determine if this vertex is necessary to cast shadow. After that,  draw each found vertex and vertex casted outside light. As performance optimization we can set glScissor test to save some fill rate.

Particle effects

Hello

At the beginning I want to say that approach mentioned here in my earlier post – so creating sequences of frames consisting for full animation of explosion was totally wrong. After creating one explosion animation in ExploTexGen or Particle Illusion, I wanted to have more of these. So simply I started to create another fixed animations. What was th result? TGA files weighing over 2MB each with poor scalability and repeatable look. It wasn’t too efficient way to produce graphics effects. Additionally, I spent a lot of time on creating, exporting and transforming to looping animation.

So, I decided to create my particle system which could create various effects. Firstly I was thinking that I can use Bullet physics engine to simulate particles without collision. But then, I found that Bullet is calculating too much – too much for simple movement with gravitation, without any collision response. So I am calculating trajectory of  particles by myself. Each particle emitter has 20 parameters which determine appearance of spawned particles. most important of them are:

  • size of particle ( more precisely it is side length of textured square )
  • texture – it can be really small, I’m using 8×8 and 16×16 pixels
  • color – RGBA  begin values
  • lifeTime -as the name suggests, it is time after which particle is removed
  • dieTime – time after which particle begins to die, so it’s color and size starts interpolating to dieColor and dieSize
  • frequency – amount of particles

Full options visible on screenshoot.

It can be used for simulating things like:

  • fire
  • smoke
  • wind steams
  • rain, snow
  • explosion
  • blood
  • falling leaves from trees
  • spells, sparks
  • teleports
  • magic areas
  • waterfalls
  • fountains

As well as lot of other things which I can’t now come up with. What is important is that these various effects are produced / simulated in the same way but with different parameters ( so, logic for falling leaves is the same like in simulating fire or gas steam but final effect is totally different). Moreover, the design of new graphical effects is fast as hell. All particle emitters shown in the video bellow were created in less than 15 minutes. Of course everything is integrated in my world editor (new section added)

On video You can see examples of particle emitters and at the end – gas stream which is also forcefield and source of sound