Week 10 Blog
View Blog Post
I know I am late for the weekly blog. My apologies for that.
The previous week was my first week post my exams. I had mentioned in the last blog that I will be working on the documentation for panda3d.
So, just as I mentioned, I was able to complete the documentation part in one week. The documentation includes documentation for both python and c++, the languages supported by panda3d for game development. The appropriate code snippets have been included along with the screenshots of the corresponding output.
The challenges were to understand the reStructured text format by Sphinx ans write the code for documentation with proper identation and tags so as to build separate docs for python and c++.
You may find the Pull Request here: #71
This week I am working on the sample code. Some part of work has been done and hopefully it will be completed by the weekend. I will share more about the same in my next blog.
Week 9 Check In!
View Blog Post
Another week passed and here I am with another blog.
The last week, unfortunately, was not productive as I did not contribute much to the panda3d project due to my university exams, which I mentioned in the last week's blog. I had informed my mentors about this academic situation and they were really supportive to let me focus on my exams for one week. Thanks to them, my exams went well and now I am back to working on the project.
After my last blog, I had started working on the documentation and had written some part of python docs in Sphinx's reStructured text format (.rst). I had also got a review on my PR by the mentor. This week I will work on the review, complete the Python Docs and then C++ docs as well. After that, I shall update the sample code as well.
See you all next week which should be much more productive than this one. XD
Thank you and Stay Safe!
Week 8 blog!
View Blog Post
The is week 8 of the Google Summer of Code program. The last week wasn't a lot of work done. I did add some BAM test files, added visualization function to NavMesh class similar to NavMeshBuilder class. So, now draw_nav_mesh_geom() in NavMesh class would work the same way as draw_poly_mesh_geom() in NavMeshBuilder class and can be accessed through even NavMeshNode class.
BAM test files can be found in the Tests folder. A BAM object is created and read over in the test functions to test against the original values. So these were two main things I added in the previous week.
Along with them, I have started working on the documentation. It uses Sphinx's reStructured text (.rst) format. I have got familiar to it's coding / formatting styles.
Also, I have added a new class NavMeshParams in the navigation library. So, the user can add custom vertices and faces to generate the navigation mesh without using the navmeshgen library. Or maybe, the user can get the navigation mesh generated using some other library and then write code to parse it into NavMesh class using NavMeshParams class.
This week I have my academic load in form of end semester university exams. So I would not able to do much for the GSoC project. I have informed my mentors regarding the same. So probably I would not have much to write about next week.
Still, lets see if I can complete some part of the documentation during my exams.
Till then, stay safe :)
Week 7 check-in!
View Blog Post
So we are into Week #7 now. In the last week, we were done with integrating query functions and I had mentioned that next I would be working on BAM serialization.
So yes, BAM serialization took me some time to get the feel of, though finally I was able to implement in successfully with the help of mentors. BAM serialization gives the users and game developers ability to save the generated navmesh in their hard disk and load it from there whenever required. This can be really helpful in games as a lot of time and computational power required to generate navmesh will be saved and hence the games would load faster. So, as for this week, this was the major development done.
Where did I get stuck? Well, BAM serialization was a totally new concept for me and hence I was stuck in the process of understanding it. Once I understood the concept and how the functions implement it, then it was quite easy to code, though there were moments i got stuck while compiling after implementing BAM serialization. Mentors rescued me there. XD
For next week, I have few things on card: Writing Test Files for BAM, sample code and making more user friendly functions so that users do not have to dig deep into objects to use basic API functions. After that, a few more changes as per the PR review.
See you next week :)
Week 6 Blog
View Blog Post
So its the beginning of the sixth week. The first evaluation results are out and fortunately, I made it till here. :D
This week I implemented the query functions present in DetourNavMeshQuery class. There are primarily two query functions: findPath() and findStraightPath(). Both have their own uses. The implementation initially looked to be easy, but got real complex when I started coding. There were many other function calls I had to make in order to implement these two functions, and in process taking care of the variables involved.
Both the functions have their usecases. FindPath() returns the polygons present in the path corridor. Then, its over to us how we connect polygons to complete the path. FindStraightPath() directly returns array of vertices. Here I present an example for each path finding query:
The green line shows the path in both the above images. The first image makes the findPath() query while the second one makes the findStraightPath() query.
Though, on the basis of these two images, you might conclude that findStraightPath() is obviously better among the two, but trust me, you won't always want to use findStraightPath(). You will know when you use it. :P
Apart from this, I spent time in dividing the library into 2 separate libraries: navmeshgen and navigation. The navmeshgen library provides tool to generate the polygon mesh, detail polygon mesh and navmesh. The navigation library provides tool to further process the navmesh and make queries over it. Recast, NavMeshBuilder are included in navmeshgen while Detour, NavMesh, NavMeshNode, NavMeshQuery are included in navigation.
This week I plan to make BAM serialization possible and work on the reviews made by mentor @moguri over my PR at Github.
Will return next week with more exciting stuff. Till then, stay safe!