#1 2015-10-25 21:30:23

chasester
Member

Rival: Cube/tesseract mod

Media

Bullet-Tess Video

Angel script + Bullet Video - Lastest

Latest exe for Rival


As i have been stating for some time I am looking to turn tesseract: cube 2 engine into a marketable engine (meaning something that rivals or at least comparable to unity, unreal, cry etc). So I will be using this forum topic to discuss changes, and answer any questions. Also I will be laying out a general road map:

Road Map
  • Scripting - Using angelscript

    • Integrate Angel library into tesseract

    • Setup basic functions to work in script

    • Setup math functions like vec trig calls, etc

    • Attach editnodes (aka extenties) to the gamenode, and scriptcrl, allowing for script to be called and instanced

    • Run all on## calls at correct times (onUpdate, on Render etc)

    • Set up serialization of objects to be stored in the editnode (for saving and recalling)

    • Set up map files to read and write serialized data

    • Set up basic message system so controllers (scriptobjs) can communicate to other game nodes

  • Enty/Node System - Setup a more robust system with a world and scenegraphs

    • setup scenegraph to replace a global entities vector allowing for backloading on larger maps and multiple scenes

    • delink word.cpp and rewrite calls, in a struct world, then Link in editnodes rather than using extentities

    • Make scenegraph more efficient in the storing of data, so that it can predetermine what should and should not be sent for rendering (this will later allow for zones, portals and other calls

    • Set up world to be a collection of scene graphs and octtrees allowing (in the future) mulipule octtrees to allow seemless loading between octrees, allowing for larger map, sizes without the frame drops

  • Physics - Using Bullet Physics

    • Setup up bullet to gamenode integration so that script can update bullet entities

  • Multiplayer - rewrite server code allowing objects to register there properties as watch variables.

  • Animation/Models - Allow for a larger amount of formats, and set up a state machine to determine what animations to run on a per object basis

  • Gui - integrate an external library,

  • Editor - Use new gui and update the editor to allow for easier access to options and set different editing styles modes, and layouts

  • Shaders - Remove cubescript from shaders to make them look less complex and add HDR PBR

This should be in the general order, or operations, the main goal is to set up script to allow for a full game to be made in script, then it will be adding multiplayer suport and then engine updates (gui shaders, editor, animation).

If there are feature request you would like added please comment, I have a much larger list, and I will look at adding it in.

thanx chasester

Last edited by chasester (2015-12-10 06:44:43)

Offline

#2 2015-10-25 21:45:58

chasester
Member

Re: Rival: Cube/tesseract mod

Quick update video, As some people may know I implimented bullet physics with the help of angelo, and was looking to add angel script as the main scripting language in cube. Angel script will control entities through classes, called controllers (this code has been mostly finished and there will be a video in the next week). As for right now, I wanted to show you guys angel script (for those that havent googled it, and a bassic implimentation of the vec struct into angel script.

https://www.youtube.com/watch?v=NiBOhGm … tu.be&hd=1

A few side notes for those that are curious (things that are not in the video). Vec class has 6 properties that can be acessed in angel script, x,y,z,r,g,b. Since union{ float x,y,z; float r,g,b } x=r y=g z=b. So i can simply go:
vec b = 10; //b.x == b.r
since they are looking at the same memory location this still only takes 3 floats of space or 12 bytes. (just like in the actual c++ code);

There are also a few math function implimented, sin asin cos acos tan atan, and consts PI and RAD.

NEXT RELEASE:
next release will probably be a binary release (like the physics release). This will have script based controllers added. Script controllers will be attatched to extentites (the attr# will be removed and instead it will be replace with a serialed version of the instanced class). I will be releasing an example video and a explanation video (explaining the back end functionality, and how to use the ctrls, script etc).

I am very excited about the next release because it will be the most code i have personally written for the project thus far (most of this has been ramming my head agnst the wall trying to get other ppls code to play nice with eachother ;).

Thanx for your interest
chasester

Offline

#3 2015-10-27 20:15:30

Hypernova^
Member

Re: Rival: Cube/tesseract mod

Nice this looks awesome. I have one question though. You mentioned a multiplayer port of the new physics system you're implementing. How are you planning to keep the properties of the physics objects synchronized across all clients? This kind of problem (mostly because of the thin server architecture) has prevented many things (such as Sauer's monsters in multiplayer). As far as I know, this is still an unsolved problem, so I'm really interested to know if you have a solution.

Offline

#4 2015-10-28 18:59:19

chasester
Member

Re: Rival: Cube/tesseract mod

Simple answer:
a complete rewrite of the server/client interface

more complex:
There will be more control by the server. There will be more checks by the server, and angelscript based server code to customize it beyond what the game code says. I have some example code I will be working from, but just know it will be far more advance then sauers severs, and a lot more server intensive (which is a good and a bad thing), but this will be able to be customized more.

in summary:
Its gonna be a while off till i get to server-client, implementation I will talk about this later as we get closer to working on this section of the code.

chasester

Offline

#5 2015-10-28 19:50:50

MajorLunaC
Member

Re: Rival: Cube/tesseract mod

Sounds interesting. If you're really determined, go for it!

As for the server-client system, I've encountered many cases where the Master Server for games has gone down, and no one can play anymore. This especially happened when GameSpy went down, and then EA (cruelly) decided to not make an alternative for about 50+ of those games that needed a new master server. Not even patches to allow others to host the master server. Instead, plenty of player groups made cracks/hacks to host their own master servers for those games. More info:

http://www.kotaku.co.uk/2015/10/28/lega … dead-games

So I was thinking, why need a master server with all the current person-to-person protocols? Why not have a system to use an altered form of the Torrent protocol to constantly have a master server updated between all clients (no actual master server)? Of course filtering/restricting/authenticating the amount and type of data shared would be necessary, but it would solve a big issue, and would allow games to continue even without a dedicated master server (maybe optional as to which master server type you want to use/check). Just a weird idea that came into my head to solve the problem.

Offline

#6 2015-10-29 20:25:11

Hypernova^
Member

Re: Rival: Cube/tesseract mod

( @Chasester ) Cool, this is an interesting idea. I do something similar for my game except each client is responsible for the objects it owns and updates the other clients when something unusual happens. This retains the thin-server/zero-clientside-lag architecture that I love :)
This whole project sounds really awesome, I can't wait to port my game to it :)

Offline

#7 2015-10-31 05:36:22

chasester
Member

Re: Rival: Cube/tesseract mod

@master server
There are many reasons for having a master server:

  • perma bans for cheaters across all servers

  • Automatic game hosting (allowing users to connect to full servers) so users dont have to make decisions

  • global stat systems

Having a master server isn't all bad, forcing players to connect through it is bad. But as for my engine, i wont behandling master severs, for now. Later I will probably allow the game creator to define which server is the master, this variable could be changed in script at any time. So if the game creator's server goes down, or quits broadcasting, then you can simply change the pointing address, or of course connect to the servers directly.

@Client-side/thin-server
I strongly would advise against this. I have written many hacks, write arounds and other things for sauer because of the fact that client determines almost everything. Also this hurts greatly from a modding point of view. For example there are many mods that have been thought of for sauer, that could never been implemented because of the fact that the client determines its location. The server should have just enough control to be able to tell the client what to do. Most game allow the client to determine most things, until it feels that the client is trying to be malicious. In my opinion this is a better form of a server then a heavy client sided peer to peer like system.


@rival
Almost all the front end server code will be rewritten. There will be very little a server cant do, or hast to do. So the server can do whatever it is programed to do. From my pre planning stages, I have determined that the server must do too things:

  • Check the client map to make sure they have the correct map (if not then send the correct map [with embeded config] and textures if necessary)

  • Check the clients game code (this is basically an encrypted compiled code base) ensure that they understand the rules and that the map triggers are the same etc.

I probably will set these two functionalities as defaults and allow the user to turn them off or change the way they operate, (maybe allowing for a quicker version of each rather than checking all the data). All other data pass between the client and the server will be set in the game code. If there is bad language sent it will try to handle it , if not then it will disconnect automatically (like it does already). The main goal of rival is to allow people to create games with out having to modify the source code, so all data, functionality, etc will be determined by the user in script.

I say all of this, and server implementation will not start for another 6 months (or around then). I am looking to have a stable single player version up and running before adding in multiplayer support. I will try to add server functionality as I go so I may have a pre alpha version done by 4 months, but the bulk of it will be handle later. About 75% of the entity editor and game code will be removed and replaced by angel script. This is a large amount of gutting.

As of last night I got the ability of script objects to start a new ridgid body, now I need to set up world control objects, to interface the gamenode, the edit node, the crl script and physics (if its added). So a lot of work still, video Monday night, an explanatory video on tuesday, and source release the same day.

I am throughly excited for this release
chasester

Last edited by chasester (2015-10-31 05:38:15)

Offline

#8 2015-11-03 04:43:11

chasester
Member

Re: Rival: Cube/tesseract mod

New version of Rival is here:

Angel script + Bullet

Of course as always, this is in pre pre pre alpha, so please report any bugs, (especially crashes) that you find so they can be fixed before they become serious.

Here is the release. The 3 script files included described below:

  • Object.halo - this is just a basic implementation of bullets (or a map model with physics). Index determines, which model to render and self.o, and self.rot (later it will be changed to a transform) determine the origin and rotation of the object. Rigidbody is a container class to set variables before finalizing with bullet. For static objects set weight to 0, or for non collidable objects do not setup bullet. It is suggested to save back rigidbody as a static, so that it doesn't have to be reinited every time, saving on speed of implementation (especially in the case of things like bullets).

  • Spawner.halo - This simply spawns 10 objects 10 units apart each, In the future this could be a lot of different things. This is just a basic spawning skeleton.

  • TimeSpawner.halo - This is a time based spawner. Lastmillis is the same as it is in c++ (the time of the last tick). Maxtime is the time until the next drop. And curtime is lastmillis+10 seconds, So we know when lastmillis is > curtime, maxtime has passed. Create object creates an object by a name, (name of the script class).

Rival max object tests

Rival max object tests

Major side note. If you are gonna use the createobject() perpetually, Do not leave it running in the background (you will hate yourself). As for right now there is no cap on the max objects. In The video I left that run for about 5 mins (plus i videoed about a min of code) I ran at in or around 20 fps (not horrid), this was 4 objects a second * 60 seconds a min * (5 mins +1) so about 1,440 objects, (to be honest it's more the rendering that kills this then the ridgid bodies bullet has to calculate.

Above is some images of me leaving my workstation for 10 - 15 mins while leaving this running. It killed my frame rate. This also took about 3 mins to close because bullet and angel had to deallocate all of that memory.

I am curious though (so someone with a more tricked out computer) What is the max number of objects you can spawn, till your frame drops below reasonable?
Winner gets a cookie.

Infrastructure:
For those that are bored already, Probably should skip this part it will get worst:

So now let's talk guts, what makes this work, and how can it be manipulated.

Rival Layout

Above is a simple version of the backend entity system (there are more functions that are private, and variables that are not necessary to know). The basic Idea is that the user creates a script file, this script file is not loaded until requested (by either the map cfg, map data, or the user themselves). Once this file is loaded the scriptmgr keeps tabs on the "module" (an asIScriptModule, is a set of code loaded into the engine). If a module throws an error or does not exist etc, the module name is saved the data is deleted, so if the module is called again it will simply just return nothing. Rebuilding of the module is posible through rebuildmodule command in the console line, This will work the same as newasent "name", save it will delete the module and reload it. Allowing you to fix your errors and then recompile (without having to recompile all script files).

Script files that wish to be controler objects must be set up as follows (this will change, later).

class CLASSNAME : IController
{
     CLASSNAME(gamenode @obj){}
}

It is worth noting that you should use the gamenode and store it in a variable gamenode @self; But you do not have to, If you dont you will have no link to your object's position or rotation in the world.

All of this will be later back ended so that all IController objects will have a gamenode @self and a constructor (gamenode @obj){@self = obj};

Other side notes, The way this is set up you will need to reference the file name not the class name. The reader will automatically associate that file with the first object that inherits from IController, and that object will be the only one created, every time.

A Short form version of most of the as commands: here

I am gonna forgo the long form explanation video for this post, if you wish to see a video or have any questions comment below.

Bugs:
Editnodes never die. EVEN ON MAP RELOAD, MAP CHANGE Etc. So once a editnode is spawned, it will add its corresponding game node every time you enter edit mode. Quiting the game is the only way to get rid of them.

Edit nodes can not be moved, nor do they have a renderbox.

Ridgidbody::gravity is reset by bullet to the global gravity after the first frame

Syntax error and other bugging errors that aren't runtime exceptions only output "Syntax error" in the console with no information on which file, or what line they occurred in.

Bulletents (which will be removed) do not render if arg5 is 0 (this is the weight of the bullet object), they still show up in PHYSDebug mode.


Next Release:
SceneGraph will be created and used to move editents, remove editents on updates.

Moving to edit mode will pause the map, rather than resetting it (reseting will be an edit bind).

buildLevelColide will not require you to shut down and reboot bullet inorder to work correctly.

SceneGraph will control all edit functionality and extentity will be completely removed

Possibly:
Serialized object data

Saving and loading serialized data from maps

Server-side editing of ctrlrs (assuming both people have the same controllers (controllers will have to be downloaded from the server, and set into a project folder; Project indexing, and file organization will come later.

Setup:

  1. Download

  2. Replace the exe over any copy of tesseract.

  3. Place the .halos on the base root directory (or if you want to organize them put them in a ctrl folder, but note you will have to type ctrl/NAME when creating objects.

  4. Open the exe using the bat file, open a new map

  5. type /newasent NAME

  6. object should spawn like /newent

  7. if there is an error, debug then type /rebuildmodule NAME

  8. Then repeat step 5 until errors are fixed

chasester

Ps: @hyper Thankx for the feedback :)

Ps2: @Q009 I Looked into Banicam, when running the game it ran around 30-40 fps, with drops as low as 20, This was from just simply being in a small scale map with nothing rendered. As you have seen from most my videos i run at 60+ fps using the screencast-o-matic. Also Banicam runs in the background after being closed, slowing down the system as a general whole. I eventually realized this and fixed it, but this is why in some of the uploaded video data is at 20-30 fps. As much as I love the feed back, and agree Banicam has way more feature support and better interface. The simple fact is that it slows down rendering to such a level, makes it unusable. (And i hate background processes, especially when they have no reason to be there). Again thanks for the input I always am open to anything that will make things easier.

Last edited by chasester (2015-11-04 03:54:11)

Offline

#9 2015-11-03 12:21:28

Hypernova^
Member

Re: Rival: Cube/tesseract mod

Nice job. Not only is this cool, but I was laughing the whole time xD Keep it up man :)

Offline

#10 2015-11-03 19:58:18

Lord Kv
Member

Re: Rival: Cube/tesseract mod

Hi, I really like that you're integrating Tesseract with bullet physics and angel script and I'm looking foward to playing around with it!
About the shaders: you probably should keep the cubescript in them. It allows you to write several "modules" inside the same "variant shader" and mix their source easily for many shader variants, sort of like the relatively recent OpenGL shader subroutines but mostly faster. As for PBR, I've been messing around with it just this week. This page along with some UE4 stuff proved most helpful.

Last edited by Lord Kv (2015-11-03 19:59:16)

Offline

#11 2015-11-04 00:09:51

chasester
Member

Re: Rival: Cube/tesseract mod

@pbr
Yes im like super interested in adding pbr but sadly other things are more important atm. But it will get done eventually.

@shaders
Idb the term is handles and angelscript @ works in the same way ... From my understanding. But I hardly know what's going on in there so I'll have to look into it. I want to eventually move to a node based system allowing ppl to visually see the shader creation process allowing for easer use. So that's more the reason I want to redo the shaders.

But back to the whole, there are more pressing things :)
Chasester

Ps: latest exe has gone live, look at the top of this topic for the zip link

Last edited by chasester (2015-11-04 03:58:12)

Offline

#12 2015-11-28 02:32:26

Hypernova^
Member

Re: Rival: Cube/tesseract mod

Hi Chasester,

  Have you thought about the sound department? Tesseract could really use some modern sound features, especially dsp filters for map geometry.
  Also it would be cool to have your latest source, I'd like to start poking around if I could :)

Offline

#13 2015-11-28 05:41:58

chasester
Member

Re: Rival: Cube/tesseract mod

@sound
Sound will be added to the scene with an effect system, a decay, and a position. Sounds will also be able to be attached to objects (for dialog, foot steps, etc). For textures there will be a onwalk sound that you can set (for a quick easy set up) or you can set more custom settings in the callback from physics.

@source
It would be very very hard to build and much of it I cant include due to repackage licensing. The next version will be out soon, with serialized object for map save/loading.

Then I will focus on writing plugins to allow things like lights, cameras, animated models (and a model animation cycle), sounds, etc Also the call back system will be added during the same update allowing for triggers and collision checks. By this version you should be able to make a game solely through script, and there will be much more to have fun with :)

chasester

PS: over 1/2 of this update is down :)

