VeTaL Posted November 22, 2011 Share Posted November 22, 2011 Okay, so... Serious game - is a game, where player learn/study something. The main problem is to combine gameplay and learning in such a way, when player actually doesn't feel that he is stydying in common way. Classic examples are different realistic game simulators. Quite good example (as for me) is "Call of Duty: Black Ops" - after playing this common FPS, i went to wiki and read lot of stuff about Cold War - because of this game. So, actually, it can be counted as Serious game. Also, Civilisation is quite nice example: they have their own civilipedia to provide some historical information. Nowadays, serious games are very potential: lots of schools/colledges/universities are trying to combine learnin with playing and get successfull results. This project is just "unfinished proof-of-concept". Gameplay is planned to be a "realtime historical strategy with undirect control"(Settlers/Majesty). As the main idea, I took nice small game, Breaking The Tower, which was written by Notch (hello, minecraft funs) for a contest in two days. My thoughts was "game with undirect control are quite slow" -> "if i merge slow gameplay with some kind of civilopedia, that would give a player some time on learning" -> "why not to use wiki?" -> "why not to use LE+Blitzmax, as it provides render internet pages on the same form, where game can be rendered" I spent all previous weekend on this project (+ some additional evenings... actually, not too much time: also, i opened about a half of map in Skyrim ) This is what i have now: The main questions to all of the guys, who would decide to test it: - fps. Btw, I was impressed by fps increasing in release version: i had about 40 fps in debug version and about 100 fps in release. There are 20 bots on level now. - UI. Do you have any ideas/recommendations with UI placement? I also tried to place wiki undre the render window, but it also seems to be bad. - Camera control. Any ideas are wellcome. I'm not actually satisfied with this camera. Of cource, it needs collision detection, but it proof-of-concept. I'm not satisfied by camera's behaviour: its hard to make some accurate movements when the camera is close to central pivot. - AI. Bots are just running through the island in random direction. But they have 3 interrupters: by time (after Rnd(80, 120) they change their direction), by distance from main player's building, and by water (if the scanner "feels" water, they should turn back) - Explorer component. What can be done with that nasty error? The main logic function is Method UpdateLogic() UpdateWalkers() timer.Update() AvoidWater() ' if pick.y < 3, set isInterrupted =1, interruptionDetails = pick.y AvoidLost() ' if distance to building is > 30, set isInterrupted =2, interruptionDetails = dist If timer.IsRinging() isInterrupted = 2 ' time to change direction, once per Rnd(80, 120) End If If (isInterrupted > 0) rndRes = Rnd(0, 2) ' generates 0 or 1 randomInt:Int = (rndRes * 2) - 1 ' generates -1 or 1 Select isInterrupted Case 1 'water ahead TurnAtAngle(Rnd(80, 110) * randomInt) DebugLog "[@] Interruption by water(1). Scanner height is " + interruptionDetails Case 2 'timer interruption TurnAtAngle(Rnd(45, 135)) DebugLog "[@] Interruption by timer(2)." Case 3 'too far from buildings TurnAtAngle(Rnd(160, 200)) DebugLog "[@] Interruption by distance(3). Dist is " + interruptionDetails End Select isInterrupted = 0 EndIf End Method Quote Working on LeaFAQ Link to comment Share on other sites More sharing options...
Rick Posted November 22, 2011 Share Posted November 22, 2011 I like this idea and have many times thought about making something similar where you don't actually do anything. You just watch a civilization evolve in front of your eyes. Will check this out when I get home. Quote Link to comment Share on other sites More sharing options...
klepto2 Posted November 22, 2011 Share Posted November 22, 2011 The idea is very nice. Some hints from my point of view: - when using blitzmax, you don't need to provide the engine.dll - protect and pak your assets - write your own ingame gui, even if you want to integrate wikipedia, you may do this by manual parsing the page or by using something like Awesomium or Berkelium - i know the models are wip or placeholdes, but try to fix the materials of the palms. texture0="abstract::palm_fronds.dds" texture1="abstract::palm_frondsDOT3.dds" alphatest=1 cullface=0 shader="abstract::mesh_diffuse_bumpmap_sway.vert","abstract::mesh_diffuse_bumpmap_alphatest.frag" shadowshader="abstract::mesh_shadow_sway.vert","abstract::mesh_shadow.frag" - take a look on "Steering Behaviors For Autonomous Characters" at http://www.red3d.com/cwr/steer/ Quote Windows 10 Pro 64-Bit-Version NVIDIA Geforce 1080 TI Link to comment Share on other sites More sharing options...
VeTaL Posted November 22, 2011 Author Share Posted November 22, 2011 Thanks, guys, for a feedback. Afaik, Awesomium was not free... and i didnt heard about Berkelium - found some OpenGL samples, would try to use them. Quote Working on LeaFAQ Link to comment Share on other sites More sharing options...
VeTaL Posted November 22, 2011 Author Share Posted November 22, 2011 I think, i'll continue proof-of-concept using BlitzMax, and then, if everything would be okay - i'll switch to Le.net or pure C++ So, main form would still be in maxgui, but still any ideas/guggestions are very welcome. Quote Working on LeaFAQ Link to comment Share on other sites More sharing options...
VeTaL Posted November 23, 2011 Author Share Posted November 23, 2011 Version 0.45 Added "thoughts" All buttons on form works now Improved AI: now bots should never be in water or far from building. Sharing experience: In previous version, in case of interruption, bot turned at related random angle. Sometimes some sh*t happened and rotation function called twice or more times. So, but turns left, then once more time left, then - right. In worst case, he continued running from building. Now i understood, that i need to give bot not related, but absolute angle. Now it is working in such way: before: TurnAtAngle(Rnd(80, 110) * randomInt) now: TurnToAngle(GetPlayerBulidingAngle() + Rnd(60) - 30) Method GetPlayerBulidingAngle:Int() closestPlayersBuilding = GetClosestPlayersBuildingModel(model) PointEntity(scanPivot, closestPlayersBuilding) Local retVec:Tvec3 = EntityRotation(scanPivot, 1) DebugLog "[!!!] Returning angle: " + retVec.y Return retVec.y EndMethod So, i'm pointing scanner (anyway he do nothing except raytracing down, it is not depends on scanner's rotation) at players building, getting it new angle and pointing player that direction +- 30 degrees. That looks mush better. Just replace exe file. Edited: found out, why some strings are still shown on the screen with the strange behavior: some bots are falling from terrain. 0.45.zip Quote Working on LeaFAQ Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.