Apparently since the 7.22 patch the below method doesn't work anymore and a LAN game is now impossible
Yes, it's possible, but not that easy. It requires you to use steam offline mode and dota 2 cheat mode.
This guide is the easiest to use source on this. I'll copy the content now:
Before your friends can connect to you, you will need to find out your ip address and port number. You should do this before any step and it will be at the top because its better to have everything in front of you, instead of getting it half way through this.
Easy way to do this, is to: click on your bottom left windows button key. Type in the search bar for programs: cmd
once that is opened (should be small window that is black with white writing) you want to type in ipconfig and the ip address you want to write down is the: IPV4 Address.
Note that this is the network IP address, not your internet ip address, which you can get by visiting whatismyip.com or a similar site. For Linux check here and for Mac check here.
- Turn your steam client into offline mode.
- right click dota in the library and click on properties
- click on set launch options
- type in: -console then click ok
- open dota and hit the \ key to bring up the console
- type in map dota.bsp
you only put one number in here and the different numbers are the difficulties from 0 being passive and 4 being unfair. Note you can only have 1 type of difficulty bots and not multiple.
( to get your friend to connect at this point, they must follow steps 1 up to 5 first)
So get your friends to open up the console (to have them already opened and prepared to hit enter with what it is they need to type first is so much easier then trying to get them all to type at that once exact moment. This is of course optional.
and have them type in: connect IP address:port number
here is an example: connect 22.214.171.124:27015
then once they are on a screen with the map loaded, get them to type in jointeam good/bad, one of those for what side, good being radient and bad being the dire.
after they have done that or at the same time you can type in jointeam good/bad for whatever you want to play on.
There will be a game timer and you and your friends at this point should be in hero select on the teams you chose. After the countdown is 0 it will auto fill empty slots with bots or if you want to start earlier you can just type in the console: dota_bot_populate and will auto fill after that.