2j9yzl.jpg

m76mu0.jpg

Last edited by chasester (2015-11-28 06:39:30)

Offline

#14 2015-11-28 21:23:36

Hypernova^
Member

Re: Rival: Cube/tesseract mod

Nice, thanks for the update, you're doing really awesome work :) I understand how the source would be hard to distribute, but unfortunately I'm not sure angelscript could be extended to do everything I need. Would it be possible to have a source tutorial similar to the one you posted for bullet in another thread, or would that be too complicated?
Btw perfect name for the engine xD

Last edited by Hypernova^ (2015-11-28 22:03:28)

Offline

#15 2015-11-29 05:41:48

chasester
Member

Re: Rival: Cube/tesseract mod

What I plan on doing for update 4 (2 updates from now):
I plan on taking everything that makes sauer (tesseract: The game elements) and turing them into angel code. SO this means all weapons, projectiles, bullets, player movement player physics (like friction, how and when you can jump etc), cameras, lights, models, rendering elements, sounds, etc.

This code will be distributed with the exe as a large example code base, along with this there will be a wiki docs list of coding functions and varibles. And ofc angelscript has there own list of script examples if you have questions on syntax.

So if you are looking to develop a game in the future on this gaming platform, by update 4 it should be in working order to allow for the pre-planning phases of the game.

