• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.


  • Content count

  • Joined

  • Last visited

Community Reputation

209 Neutral

About ruphert

  • Rank

Personal Information

  1. The crash was unrelated. Thanks for the CRT tip.  Visual Leak Detector is very good too.
  2. No, the memory leak remains. I will need to isolate the problem somehow cause right now there is a 16kb leak on every initialized script.
  3. Its working. The issue was unrelated to gcc. It turns out some old or seemingly random angelscript code was used in creating the lib. A full clean of angelscript and rebuilding again helped.
  4. Hey, After switching to Angelscript 2.27.1 I get this crash on linux. But it happens only if I compile on my machine with gcc 4.3. On gcc 4.7 it works fine.   The crash happens right after calling a second function, first script whatsoever. Any idea what this is? The array is empty and the index is 1 in this case. KAGdedi: ../../source/as_array.h:158: T& asCArray<T>::operator[](size_t) [with T = asCScriptFunction*]: Assertion `index < length' failed. Program received signal SIGABRT, Aborted. 0xf7fdb425 in __kernel_vsyscall () (gdb) bt #0 0xf7fdb425 in __kernel_vsyscall () #1 0xf7d101df in raise () from /lib/i386-linux-gnu/libc.so.6 #2 0xf7d13825 in abort () from /lib/i386-linux-gnu/libc.so.6 #3 0xf7d09085 in ?? () from /lib/i386-linux-gnu/libc.so.6 #4 0xf7d09137 in __assert_fail () from /lib/i386-linux-gnu/libc.so.6 #5 0xf737929d in asCArray<asCScriptFunction*>::operator[](unsigned int) () from Base/../libJuxta_dedi.so #6 0xf73ce434 in CallSystemFunction(int, asCContext*, void*) () from Base/../libJuxta_dedi.so #7 0xf7372b34 in asCContext::ExecuteNext() () from Base/../libJuxta_dedi.so #8 0xf737044a in asCContext::Execute() () from Base/../libJuxta_dedi.so #9 0xf70b131e in asScript::ExecuteWithDebug (this=0x8225530, ctx=0x81ec0e8) at ../Scripting/asScript.cpp:385 #10 0xf70b1eeb in asScript::executeFunctionByName (this=0x8225530, name=...) at ../Scripting/asScript.cpp:506 #11 0xf70b60a2 in asScriptManager::runScriptFromFile (this=0x80d0e54, fileName=..., entryFunction=..., fileMatch=false) at ../Scripting/asScriptManager.cpp:766 #12 0xf70ac39d in CScript::RunScriptFromFile (this=0x80d0e50, fileName=..., entryFunction=..., fileMatch=<optimized out>) at ../Scripting/Script.cpp:89 #13 0xf6f2b943 in CGame::Run (this=0x8175bd8, argc=1, argv=0xffffd214) at ../Game/GameDLL.cpp:475 #14 0xf6f1620f in GameDLLInit (ie=..., argc=1, argv=0xffffd214) at ../Game/GameDLL.cpp:94 #15 0x0804c078 in CApplication::LoadGameDLL (this=0x80cc088, filename=0x80cc2f4 "Base/../libJuxta_dedi.so", argc=1, argv=0xffffd214) at ../App/main.cpp:346 #16 0x0804e8c5 in CApplication::Run (this=0x80cc088, argc=1, argv=0xffffd214) at ../App/main.cpp:228 #17 0x0804c3ed in main (argc=1, argv=0xffffd214) at ../App/main.cpp:623 (gdb)
  5. I tried the AOT compiler however it produces hundreds of gigabytes (not joking) of c++ code. You can imagine that is useless.   Most of the code I'd like to translate is pretty straightforward. For example, here you just need to change @ to *. void onTick( CMap@ this ) { // local player check end CBlob@ localBlob = getLocalPlayerBlob(); if (localBlob !is null) { if (!myPlayerGotToTheEnd && (localBlob.getPosition() - endPoint).getLength() < 32.0f) { myPlayerGotToTheEnd = true; Sound::Play("/VehicleCapture"); } } There might be a problem with virtual classes and such. But I purposfully avoid using AS specific things like traits.   The file size of these translations won't be small too, because I imagine all the global vars and functions need to be in one common header attached to every single translated script, however it won't be anywhere near a couple gigs.
  6. Will upgrade to the latest Angelscript cause that sounds like it might be it.   I use Visual Leak Detector and that was its output.  Will report back.
  7. I'm sporting the idea of having a Angelscript to C++ automatic translator. I know it's not an easy task and not everything can be translated, however I have an idea how to do it. Is anyone interested working on this with me as a paid job?
  8. Visual Studio 2010 Angelscript 2.26.2   The crash happens on next map (after resources are freed, and only in the release mode). I'm not sure now this is the reason for the crash, so lets leave it. However I have a memory leak (might be related) and I need some help figuring out what causes this. The leak happens on every single script in the game. What do you think it is leaking ? d:\transhuman\kag\3rd\angelscript\sdk\angelscript\source\as_builder.cpp (3529): (Module name unavailable)!asCBuilder::GetParsedFunctionDetails + 0x14 bytes d:\transhuman\kag\3rd\angelscript\sdk\angelscript\source\as_builder.cpp (3595): (Module name unavailable)!asCBuilder::RegisterScriptFunctionFromNode d:\transhuman\kag\3rd\angelscript\sdk\angelscript\source\as_builder.cpp (658): (Module name unavailable)!asCBuilder::RegisterNonTypesFromScript + 0x1E bytes d:\transhuman\kag\3rd\angelscript\sdk\angelscript\source\as_builder.cpp (569): (Module name unavailable)!asCBuilder::ParseScripts d:\transhuman\kag\3rd\angelscript\sdk\angelscript\source\as_builder.cpp (231): (Module name unavailable)!asCBuilder::Build d:\transhuman\kag\3rd\angelscript\sdk\angelscript\source\as_module.cpp (222): (Module name unavailable)!asCModule::Build + 0xB bytes d:\transhuman\kag\trunk\scripting\angelscript\add_on\scriptbuilder\scriptbuilder.cpp (651): (Module name unavailable)!CScriptBuilder::Build + 0x17 bytes d:\transhuman\kag\trunk\scripting\angelscript\add_on\scriptbuilder\scriptbuilder.cpp (143): (Module name unavailable)!CScriptBuilder::BuildModule d:\transhuman\kag\trunk\scripting\asscript.cpp (201): (Module name unavailable)!asScript::loadScript + 0xB bytes d:\transhuman\kag\trunk\scripting\asscriptmanager.cpp (371): (Module name
  9. Hey, I'm experiencing a crash in free() on exit. I'm lost, so maybe you can tell me if I did something wrong in the bindings?   struct Tile { b2Fixture* edgeN, *edgeS, *edgeW, *edgeE; u16 blobid1, blobid2; u16 backblobid1, backblobid2; TileType type; u16 flags; u8 support; u8 dirt; u8 light; u8 noise; u8 damage; Tile(); Tile( const TileType t ); Tile( Tile& t ); Tile& operator=(const Tile& t) { type = t.type; support = t.support; dirt = t.dirt; light = t.light; flags = t.flags; noise = t.noise; damage = t.damage; return *this; } bool operator==(const Tile& rhs) { return (type == rhs.type); // legacy } bool operator==(const Tile& rhs) const { return (type == rhs.type); // legacy } enum TileFlags { SPARE_0 = 0x01, BACKGROUND = 0x02, SOLID = 0x04, LADDER = 0x08, LIGHT_PASSES = 0x10, WATER_PASSES = 0x20, FLAMMABLE = 0x40, PLATFORM = 0x80, LIGHT_SOURCE = 0x100, MIRROR = 0x200, FLIP = 0x400, ROTATE = 0x800, SPARE_1 = 0x1000, SPARE_2 = 0x2000, SPARE_3 = 0x4000, SPARE_4 = 0x8000 }; }; The binding: r = engine->RegisterObjectType("Tile", sizeof(Tile), asOBJ_VALUE | asOBJ_POD | asOBJ_APP_CLASS_CA); assert(r >= 0); // Set Vec2f behaviour. // Initialisation and deinitialisation r = engine->RegisterObjectBehaviour("Tile", asBEHAVE_CONSTRUCT, "void f()", asFUNCTIONPR(constructorTile, (void*), void), asCALL_CDECL_OBJLAST); assert(r >= 0); r = engine->RegisterObjectBehaviour("Tile", asBEHAVE_DESTRUCT, "void f()", asFUNCTION(deconstructorTile), asCALL_CDECL_OBJLAST); assert(r >= 0); r = engine->RegisterObjectProperty("Tile", "TileType type", asOFFSET(Tile, type)); assert(r >= 0); r = engine->RegisterObjectProperty("Tile", "u8 support", asOFFSET(Tile, support)); assert(r >= 0); r = engine->RegisterObjectProperty("Tile", "u8 dirt", asOFFSET(Tile, dirt)); assert(r >= 0); r = engine->RegisterObjectProperty("Tile", "u8 light", asOFFSET(Tile, light)); assert(r >= 0); r = engine->RegisterObjectProperty("Tile", "u16 flags", asOFFSET(Tile, flags)); assert(r >= 0); r = engine->RegisterObjectProperty("Tile", "u8 damage", asOFFSET(Tile, damage)); assert(r >= 0); r = engine->RegisterObjectProperty("Tile", "u8 noise", asOFFSET(Tile, noise)); assert(r >= 0); r = engine->RegisterObjectProperty("Tile", "u16 blobid1", asOFFSET(Tile, blobid1)); assert(r >= 0); r = engine->RegisterObjectProperty("Tile", "u16 blobid2", asOFFSET(Tile, blobid2)); assert(r >= 0); r = engine->RegisterObjectProperty("Tile", "u16 backblobid1", asOFFSET(Tile, backblobid1)); assert(r >= 0); r = engine->RegisterObjectProperty("Tile", "u16 backblobid2", asOFFSET(Tile, backblobid2)); assert(r >= 0); r = engine->RegisterObjectMethod("Tile", "Tile& opAssign(const Tile &in)", asMETHODPR(Tile, operator=, (const Tile&), Tile&), asCALL_THISCALL); assert(r >= 0); r = engine->SetDefaultNamespace("Tile"); assert( r >= 0 ); r = engine->RegisterEnum("TileFlags"); assert( r >= 0 ); r = engine->RegisterEnumValue("TileFlags", "SPARE_0", Tile::SPARE_0); assert( r >= 0 ); r = engine->RegisterEnumValue("TileFlags", "SOLID", Tile::SOLID); assert( r >= 0 ); r = engine->RegisterEnumValue("TileFlags", "BACKGROUND", Tile::BACKGROUND); assert( r >= 0 ); r = engine->RegisterEnumValue("TileFlags", "LADDER", Tile::LADDER); assert( r >= 0 ); r = engine->RegisterEnumValue("TileFlags", "LIGHT_PASSES", Tile::LIGHT_PASSES); assert( r >= 0 ); r = engine->RegisterEnumValue("TileFlags", "WATER_PASSES", Tile::WATER_PASSES); assert( r >= 0 ); r = engine->RegisterEnumValue("TileFlags", "FLAMMABLE", Tile::FLAMMABLE); assert( r >= 0 ); r = engine->RegisterEnumValue("TileFlags", "PLATFORM", Tile::PLATFORM); assert( r >= 0 ); r = engine->RegisterEnumValue("TileFlags", "LIGHT_SOURCE", Tile::LIGHT_SOURCE); assert( r >= 0 ); r = engine->RegisterEnumValue("TileFlags", "MIRROR", Tile::MIRROR); assert( r >= 0 ); r = engine->RegisterEnumValue("TileFlags", "FLIP", Tile::FLIP); assert( r >= 0 ); r = engine->RegisterEnumValue("TileFlags", "ROTATE", Tile::ROTATE); assert( r >= 0 ); r = engine->RegisterEnumValue("TileFlags", "SPARE_1", Tile::SPARE_1); assert( r >= 0 ); r = engine->RegisterEnumValue("TileFlags", "SPARE_2", Tile::SPARE_2); assert( r >= 0 ); r = engine->RegisterEnumValue("TileFlags", "SPARE_3", Tile::SPARE_3); assert( r >= 0 ); r = engine->RegisterEnumValue("TileFlags", "SPARE_4", Tile::SPARE_4); assert( r >= 0 ); r = engine->SetDefaultNamespace(""); assert( r >= 0 );   And some functions that use it: r = engine->RegisterObjectMethod("CMap", "void server_SetTile(Vec2f pos, const Tile &in tile)", asMETHODPR( CMap, server_SetTile, (Vec2f, const Tile&), void), asCALL_THISCALL); assert(r >= 0); r = engine->RegisterObjectMethod("CMap", "Tile getTile( Vec2f pos ) const", asMETHODPR( CMap, getTile, (Vec2f) const, Tile), asCALL_THISCALL); assert(r >= 0); r = engine->RegisterObjectMethod("CMap", "Tile getTileFromTileSpace( Vec2f pos ) const", asMETHODPR( CMap, getTile_Vec2f, (Vec2f) const, Tile), asCALL_THISCALL); assert(r >= 0); r = engine->RegisterObjectMethod("CMap", "Tile getTile( u32 offset ) const", asMETHODPR( CMap, getTile, (u32) const, Tile), asCALL_THISCALL); assert(r >= 0);
  10. Hey, I need to recompile a script during runtime which has a shared class or shared function. Angelscript doesn't discard those in DiscardModule(). How do I get rid of them at runtime so I can recompile?
  11. Thanks, sent you a PM.
  12. I made a smaller case and found the issue. The JIT compiler doesn't work with virtual functions. Whenever there was a virtual function binding in my engine it crashed with a heap corruption after that. ThyReaper did you know about this?     I made some benchmarks after I made it work and they were quite disheartening. Running with the JIT compiler is actually SLOWER than without it. Did anyone do benchmarks of their own with JIT on/off?
  13. No worries, you're doing great. Thanks for this release!
  14. The thing is, it's a heap corruption so it happens at random locations. I'll try to track down the line or function though...
  15. Visual Studio 2010. It compiles fine, just crashes at run-time