The only gaming element that will not be able to be manipulated by update 4 will be AI. Unfortanately this will be added in update 5 in a small way allowing for manipulation of the waypoint system, and then later will be changed to allow for waypionts navigational mesh, and then realtime colision detection with a simple a * algorithem.

Update 4 will be release around the beginning of the year, probably late january at the latest.

As far as usable scripting, for update 2, there really isnt. Pretty much what ive done is what you can do, Technically you could manipulate self.o and self.rot to do more things, but things like adding impulses and moving objects correctly is not currently added.

chasester

Ps: if you have some feature you would like to see in the engine, please let me know I will be doing feature requests (as long as they are not too crazy) for update 5, most of that update will be feature requests from anyone that posts on here, and lordku who is working on ac3.

Offline

#16 2015-11-30 01:48:51

Hypernova^
Member

Re: Rival: Cube/tesseract mod

I have one small feature request: for the engine to run multi-platform. I see the development has been on Windows, but it would greatly expand the user base if this was extended to other OSs. I am on Linux so atm I can't try it out w/o source :)

If we compare what's in progress here to something like Source Engine's features, your feature list looks pretty good:

https://developer.valvesoftware.com/wik … e_Features

ps: I am also planning to implement an external GUI (or do something quick myself), as well as some particle/rendering things (porting some stuff from SauerEnhanced). Would any of this be possible with the AS interface?

Edit: Oh I forgot, Dynamic Occlusion Culling would be niiice :)

Edit2: I have one question: are the ragdolls implemented using the existing algorithms or Bullet's physics?

Last edited by Hypernova^ (2015-12-02 02:53:25)

Offline

#17 2015-12-01 14:13:02

a_teammate
Member

Re: Rival: Cube/tesseract mod

jo chase,
i really like your approach, good to see people working on the engine again :)

since your roadmap seems to overlap a lot with ours, you may find interesting what Hanack did for the 2nd version of his entity system proposal for inexor ( https://github.com/inexor-game/code/wiki/Entity-System i think the code version is here: https://github.com/inexor-game/code/tre … ine/entity but you may better ask him directly in our irc)

Another thing which made it already into master is the tree api (by karo), thats what you described as "rewrite the server api with watchvariables" (however we currently dont use it for the main game server/client connection, thats currently not the very next on our roadmap)
https://github.com/inexor-game/code/wik … r-Tree-API (i think the code can be found in the gluecode module).

you may find that useful :)

personally im really interested in your approach of simplifing the shader system since thats on my roadmap as well (after/in combination with a new texture system which is my current branch and which will depend on it a lot, so lets see). So it would be really nice to maybe share ideas from time to time.

++1 for your work so far.

EDIT: btw where can i download the source of your engine? do you have a repo?

Last edited by a_teammate (2015-12-01 14:35:36)

Offline

#18 2015-12-02 08:20:25

chasester
Member

Re: Rival: Cube/tesseract mod

@entity system
All entity back end will be done through angel script. This really is very different from your version saying that struct entity and extentity are no longer in play, the layout is completely dependent on angelscript (IScriptObject) which is created from the scriptctrl and the IObjectType. This then will interface with world and scenegraph functions that will allow object to register themselves with the world.

This also means that the storage of these objects is very different, Because you are storing short * attrs bytes of data, whereas my entity system store as much data as the user defines per object type. Although your way is much easier and quick, it lacks in fluidness which I really want for Rival, though I appreciate your offer.

@server API
Your server api system sounds very cool and definitely something I will be looking into, though as ive said server/client side code will be saved till 6-8 months from now. I want to have a solid single player implementation before tackling servers, and masterserver options. I will loop at it and probably use parts or the whole of it.

@Shaders
I am working with lord KV (as1,as2,shader wizard) to help him build as3 on the rival engine (using the angelscript interface), and to improve the shader end of the engine. One of the last things I will do before multiplayer is try to get geometry shaders, or something similar into the engine, to help improve speed and performance, and to allow for some better graphical options.

@source
I dont plan on releasing the code, for any number of reasons at this point. If you would like something implemented into the engine I am very interested in helping anyone that wants to use this engine for a game. Later in the development process I may release the code on a per game license, or release an easier to build game. But because there are large scale changes between releases, code that is not mine and i dont know if it will run on all machine, loads of external libraries etc. I dont think it would be very helpful at this point.

If you want help integrating bullet, angelscript, or any other
libraries or features, I can definitely layout an easy way to do it with code examples :)

chasester

Ps: I love your version control feature that looks very useful

Pss: if you guys are still a cube 2 fork does this mean that you plan on staying playable with the current cube 2 build. If so I feel you are gonna run into problems implementing some more useful features1

PPSS: I thought this engine died, Lol mentioned your particle system the other day to someone lol And I love the work you are doing :) ++1

PPSSPPSPSPSPSP: This is the last one :) feel free to email me at chasester123@gmail.com, You seem to have a very good gameplan as far as where you what inxor to grow.

@edit
Looking at your server API structure stuct position::rool is a misspell of roll and you should use a transform matrix this is more efficient and would allow for scale of nodes as well. Also an ifloat interface rather than using a float type because floats using floating decimal points which is harder to keep the accurcy of the packet then an ifloat (an i float is int a = float *1000; this will give you the accurcy and keep you in a good range for the values. If you dont care about extreme accurcy (say player health, or another generalization) use a short or a uchar using the same method at differing magnitude. This will decrease the size of the buffer you are sending to and from the server, increasing performance and decreasing lag.

Also a side note for string and chat message, You can send a 1bye (and 2 byt for chat message) length in front of the string/getmessage, to define the length of the string, so that you can reduce the pull of the string, ex: 0x00001010 "hello my name is chase" so it would pull the uchar len then loop(len)pull a uchar. Then pass that into the string on the client side. This will make the string and messages more efficient (altho in the case of shorter messages it will make it longer, but the trade off is not worth disregarding saying most ppl time long enough sentence/names to make this worth implementing).

Also I HIGHLY SUGGEST IMPLEMENTING XSTRING OR A SIMILAR LIBRARY CUZ CUBESTR IS JUST char [256] which is less efficient (tho super safe).

Lastly I assume you are using typeids (lua i assume has these) to transfer the data from client to server. How are you stacking this data though? say:

struct a
   float abc
   float def

struct b
   a hello;
   float def;

how do you place to send across b or would i have to implicedly tell the server i need to:

b::sendserverdata(){ send(float def); send(a->abc); send(a->def); }

or does the code not handle this?

And i just saw cla I wanted to add this to SauerX but I just got bored and nv did this :) tho green isnt that appealing :) but its all still in alpha so color is irrelevant

2nvruxc.png

Last edited by chasester (2015-12-02 10:13:26)

Offline

#19 2015-12-02 13:42:35

Hypernova^
Member

Re: Rival: Cube/tesseract mod

Hi Chasester,

   I would really like a Tesseract->Bullet tutorial of what you have done so far. I would try it myself but I have so limited time with work and studies :( Also I'm learning C++ and still kinda noob xD

Last edited by Hypernova^ (2015-12-02 16:09:19)

Offline

#20 2015-12-02 18:49:56

Lord Kv
Member

Re: Rival: Cube/tesseract mod

I'm not a shader wizard, I only found out the things existed year and a half ago! I'm an ambitious amateur!

I really don't think that it's a good idea to remove cubescript from shaders. The language is primarily designed to manage options and generate code. Since the majority of Tesseract's shaders are generated by cubescript at startup removing it would only force you to find another solution for generating them.

Offline

#21 2015-12-03 00:19:37

chasester
Member

Re: Rival: Cube/tesseract mod

@hypernova
I will write a tutorial on it in the next few days because i will be writing the AJPHysics.cpp and .h files to help improve efficiency, and better link into angel script. Since you are looking at a hl2 like mod, of tessaract I would suggest looking at inexor Tree API server/client integration listed above. This will come in handy with all the phyics objects you will be throwing around.

C++ isnt that hard really there are some things im still learning (like last week i just learned that friend existed 0.0).

@Lord KV
LOL you are a wizard, i mean the stuff you did on ac2 was very impressive, you you have a natural gift :) i guess. Regardless, cube script will not be removed from the shader language, rather angelscript will replace cubescript (because cube script is just pointer forwarding [and this is also how angel script interfaces with c++ vars and commands] this will be a seemless change from the language view. I will also allow for better structuring of the shaders. Having not looked entirely at that code, I will have to wait to come up with an exact gameplan, but Shaders will be less complicated allowing for a gui to create the code for you, as far as how it is wrapped with cubescript that is still in the air, tho i agree the way it is wrapped is very efficient and I want to keep that level of efficiency going forward, but I would like to make it more industry standard, and more readable to the person that has nv worked with cube script. But honestly this plan will probably change like 10 more times before i actually work on it :) I really really really have very little experience with the backend of the shaders.

AND SERIOUSLY: no one wants to rewrite all the shaders 0.0 frfr
chasester

Last edited by chasester (2015-12-03 00:22:30)

Offline

#22 2015-12-04 01:54:17

Hypernova^
Member

Re: Rival: Cube/tesseract mod

@distributed fs client/server arch
WOW that's a veery interesting idea, never even thought of that before. I'll definitly look into this.

Last edited by Hypernova^ (2015-12-04 14:43:17)

Offline

#23 2015-12-04 14:50:38

Hypernova^
Member

Re: Rival: Cube/tesseract mod

Yo guys I have a question: On startup I get 'sound init failed (SDL_mixer): no such audio device'. My sdl2-mixer packages are installed. I didn't have this problem in previous versions of  Tesseract. Is there anything that I can do to resolve?

Last edited by Hypernova^ (2015-12-04 16:21:51)

Offline

#24 2015-12-05 03:48:35

chasester
Member

Re: Rival: Cube/tesseract mod

Ill look at it,
If you could next time do a search through the code and get the line number the error gets printed on that would be helpful :)

chasester

@edit
check this out
Idk if you were playing with the sound driver code or not but that seems to be what causes that error. Try recompiling, and/or reinstalling, see if that clears the issue.

PS: It seems most the people that report this are on linux, I assume you are. If that doesn't help try looking up "no such device sdl 2 mixer" in google, there seems to be a wide variety of support for this error.

PSS: side note on the sending string buffers through server/client api, You could set up a special char that is added to the last element of a textbox, to tell the client that it needs to pull another string out (like if some one wants to write text that's longer then 256 characters (or whatever), but if you do this this means you cant store it in a string (the current string system, char [256]) I would suggest implementing xstring or a similar library or include that allows for infinite length string.

Last edited by chasester (2015-12-05 04:02:10)

Offline

#25 2015-12-05 16:29:13

Hypernova^
Member

Re: Rival: Cube/tesseract mod

Thanks, I am able to build the latest nightly.
Interesting idea on passing strings :) It'll be a while before I get to networking, but I'll keep it in mind.

Offline

Board footer